Das AMDP Framework

Das AMDP Framework

Veröffentlicht am 29. Oktober 2020 von

Jörg Brandeis

| AMDP | BW/4HANA | SQLScript |

Das AMDP Framework liefert einen einfachen Weg, mit dem Datenbankprozeduren in SQLScript in ABAP Programmen und BW-Transformationsroutinen genutzt werden können. Ein Auszug aus der 2. Auflage meines Buches „SQLScript für SAP HANA“, erschienen im Rheinwerkverlag, SAP Press.


Hinter dem Begriff ABAP Managed Database Procedures (AMDP) verbirgt sich das von SAP empfohlene Framework für die Verwendung von SQLScript-Code in ABAP-Programmen. Dabei handelt es sich um ein Konzept zum Anlegen, Verwalten und Aufrufen von Datenbankprozeduren und ‐Funktionen. Die Grundidee hinter AMDP ist, dass der Quellcode von SAP HANA-Datenbankobjekten in die Implementierung von Methoden einer ABAP-Klasse verpackt wird. Daraus wird dann bei Bedarf das entsprechende SAP-HANA-Datenbankobjekt generiert.

Es gibt drei unterschiedliche Objekte, die mit dem AMDP Framework erzeugt werden können.

  • AMDP-Prozeduren können wie Methoden einer ABAP-Klasse aufgerufen werden. Sie sind in SQLScript implementiert. Der Verwender der Methode weiß nicht, dass es sich eigentlich um eine Datenbankprozedur handelt.
  • CDS-Tabellenfunktionen sind AMDP-Funktionen, die durch ein Core Data Services (CDS)-Objekt gekapselt sind und sich somit aus ABAP bzw. Open SQL wie ein normaler Datenbankview mit einer SELECT-Abfrage aufrufen lassen.
  • AMDP-Funktionen für AMDP-Methoden lassen sich nicht direkt von ABAP bzw. Open SQL aufrufen. Sie können aber bei der Implementierung anderer AMDP-Objekte im SQLScript-Quellcode verwendet werden.

In der Tabelle finden Sie einen Vergleich der wichtigsten Eigenschaften der drei Objekte.

AMDP-ProzedurCDS-TabellenfunktionAMDP-Funktion
Aufruf aus ABAPwie eine ABAP Methodein einer SELECT-AnweisungNicht möglich
Implementierungin öffentlicher Instanzmethodein öffentlicher, statischer Methode einer statischen Klassein statischer oder einer Instanzmethode
Zweigleisige Entwicklungüber Vererbung realisierbardurch Fallunterscheidung möglichnicht relevant, da nur aus anderen AMDP-Methoden aufrufbar
Art des Datenzugriffslesend und schreibendnur lesendnur lesend
Wo werden die Parameter definiert?bei der Definition der Methodein der Definition des CDS-Objektesbei der Definition der Methode
Art der Parameterbeliebige IMPORTING , EXPORT und CHANGEbeliebige skalare IMPORTING- und genau ein tabellenartiger RETURNING-Parameterbeliebige skalare IMPORTING- und genau ein tabellenartiger RETURNING-Parameter

Vergleich der drei AMDP-Objekte

Hinweis: AMDP Framework

Mit dem Release SAP NetWeaver 7.4 SPS05 wurden ABAP Managed Database Procedures (AMDP) als ein Framework für die Verwaltung und den Aufruf von Datenbankprozeduren in der SAP-HANA-Datenbank eingeführt.

Mit dem Release SAP NetWeaver 7.5 wurde dieses Konzept um AMDP-Funktionen erweitert. Obwohl es sich dabei technisch nicht um Prozeduren handelt, sondern um Funktionen, wird auch hierfür der Name AMDP verwendet.

Als AMDP-Klassen werden Klassen bezeichnet, die das Interface IF_AMDP_MARKER_HDB implementieren und die mindestens eine AMDP-Methode enthalten.

AMDP-Methoden können entweder AMDP-Prozeduren oder AMDP-Funktionen sein. Die AMDP-Funktionen implementieren entweder eine CDS-Tabellenfunktion, oder sie stehen intern für andere AMDP-Methoden zur Verfügung.

Tools

Mit den Mitteln des AMDP Framework stehen ABAP-Entwicklern umfangreiche Möglichkeiten für die Implementierung nach dem Code-To-Data Paradigma zur Verfügung. Ein direkter Zugang zur SAP-HANA-Datenbank ist nicht unbedingt notwendig, da sich alle Entwicklungsobjekte über die ABAP Development Tools (ADT) in der Eclipse-Entwicklungsumgebung implementieren lassen. Auch die Nutzung eines Debuggers für den SQLScript-Code in den AMDP-Methoden ist möglich. Dieser AMDP-Debugger wird in Abschnitt 11.2.3 im Detail beschrieben.

Falls SAP-HANA-Datenmodelle wie z. B. Calculation Views modelliert oder auch Prozeduren und Funktionen außerhalb des AMDP Frameworks entwickelt werden, so ist ein direkter Datenbankzugang mit entsprechenden Berechtigungen notwendig. Dazu müssen dann auch die Eclipse-Plug-Ins von SAP HANA Studio installiert werden.

Vorteile von AMDP

Wann ist der Einsatz von SQLScript in ABAP-Programmen sinnvoll? Diese Frage kann man nicht pauschal beantworten. Grundsätzlich ist die Verwendung des AMDP Frameworks vor allem dann sinnvoll, wenn man dadurch signifikante Performanceverbesserungen erreichen kann. Das ist insbesondere in folgenden Situationen der Fall:

  • wenn dadurch der Transport von größeren Datenmengen zwischen Datenbank und Applikationsserver vermieden wird
  • wenn die SQLScript-Prozedur deklarativ programmiert ist und sie sich deshalb gut von der SAP-HANA-Datenbank parallelisieren und optimieren lässt
  • wenn in SAP BW die Transformationen mit Routinen direkt auf der SAP-HANA-Datenbank ausgeführt werden sollen. Dadurch werden die Datentransferprozesse (DTPs) erheblich beschleunigt, unabhängig davon, ob der bisherige ABAP-Code mit Datenbankzugriffen gearbeitet hat oder nicht.

Nachteile

Durch die Verwendung von AMDPs handelt man sich aber auch ein paar Nachteile ein. Es gilt immer abzuwägen, ob man diese für die zu erwartenden Performanceverbesserungen in Kauf nehmen will. Unter anderem sprechen die folgenden Gründe gegen den Einsatz von AMDPs:

  • Der Anwendungsentwickler muss mehrere Programmiersprachen beherrschen. Manchmal ist eine gut implementierte ABAP-Methode besser als ein schlecht implementierte AMDP.
  • Die SAP-GUI ist nicht für die Entwicklung von AMDPs geeignet.
  • Die Anwendungslogik ist auf Datenbank- und Applikationsserver verteilt.
  • Nicht in allen Fällen ergibt sich eine Performanceverbesserung.
  • Die Entwicklungen lassen sich nicht auf anderen Datenbanksystemen nutzen. Ein geeignetes Vorgehen zur parallelen Entwicklung, mit der Sie trotzdem die Vorteile von SAP HANA mit AMDPs zu nutzen können, lernen Sie in Abschnitt 1.1.4 kennen.

Alternativen

Grundsätzlich sollten Sie vor dem Einsatz des AMDP Frameworks die Alternativen prüfen. Dazu gehören z. B. auch die CDS-Views und die erweiterten Möglichkeiten von Open SQL der letzten SAP NetWeaver Releases. Laut SAP Dokumentation sollen AMDPs nur genutzt werden, wenn datenbankspezifische Funktionen wie z. B. die SQL-Funktion zur Währungsumrechnung genutzt werden sollen, die in Open SQL nicht verfügbar sind oder wenn der Transport von größeren Datenmengen zwischen Datenbankserver und Applikationsserver damit vermieden wird.