Vom Lernen und Anwenden: SAP HANA Code Pushdown in SAP NetWeaver BW 7.4 SP11

Ich hatte die letzten Tage das Vergnügen ein wenig in die SAP HANA Modellierung einzusteigen und hatte einige „Aaaaha“- und „Waaah“-Effekte. Zu zunächst auf Anfang. Es gibt generell zwei Ansätze bei dem Einsatz einer SAP Lösung auf SAP HANA: direktes Reporting, also Virtualisierung der Daten, welche evtl. Ableitungen enthalten oder das Einbinden der SAP HANA unterstützend in die Programmierung. Letzteres geschieht auf dem SAP BW meist in Transformationen und wird hier beschrieben.

Einsatz von AMDP in SAP BW 7.4 SP11 Transformationen

Zunächst einmal ging es um das einfach Einsetzen von AMDP, um einen möglichst geringen Durchsatz der Daten auf den Applikationsserver zu haben (Datenpaketgröße) und zu mindestens die Logiken in der SAP HANA zu halten. Die Einbindung der AMDP in die Transformationen erfolgte problemlos (wie im HowTo beschrieben)

call method zcl_amdp=>z_method
changing
ct_data = RESULT_PACKAGE.

Das Ganz innerhalb der AMDP Methode noch schön mit einem SAP HANA Calculation View verknüpft und fertig war die Sache.

ct_data = select <Felder des RESULT_PACKAGES als Kombination aus dta und lp>
from $ct_data as dta
left outer join <CalulcationView> as lp
on dta.<key_field> = lp.<key_field>;

Die Eleganz bestand unter anderem in der Nutzung des Deltas seitens BW und die Übergabe des WHERE-Statements aus dem RESULT_PACKAGE heraus. Nicht sonderlich schön war die Typdefinition der Tabelle im AMDP jedes Mal anhand des RESULT_PACKAGES. So hatte man bei einer breiten Struktur allerhand Felder zu übernehmen – sowohl in der Typdefinition, als auch im SELECT-Statement.

Ein stetiges Vorgehen war dabei immer Abbilden über SAP HANA Calculation View was möglich ist. Ansonsten SQL in der AMDP-Methode nutzen und selbst wenn das nicht geht, dann doch ABAP in der Transformation nutzen. Und im Laufe der Zeit musste ich feststellen, dass ziemlich viel über SAP HANA Calculation Views möglich ist – welche aus meiner Sicht performanter, wartbarer und skalierbarer sind. Ein Vergleich zwischen einem SQL-Statement (linke Seite) und einer 1:1-Umsetzung als SAP HANA Calculation View (rechte Seite) folgt aus der Vogelperspektive

eqmer002_vgl_img

Einsatz der SAP HANA Expertenroutine in SAP BW 7.4 als Transformationen

Was man unter „wurde niemals erwähnt, nur hinzugefügt“ verbuchen kann, sind SAP HANA Expertenroutinen. Dies sind generierte Expertenroutinen, welche im Kern einer generierten AMDP-Methode namens PROCEDURE stattfinden. Vorteil unter anderem, die Typdefinition wird über inTab und outTab (als SOURCE_PACKAGE und RESULT_PACKAGE) mit generiert und muss nicht per Hand definiert werden. Die Umwandlung erfolgt ähnlich wie eine Expertenroutine nur über das Menü und ein weiterer, wesentlicher Unterschied zum Einsatz eines AMDP in einer Transformation. Die SAP HANA Expertenroutine wird tatsächlich komplett in der SAP HANA ausgeführt. Kein Stückchen Daten wird auf den Applikationsserver übertragen. Lediglich kleinere „Kinderkrankheiten“ muss man aktuell noch hinnehmen, wie z.B. die Neugenerierung der Struktur über das Löschen und Anlegen der SAP HANA Exptertenroutine. Auch hier hilft ein HowTo für den Start und Umgang.

Ergebnis

Generell sind die AMDP prima für den Einsatz bei anwendungsorientierter Entwicklung. Für den Einsatz innerhalb des BW findet man wieder einen objektorientierten Ansatz, welcher so in der Form gar nicht notwendig ist. Hier bringen die SAP HANA Expertenroutine in gleicher Form wesentliche Vorteile (Typdefinition und kompletter Code Pushdown). Weiterhin schade ist die fehlende Integration einer Zeitabhängigkeit. Sobald man diese für bzw. in der SAP HANA nutzen will scheitert man und kommt nicht um eine eigene Lösung herum – eine durch SAP HANA-nahe C-Implementation zur Abbildung einer performanten Auflösung der Zeitabhängigkeit wäre immer noch sehr wünschenswert!

Zusätzlich ist man innerhalb der SAP HANA Expertenroutine an diese gebunden bzw. limitiert. Während man bei dem direkt Einsatz eines AMDP alles selbst definieren konnte (und musste) fehlt dies bei der SAP HANA Expertenroutine – etwa wenn man eine Modularisierung der Transformation anstrebt (vgl. INCLUDE- oder Funktionsbaustein-Ansätze), so kann man bedingt durch die Vorgabe keine AMDP-Methode in der generierten SAP HANA Expertenroutine einsetzen, aber da gibt es ja noch die SAP HANA Stored Procedures…

Verwandte Beiträge

Leave a comment

*