Maik Wegener
 - 18. August 2020

Umsetzung einer CDS-Tabellenfunktion mit AMDP

Programming Work Time. Programmer Typing New Lines of HTML Code. Laptop and Hand Closeup. Working Time. Web Design Business Concept.

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.

In diesem Webinar zeigt Ihnen SAP Consultant Michael Olschowski die Unterschiede zwischen AMDP und CDS.

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.

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.



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 was zu einem erfolgreichen HANA Readiness Check dazu gehört und […]

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

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.





Angebot anfordern
Preisliste herunterladen
Expert Session
Support