24. May 2022 By András Magyar
Core Data Services - folytatás...
A blog első részében elhangzott fogalmak egy részét most a gyakorlatban lépésről-lépésre bemutatom.
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.
- Ezen a linken megtalálható: https://www.eclipse.org/downloads/packages/
2. Az Eclipse Plugin for ABAP development letöltése és telepítése.
- A Eclipse megnyitása után válasszuk a Help/Install New Software menüpontot.
3. Az Eclipse csatlakoztatása az SAP Backend rendszerhez.
- Ahhoz, hogy Eclipse-ből csatlakozhassunk az SAP-hoz, először egy új ABAP projektet kell létrehoznunk. A File/New/ABAP Project menüopción keresztül megadhatjuk manuálisan az SAP rendszerkapcsolat tulajdonságait az új ABAP projektben való használatra. A varázsló ezután lehetővé teszi, hogy felhasználói fiókkal jelentkezzünk be az SAP rendszerbe.
CDS View létrehozása Eclipse-ben
Ú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.
Associatons használata
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:
Case Statements
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.
Az Doc. type oszlopban a megadott szövegek jelennek meg, ami által érthetőbbé tettük a kimenetet.
Cast Operation
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:
Numeric Functions
Ez a fejezet alapvető áttekintést nyújt a numerikus szintaxisokról és a numerikus függvényekhez elfogadott adattípusokról.
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:
String Functions
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.
Annotációk (Annotations)
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ó.