Zelf CDS views maken en ontsluiten via OData-service!

Bij SUPERP doen we ons best om kennisontwikkeling te faciliteren. Dit doen we onder andere door trainingen, cursussen en workshops aan te bieden maar ook door bijvoorbeeld een omgeving beschikbaar te stellen waarop onze collega's zelf aan de slag kunnen. Zo hebben we on-premise een S/4HANA omgeving draaien.

 

Frank Witte, test consultant bij SUPERP ging aan de slag met CDS-views en OData-services. Het eerste doel was om een view te maken op een tabel en deze te voorzien van de kenmerken om er een OData-service van te maken in Gateway. Dit alles met het idee van “we halen data uit een tabel die we kunnen valideren.” We delen onze kennis graag, dus bij deze een korte samenvatting van hoe Frank dit deed.

 

Wat heb je nodig?

  • Een S/4HANA SAP omgeving
  • Een recente Eclipse IDE met ABAP Development tooling

 

Zo’n S/4HANA omgeving heb je natuurlijk niet zomaar.. Zo’n ding is duur en op klantsystemen mag je natuurlijk niet komen voor zulke experimenten. Gelukkig heb ik een hele toffe werkgever die een S/4HANA Demo-omgeving on-premise heeft draaien. Hierdoor kan ik ieder moment aan de slag met nieuwe technieken of concepten die te binnen schieten!

Oh ja, voor je begint is het handig als je conceptueel weet wat CDS views zijn en hoe deze in elkaar zitten. Omdat ik vooral het mechanisme van “CDS view ontsluiten via OData Service” wil laten zien, ga ik nu bewust afwijken van de architectuur zoals SAP die voorschrijft waarbij je eigenlijk basis, interfacing- en consumption-views op elkaar stapelt.

 

Stap 1: Een nieuwe ABAP package maken

Eerst moet je verbinding maken met de omgeving waarbinnen je de CDS-view wil aanmaken. Binnen SUPERP staat deze dus gewoon tot onze beschikking. Enfin, een nieuwe ABAP package dus; System Package > Rechtermuisknop > New > ABAP Package.

 

abap package toevoegen
 
 
Vervolgens kun je het pakket een naam geven. Hierna moet je een paar schermpjes door die te maken hebben met de locatie van het pakket, in welk transport je dit onder zou willen brengen en eventueel andere zaken die omgevingsspecifiek zijn. Ik heb ze allemaal doorgeklikt.
 
 
nieuw abap package
 

Stap 2: Een nieuwe CDS maken

Nadat je ABAP package gemaakt is kun je een CDS view aanmaken. Dit doe je door op het pakket op de "rechtermuisknop" te klikken en via "new" een “other repository object” te selecteren:
 
 
other abap repository
 
 
Wanneer je dit scherm voor je krijgt kies je voor "Data Definition":

 
abap repository object
 
 

Kies hier voor "Data Definition".

Vervolgens geef je de definition een naam. Omdat ik hier de verkooporder-kop gegevenstabel wil benaderen (VBAK) heb ik de view zo genoemd. In de schermen hierna kun je de nieuwe Data Definitie onderbrengen in een transport. De overige schermen kun je doorklikken.

 

VBAK

 

Wanneer je de Data Definitie hebt aangemaakt, kun je de CDS view op gaan bouwen. Er opent zich een lege template die behoorlijk voor zich spreekt. Vul bijvoorbeeld bij "sql_view_name" in hoe je wil dat deze view binnen bijvoorbeeld SE16 oproepbaar is. Waar "data_source_name" staat, vul je de tabel in die je wilt ontsluiten.

 

sql view name

 

In regel 6 definiëren we deze eenvoudige query als een "select *" van de tabel "VBAK". Binnen de klasse, regel 7, kun je middels Eclipse de IntelliSense zijn werk laten doen (CTRL + Spatiebalk). De sleutelvelden worden automatisch overgenomen. Je kunt in de view sleutelvelden toekennen door er "key" voor te zetten. Deze velden moeten uiteraard wel je view beginnen. Binnen onze omgeving heb ik geen noodzaak om op basis van autorisaties de toegang tot deze view te beperken. Daarom "@AccessControl.authorizationCheck, #NOT_REQUIRED". Daarnaast wil ik deze view via een ODATA-service ontsluiten. Daarvoor "@OData.publish: true". Wanneer je nu op CTRL + F3 klikt (of de knop ‘activate’) dan zal de CDS view naar S/4HANA geschreven worden.

 

ingevulde Z VBAK

 

Nu is de view ook beschikbaar in SE16:

 

SE16 Z TA VBAK

 

Stap 3: De CDS view ontsluiten als OData service

Via transactie "/IWFND/MAINT_SERVICE" kun je services aanleggen. Je kunt ze ook aanleggen op basis van CDS-views die de "@OData.publish" op "true" hebben staan. Wanneer je binnen deze transactie op "service toevoegen" klikt kun je de CDS view die je hebt aangemaakt, benaderen. De volgende schermpjes over locatie van het object kun je doorklikken:

 

z vbak cds

 

Je zult vervolgens een melding tegenkomen die zegt dat de service in de lucht is:

 

z vbak cds gecreeerd

 

In het service-overzicht zie je de OData service nu staan. Ook kun je hier makkelijk via de Gateway of via een browser-url (en bijvoorbeeld SOAPUI of Postman) de CDS benaderen:

 

cds view gateway client

 

Zo, dat was ‘m dan: Een eerste How-to! Een volgende post zal gaan over het gebruik van structuren van het BOPF (business object process framework) en bestaande CDS-views die SAP-standaard zijn om zo processen service-based te testen. Stay tuned!

 

Nu eerst een tof bedrijfsuitje! ;)

Top