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.


Stap 2: Een nieuwe CDS maken


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.
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.
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.
Nu is de view ook beschikbaar in SE16:
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:
Je zult vervolgens een melding tegenkomen die zegt dat de service in de lucht is:
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:
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! ;)