Umsetzung einer CDS-Tabellenfunktion mit AMDP
Möchten Sie beispielsweise ein Reporting aus dem Datenbestand in S/4HANA erstellen, können Sie die benötigten Kennzahlen nicht einfach über klassisches SQL abbilden. Hier kann Sie die Umsetzung von CDS-Tabellenfunktionen mittels AMDP weiterbringen. Wie das funktioniert, zeige ich Ihnen in diesem Blogartikel.
Angenommen, Sie haben die Aufgabe, ein Reporting aus dem Datenbestand in S/4HANA zu erstellen. Die hierfür benötigten Kennzahlen lassen sich nicht mehr ohne weiteres über klassisches SQL abbilden, sondern benötigen spezielle Funktionsbibliotheken der Predictive Analytics oder spezielle Fuzzy-Suchtechniken, die nur HANA-nativ zur Verfügung stehen. Bei der alleinigen Abbildung dieser Anforderungen über ABAP Managed Database Procedures (AMDPs) verlieren Sie nützliche Sprachelemente des ABAP Core Data Services (ABAP CDS) wie Assoziationen oder Semantiken der Annotationen, die in verschiedenen ABAP-Frameworks interpretiert werden.
CDS-Tabellenfunktionen bilden ein Bindeglied zwischen beiden Technologien und können damit beide Vorteile verbinden. Aber wie genau funktioniert das?
Konzeptioneller Aufbau
Zentrales Element ist die CDS-Tabellenfunktion, die Sie über eine AMDP definieren. Eine CDS-View (CDS-Hüllenview, siehe Schaubild) nutzt die Tabellenfunktion als Datenquelle und stellt somit die Schnittstelle für den Anwender bereit. In Unterscheidung zu den CDS-Tabellenfunktionen können Sie somit wieder Assoziationen benutzen. Innerhalb der HANA-Datenbank legen Sie eine HANA-native Funktion an, die die Funktionalität letztendlich realisiert. Eine Ausführung erfolgt dadurch vollständig innerhalb der Datenbankschicht. Das verbessert die Performance in den meisten Fällen bereits wesentlich.
Umsetzung
Für eine einfache Demonstration dieses Konzepts wollen wir einige Buchungsdaten aus dem SAP-Flugmodell auslesen.
Hierzu gehen wir wie folgt vor:
- Wir erstellen eine CDS-Tabellenfunktion ZJVT_Buchungen.
- Wir erstellen eine Klasse zjv_cl_buchung_via_cds mit einer Methode get_buchungen.
- Über die CDS-Hüllenfunktion ZJVI_BuchungenViaCDS lesen wir schließlich die erforderlichen Daten aus.
Genauer möchten wir die Schlüsselfelder aus Tabelle s_book, sowie das Gewicht mit Einheit auslesen:
Dazu erstellen wir zunächst die Tabellenfunktion:
Bei der Definition erkennen wir drei wesentliche Teile:
Die Behandlung des Mandanten (1) über die Funktionsschnittstelle wird über die Annotation systemField der Domäne Environment bekannt gegeben. Die Rückgabe erfolgt über den Befehl returns (2). Die einzelnen Attribute werden über das ABAP Dictionary typisiert. Schließlich erfolgt die Definition (3) über die AMDP get_buchungen, der Klasse zjv_cl_buchungen_via_cds, die wir im Folgenden erstellen.
In diesem halbtägigen Online-Learning erhalten ABAP-Entwicklerinnen und -Entwickler eine Einführung in die Grundlagen von ABAP Core Data Services (CDS). Sie bekommen alle grundlegenden Informationen rund um das neue S/4HANA-Programmiermodell vermittelt und werden befähigt, selbst CDS Views zu erstellen.
Diese Klasse nutzt die die Tabellenfunktion ZJVT_Buchungen für die Definition der Signatur. Die Implementierung erfolgt wie gewohnt über SQL-Script:
Wir aktivieren beide Konstrukte und können nun die CDS-Hüllenview aufbauen. Hierzu nutzen wir die Tabellenfunktion als Datenquelle und geben den Mandanten über die aktuelle Nutzersitzung hinzu:
Die Ausgabe der CDS-Hüllenview ist wie erwartet:
Zusammenfassung
Insgesamt lassen sich die Schnittstellen zwischen den verschiedenen Objekten damit wie folgt zusammenfassen:
- Die Hüllenview nutzt die Tabellenfunktion als Datenquelle mit entsprechender Mandantenbehandlung.
- Die CDS-Tabellenfunktion nutzt die AMDP, via Schlüsselwort implement by method, als definierendes Objekt.
- Die AMDP nutzt die Signatur der Tabellenfunktion über FOR TABLE FUNCTION.
Dieses Beispiel ist natürlich nur die Spitze des Eisbergs. Es können komplette ABAP Programme 1:1 in eine Tabellenfunktion ausgelagert werden, um die Performance um ein Vielfaches zu steigern. Wenn Sie mehr hierzu erfahren wollen, stehe ich Ihnen gerne für Fragen zur Verfügung.
Brauchen Sie Unterstützung bei Ihren ABAP-CDS-Projekten? Dann können Ihnen unsere ABAP CDS Experten weiterhelfen:
ABAP CDS Entwickler
Spätestens mit der S/4HANA-Migration kommen Unternehmen um ABAP Core Data Services (ABAP CDS) als neues Programmiermodell nicht herum. Da SAP S/4HANA auf CDS in Form des virtuellen Datenmodells basiert, müssen Ihre ABAP-Entwicklerinnen und -Entwickler in der Lage sein, CDS sinnvoll anzuwenden u ...