Wie lassen sich komplexe Logiken mit ABAP Managed Database Procedures umsetzen?

Autor: Nicolas Martinez | Veröffentlicht: 28.01.2020

Den meisten BW Beratern ist AMDP (ABAP Managed Database Procedures) vermutlich erstmals begegnet, als SAP die Möglichkeit einführte Transformationslogik durch eine AMDP zu ersetzen. Dadurch konnten Transformationen mit einer gewissen Logik, nämlich als SQL Script, geschrieben werden und trotzdem HANA fähig sein. Seit BW 7.50 SP04 ist es auch möglich Start-, End- und Feldroutinen als AMDP zu implementieren.

Allgeier Analytics Blog - Aufruf von AMDP aus ABAP Routine
Doch was, wenn eine komplexe Logik nicht vollständig als AMDP umgesetzt werden kann?

Dann sollte man zunächst überlegen, ob die Verarbeitung nicht in zwei getrennten Transformationen realisiert werden kann. Hier würde man idealerweise zunächst möglichst viel über AMDP umsetzen und die Reste dann in einer zweiten Transformation mit ABAP lösen.

Aber was, wenn schon eine sehr komplexe ABAP Logik existiert, die sich nicht komplett ersetzen lässt?

Was viele BW Berater vielleicht nicht wissen: Eine AMDP muss nicht immer die komplette ABAP Routine ersetzen, es ist auch möglich sie aus ABAP heraus aufzurufen. Dann ist die Transformation zwar nicht mehr HANA fähig, kann also nicht komplett in der HANA ausgeführt werden, aber sie ist möglicherweise trotzdem schneller als wenn die komplette Logik ausschließlich in ABAP umgesetzt worden wäre.

Dieses Vorgehen bietet sich zum Beispiel an, wenn innerhalb einer ABAP Routine komplexe Selects mit vielen Joins durchgeführt werden sollen. Diese könnten dann in eine AMDP Methode ausgelagert werden.

Beispiel

Nachfolgend ein einfaches Beispiel, welches zeigt wie eine AMDP Methode aus einer klassischen ABAP Startroutine heraus aufgerufen wird. Die AMDP Methode muss in einer Klasse mit dem Interface „if_amdp_marker_hdb“ implementiert werden.

Definition der AMDP Methode „get_doc_number_top_x_amdp“ in der Klasse „ZCL_AES_SD_AMDP“:
https://www.allgeier-es.com/de/analytics-blog/aufruf-von-amdp-aus-abap-routine/

Außerdem muss die AMDP Methode in ihrer Implementierung den Zusatz „BY DATABASE PROCEDURE FOR HDB LANGUAGE SQLSCRIPT OPTIONS READ-ONLY” erhalten.

Implementierung der AMDP Methode:
Allgeier Analytics Blog - Aufruf von AMDP aus ABAP Routine
Aufruf der AMDP Methode aus einer ABAP Startroutine:
Allgeier Analytics Blog - Aufruf von AMDP aus ABAP Routine

Ein weiterer Vorteil dieses Vorgehens ist, dass so nach und nach einzelne Teile der ABAP Routine in AMDP überführt werden können.

Vielleicht schafft man es so etappenweise doch die gesamte Logik als AMDP zu realisieren. Dies sollte aufgrund der möglichen Geschwindigkeitsvorteile durch eine komplette Verarbeitung in der HANA das Ziel bleiben.

Zurück zum Analytics-Blog
Ansprechpartner SAP Analytics Blog Sascha Hanf

Haben Sie Fragen?

Sascha Hanf ist Ihr Ansprechpartner für den Analytics Blog.

Jetzt Kontakt aufnehmen
Ansprechpartner SAP Analytics Blog Sascha Hanf

Haben Sie Fragen?

Sascha Hanf ist Ihr Ansprechpartner für den Analytics Blog.

Jetzt Kontakt aufnehmen