Maik Wegener
18. August 2020

Umsetzung einer CDS-Tabellenfunktion mit AMDP

ABP Unit Test

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.

CDS_TableFunctions_Bild 1

CDS Table Functions

CDS Basics: Erste Schritte in die Core Data Services (CDS)

Whitepaper: CDS Basics

Erfahren Sie in unserem Whitepaper die Grundidee und die ersten Schritte in die Core Data Services (CDS).

Umsetzung

Für eine einfache Demonstration dieses Konzepts wollen wir einige Buchungsdaten aus dem SAP-Flugmodell auslesen.

Hierzu gehen wir wie folgt vor:

  1. Wir erstellen eine CDS-Tabellenfunktion ZJVT_Buchungen.
  2. Wir erstellen eine Klasse zjv_cl_buchung_via_cds mit einer Methode get_buchungen.
  3. Ü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:

CDS_TableFunctions_Bild 2

CDS Table Functions

Dazu erstellen wir zunächst die Tabellenfunktion:

CDS_TableFunctions_Bild 3

Tabellenfunktion erstellen – Teil 1

CDS_TableFunctions_Bild 4

Tabellenfunktion erstellen – Teil 2

Bei der Definition erkennen wir drei wesentliche Teile:

CDS_TableFunctions_Bild 5

Drei wesentliche Teile bei der Definition

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:

CDS_TableFunctions_Bild 6

Implementierung über SQL-Skript

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:

CDS_TableFunctions_Bild 7

CDS_TableFunctions_Bild 8

Die Ausgabe der CDS-Hüllenview ist wie erwartet:

CDS_TableFunctions_Bild 9

Ausgabe der CDS-Hüllenview

Zusammenfassung

Insgesamt lassen sich die Schnittstellen zwischen den verschiedenen Objekten damit wie folgt zusammenfassen:

CDS_TableFunctions_Bild 10

Zusammenfassung Schnittstellen zwischen Objekten

  1. Die Hüllenview nutzt die Tabellenfunktion als Datenquelle mit entsprechender Mandantenbehandlung.
  2. Die CDS-Tabellenfunktion nutzt die AMDP, via Schlüsselwort implement by methodals definierendes Objekt.
  3. 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

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

 Save as PDF


Das könnte Sie auch interessieren

Sie möchten Ihr bestehendes SAP System auf die neue SAP HANA DB migrieren und benötigen weiterführende Informationen zum HANA Readiness Check? Dann sind Sie hier genau richtig. Dieser Blogbeitrag beschreibt […]

weiterlesen

SAP Hana lässt Entwicklern eine Vielzahl an Möglichen Vorgehensweisen zur Lösung ihrer Probleme. In diesem Blogartikel gebe ich Ihnen eine kurze Aussicht darauf, was für Sie wichtig ist zu Unterscheiden […]

weiterlesen

Die Erläuterung eines jeden Akronyms (Abkürzung) beginnt meist mit dessen Aufschlüsselung, um so aus den einzelnen Begriffen die ursprüngliche Bedeutung schlusszufolgern. In diesem Fall jedoch entsteht folgendes Horrendum des IT-Berater Fachjargons.

weiterlesen

Schreiben Sie einen Kommentar

Bitte füllen Sie alle mit * gekennzeichneten Felder aus. Ihre E-Mail Adresse wird nicht veröffentlicht.





Kontaktieren Sie uns!
Alexander Koessner-Maier
Alexander Kössner-Maier Kundenservice