Blog

Core Data Services II.

Core Data Services II.

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.

  • Az 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.

Associations 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.

A 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:

FUNKCIÓÉRVÉNYES TÍPUSKIMENET
ABS( arg )INT1, INT2, INT4, INT8, DEC, CURR, QUAN, FLTPAz argumentum abszolút értékét adja vissza.
CEIL( arg )INT1, INT2, INT4, INT8, DEC, CURR, QUAN, FLTPAz 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 placesHagyományos osztás.
DIVISION( arg1, arg2, dec )Az arg1 osztása arg2-vel az eredményt tizedesjegyekre kerekítjükHagyomá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, QUANA 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, INT8Megadja 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éterAz 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.

InstrMegkeresi a megfelelő karakterlánc pozícióját a megfelelő mezőben.
LeftA karakterlánc bal oldali részét adja vissza.
LowerMindent kisbetűre konvertál.
UpperMinden karaktert nagybetűre konvertál.
Ltrim & RtrimElső 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.
SubstringMegkeres egy karakterláncot – a második paraméter a kezdő pozíció, a harmadik a karakterek száma.
Lpad & RpadElső paraméter a mező, a második kitöltés hossza, a harmadik kitöltendő karakterlánc.
LengthMegadja 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ó.




Magyar András

Magyar András

IT tanácsadó