In der Community der SAP BW ABAP Entwickelnden hat sich durch die Einführung der neuen HANA-Technologien einiges geändert. Ein wichtiger technologischer Fortschritt ist die Einführung von AMDP (ABAP Managed Database Procedures) und SAP HANA SQLScript. In diesem movisco-Blogbeitrag wollen wir darauf eingehen, um was es sich bei AMDP handelt und was das für Auswirkungen auf SAP BW (ABAP) Entwickelnde hat.
Bis vor einiger Zeit war es noch „normal“, im SAP BW-Umfeld Daten auf einem Datenbankserver zu speichern und diese in entsprechenden Datenverarbeitungsschritten mit Hilfe von ABAP (Advanced Business Application Programming) durch integrierte SQL-Datenbankzugriffe zu verarbeiten.
Durch die Einführung von ABAP 7.4 und SAP HANA wurde die Möglichkeit zur Erzeugung von Stored Procedures bereitgestellt. Diese dienen dazu, auf der Datenbankumgebung auszuführende vordefinierte Operationen ablaufen zu lassen. Durch die Ausführung der Operationen auf der Datenbank ist es nicht mehr notwendig, die Daten von der Datenbank in den Applikationsserver zu laden, um sie dort mit Hilfe von ABAP-Routinen zu verarbeiten. Dieser Ansatz führt zu einer Verbesserung der Performance bei der Datenverarbeitung, da die Daten serverintern zwischen Arbeitsspeicher und Cache deutlich schneller übertragen werden können als bei der Übertragung über ein Netzwerk (Datenbank zum Applikationsserver).
Durch diese Technologie wird allerdings bei Entwickelnden und Nutzern ein doppeltes Know-how verlangt. Auf der einen Seite stehen die SAP GUI User mit entsprechenden ABAP-Kenntnissen. Auf der anderen, neuen Seite werden nun SAP HANA Datenbank-User mit Kenntnissen in Stored Procedures, welche in SQLScript geschrieben werden, notwendig, um diese Performance-Vorteile nutzen zu können.
Diese beiden „Welten“ führen dazu, dass für das Transportwesen zwei Wege entstehen. Zum einen die Transporte der (ABAP-) Entwicklungen auf dem Applikationsserver und zum anderen die Transporte der Entwicklungen auf der SAP HANA Datenbank.
In der klassischen ABAP-Programmierung werden Datenbankzugriffe mit vordefinierten SQL-Statements ermöglicht (OpenSQL), welche dafür sorgen, dass die selektierten Daten auf den Applikationsserver geladen werden, um sie dort weiterverarbeiten zu können. Demgegenüber kann SQLScript als eine Erweiterung vom klassischen (SAP HANA) SQL vorgestellt werden, welche dazu genutzt wird, um die Anwendungslogik vom Applikationsserver in die SAP HANA Datenbank zu verlagern.
Dementsprechend wird es in der Programmierung von Datenverarbeitungen eine Verschiebung von der reinen ABAP- und OpenSQL-Entwicklung in Richtung SQLScript geben.
Um die Vorteile beider Seiten zu kombinieren, kommt AMDP „ins Spiel“. AMDP sorgt durch die Erzeugung von globalen Klassen auf dem Applikationsserver des ABAP-Stacks dafür, dass Stored Procedures und ABAP Methoden innerhalb einer Klasse verwendet werden können. Innerhalb einer Methode besteht allerdings nicht die Möglichkeit, die beiden Programmiersprachen zu vermischen. Durch die Implementierung auf dem ABAP-Stack wird sowohl das Transportwesen auf einen Weg reduziert als auch die Möglichkeit geboten, von dem sogenannten Code-Push-Down zu profitieren.
Der Code-Push-Down bietet die Möglichkeit, Datenverarbeitungen direkt auf der Datenbank durchzuführen und somit nicht die Rohdaten in die Applikationsschicht zu laden und sie dann zu bearbeiten, sondern bereits verarbeitet in die Applikationsschicht zu laden. Dadurch wird die Last der Datenverarbeitung von dem Applikationsserver auf den Datenbankserver verlagert, wofür die HANA Datenbank allerdings spezialisiert ist.
Für diesen Ansatz ist ein Umdenken notwendig, um von einer bisherigen imperativen Denkweise zu einer deklarativen Denkweise zu kommen, da im AMDP-Framework hauptsächlich SQL-Abfragen zusammen mit dem Applikationscode und der Programmlogik direkt im HANA Studio entwickelt werden.
Ein imperativer Ansatz sollte jedoch nicht vollständig verworfen werden, da es durchaus in komplexen Anforderungen notwendig und sinnvoll sein kann, diese imperativ in ABAP auf der Applikationsschicht zu entwickeln. Der Grundsatz sollte hingegen lauten, so viel Funktionalität wie möglich auf dem Datenbankserver mit SQLScript abzubilden, um von den Performance-Vorteilen durch die HANA Datenbank und den HANA Optimizer zu profitieren.
Die SAP BW Entwicklung stellt bei der movisco AG einen Beratungsschwerpunkt dar: sie begleitet Auftraggeber bei der Umsetzung von Funktionalitäten in SAP HANA SQLScript, um dort eine nach dem neusten technischen Stand bestmögliche Datenverarbeitung zu realisieren.
Im klassischen SAP BW Umfeld werden täglich oder sogar untertägig sehr große Datenmengen durch Datentransferprozesse geladen, für das Reporting vorbereitet und persistiert.
Die Einführung von BW/4HANA und die konsequente Nutzung von AMDP führt dazu, dass die Ausführung von Datentransferprozessen größtenteils auf der HANA Datenbank durchgeführt werden und somit Performance-Vorteile bei der Beladung und beim Reporting im SAP BW realisiert werden können.
Entsprechende Funktionalitäten und Logiken werden in SAP HANA SQLScript im HANA Studio entwickelt, welche nach und nach die ABAP-Entwicklungen ablösen und ersetzen mit allen Vorteilen, die eine direkte Ausführung von Datenbankoperationen auf dem Datenbankserver mit sich bringen.
Zeitnah werden wir uns in einem Folgebeitrag damit befassen, wie wir die Möglichkeiten, die uns durch die SAP HANA Datenbank, AMDP, Stored Procedures und SQLScript zur Verfügung stehen, in einem Projekt bei einer Bank einsetzen konnten. Hierzu werden wir anhand des Projektes auch Beispiele für die Performance-Steigerung im Vergleich zu einer reinen ABAP-Lösung auf dem Applikationsserver der gleichen Problemstellung aufzeigen.
Wir freuen uns über Ihre direkte Kontaktaufnahme!