Magyar András
IT tanácsadó
A blog első részében elhangzott fogalmak egy részét most a gyakorlatban lépésről-lépésre bemutatom.
Ha nem olvastad volna még a Core Data Services első részét, akkor itt megtekinteted. CDS View létrehozása vagy módosítása nem lehetséges a hagyományos ABAP Workbench-en keresztül. Szóval először is telepíteni kell a Hana Studio-t vagy az Eclipset. Ennek a lépései:
1. “Eclipse for JAVA developers” letöltése és telepítése.
2. Az Eclipse Plugin for ABAP development letöltése és telepítése.
3. Az Eclipse csatlakoztatása az SAP Backend rendszerhez.
Új CDS View létrehozásához válaszd a File/New/Other menüpontot, majd a „Data Definition” opciót:
Töltsük ki a következő mezőket:
A CDS View fontos szerepet játszik az S/4 HANA projektekben. A fejlesztőknek ABAP CDS View-t kell létrehozniuk különböző célokra, például report készítéshez, SAP Fiori Smart Template-ekhez, OData Service-ekhez. Az Eclipse adatdefiníciós sablonokat biztosít az ABAP CDS View fejlesztésére fordított idő csökkentésére.
Ebben a példában a Define View template-et fogjuk használni.
Ezután kitöltjük az SQL View Name annotációt, megadjuk a tábla nevét, felvesszük a kulcs mezőket és megadjuk az Alias neveket:
Mentés, aktiválás után futtatjuk (F8).
A CDS View-t bővítjük pár mezővel:
Ezután létrehoztam még egy CDS Viewt ZI_AccDocSegment néven a BSEG táblához.
Mikor használunk associations-t? Ha egy felhasználói felületen egyik entitásról a másikra szeretnénk navigálni. A következő példában a header táblából a detail item táblába megyünk.
Adjunk hozzá egy Association-t a ZI_AccDocHeader View-hoz. A kardinalitás “egy a többhöz” -> [0..*]. Az accounting document header View-t egy accounting document segment view-val kötjük össze és definiáljuk hozzá a Join-t.
Majd hozzáadjuk az adatokat a komponenshez. Szintén hozzáadunk egy Annotation-t, hogy definiáljuk az Association type-ot. A Header View esetében ez a #TO_COMPOSITION_CHILD lesz.
Következő lépésként létrehozzuk az Association-t az Acc. Doc. segment-ből Acc. Doc. headerbe. A kardinalitás ez esetben “egy az egyhez” -> [1..1]. Az Association type ez esetben így alakul: #TO_COMPOSITION_PARENT, #TO_COMPOSITION_ROOT – (A header szintén egy root View)
Ezután futtatjuk és navigálhatunk az item adatba:
A következő példában “CASE” utasítást fogunk használni, ami a “View” kimeneteként különböző értékek visszaadására használható. Ezek az utasítások akár egymásba is ágyazhatók.
A korábban létrehozott Accounting Doc. View-ban kommentezzük ki a “blart” mezőt és helyette adjuk meg az értéket, amit helyettesíteni szeretnénk. A struktúrát “end as” + mező típus kifejezéssel zárjuk.
Mentés, aktiválás után futtatjuk és hasonlítsuk össze a módosítás előtti és utáni eredményt.
A Doc. type oszlopban a megadott szövegek jelennek meg, ami által érthetőbbé tettük a kimenetet.
A “CAST” művelettel létrehozhatunk egy kalkulált mezőt vagy konvertálhatunk egy már létező mezőt különböző típusokra adatbázis szinten.
Ebben a példában az áfa összegét számoljuk ki a TaxAmount oszlopba.
A CAST kulcsszó után megadjuk zárójelben a mezőt, amit cast-olni szereténk a típust, amibe castol-juk illetve ezt megszorozzuk az áfa összegével.
Aktiváljuk és futtatjuk:
FUNKCIÓ | ÉRVÉNYES TÍPUS | KIMENET |
ABS( arg ) | INT1, INT2, INT4, INT8, DEC, CURR, QUAN, FLTP | Az argumentum abszolút értékét adja vissza. |
CEIL( arg ) | INT1, INT2, INT4, INT8, DEC, CURR, QUAN, FLTP | Az aktuális érték következő egész értékét adja meg, ha van tizedes része. |
DIV( arg1, arg2 ) | INT1, INT2, INT4, INT8, DEC, CURR, QUAN without decimal places | Hagyományos osztás. |
DIVISION( arg1, arg2, dec ) | Az arg1 osztása arg2-vel az eredményt tizedesjegyekre kerekítjük | Hagyományos osztás, de a tizedesjegyek megadásának további funkciója. Az eredményt tizedesjegyekre kerekítjük. |
FLOOR( arg ) | INT1, INT2, INT4, INT8, DEC, CURR, QUAN | A művelet eltávolítja a decimális részt, és az értéknek csak egész részét adja meg. |
MOD( arg1, arg2 ) | INT1, INT2, INT4, INT8 | Megadja az arg1 arg2-vel való osztásának pozitív vagy negatív egész maradékát. |
ROUND( arg, pos ) | arg: INT1, INT2, INT4, INT8, DEC, CURR, QUAN pos: Literal, adatforrás mezője vagy INT1, INT2, INT4 típusú bemeneti paraméter | Az argumentum kerekített értéke. |
A VBAK táblát felhasználva próbáljunk ki néhány numerikus függvényt egy View-ban:
Az alábbi táblázat bemutatja a lehetséges SQL-függvényeket a karakterláncokhoz a CDS View-ban, valamint az argumentumokra vonatkozó követelményeket.
FUNKCIÓ | LEÍRÁS |
Concatenate | Összefűz 2 karakterláncot. |
Concatenate with space | A harmadik parameter a space-ek számát jelenti kettő string között. |
Instr | Megkeresi a megfelelő karakterlánc pozícióját a megfelelő mezőben. |
Left | A karakterlánc bal oldali részét adja vissza. |
Lower | Mindent kisbetűre konvertál. |
Upper | Minden karaktert nagybetűre konvertál. |
Ltrim & Rtrim | Első paraméter a mező, második az eltávlítandó string vagy karakter. |
Replace | A második paraméter megkeresi a harmadikra cserélendő karakterláncot. |
Substring | Megkeres egy karakterláncot – a második paraméter a kezdő pozíció, a harmadik a karakterek száma. |
Lpad & Rpad | Első paraméter a mező, a második kitöltés hossza, a harmadik kitöltendő karakterlánc. |
Length | Megadja a karakterlánc hosszát. |
Ebben a példában kipróbáljuk, a String funkciók használatát.
A CDS-annotációk a CDS-adatmodellek egyszerű SQL-logikáját további metaadatokkal gazdagítják, amelyeket az ABAP futási környezet és a CDS-modellek többi fogyasztója értelmez.
Az annotációk a CDS modell egyik alapfogalma. Annak ellenére, hogy az annotációk a CDS szintaxisának szerves részét képezik, konkrét megvalósításaik annotációdefiníciós objektumokként vannak modellezve. Az annotáció definíciók műszaki objektumtípusa: DDLA.
Nézzünk egy példát OData létrehozására Annotáció segítségével:
Hozzáadjuk az @OData.publish: true annotációt a View-hoz és a rendszer létrehozza a Service-t. Aktiváljuk. Ezután a Service-t is még aktiválni kell.
Hívjuk meg a következő tranzakciót: /iwfnd/maint_service
Majd keressük meg a Service-t és aktiváljuk.
Kattintsunk a Technikai Server névre:
Majd a következő ablak alsó sarkában a zöld pipára.
Mint láthatjuk a service sikeresen létrejött. Ezután lépjünk vissza a Service Cataloghoz és keressük meg az épp létrehozott Service-t. Kattintsunk a SAP Gateway Client gombra, hogy lássuk a meta adatot.
Válasszuk ki az “Add Uri” opciót és majd a pop up-ban a $metadata bejegyzést. Ezután futtatjuk (F8).
Ilyen egyszerűen készíthetünk Odata Service-t egy annotation segítségével, ami akár Fiori alkalmazások adatforrásaként is felhasználható.
Magyar András
IT tanácsadó