blog header

adesso Blog

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.

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

Picture András Magyar

Author András Magyar

Senior SAP Tanácsadó és Fejlesztő

Save this page. Remove this page.