SAP in der Cloud: Das ABAP SDK for Azure – Entstehung, Installation, Konfiguration

Autor: Holger Bruchelt
  • Beitrag vom: 06.02.2019
  • Views: 3.566

Vor fast genau einem Jahr schloss das Microsoft IT-Team die Migration der kompletten internen SAP-Landschaft nach Azure ab. Über 600 Server, darunter auch das zentrale SAP ERP-System, laufen seitdem in der Microsoft Azure Cloud. Ein zentrales Anliegen dabei: die Vereinheitlichung der Integration von Azure-Services in die SAP-Systeme. Entstanden ist daraus das ABAP SDK für Azure, eine Bibliothek von ABAP-Klassen, mit der SAP-Entwickler die Azure-Funktionalitäten auch ohne großes Vorwissen verwenden können.

Microsoft verfolgt eine klare Cloud-Strategie, in der die SAP-Systeme nur einen Teil der Infrastruktur ausmachen, die nun in Azure läuft. Eine Herausforderung war es, ein einheitliches Ende-zu-Ende-Monitoring zu bekommen. Bei vielen non-SAP-Systemen war das kein Problem, doch für die SAP-Umgebung sollten Trigger direkt aus den SAP-Prozessen abgerufen werden. Verschiedene Teams innerhalb Microsofts starteten deshalb Entwicklungen, die entsprechende Daten aus den SAP-Systemen nach Azure in „Applications Insights“ schicken sollten, um dort genaue Analysen über Produktgrenzen zu ermöglichen.

Eine Bestellung, die über non-SAP-Adapter angenommen, formatiert und an das SAP-System weitergeleitet wurde, dort verschiedene Workflow-Genehmigungen durchlaufen hat und schließlich bearbeitet wurde, konnte somit hervorragend in Azure verfolgt werden. Das Problem war allerdings, dass verschiedene Entwickler die unterschiedlichen technischen Herausforderungen wie Single Sign-On, Monitoring oder Connectivity unterschiedlich implementiert hatten und der Betrieb der Lösungen somit nur sehr schwer zu verwalten war.

Microsoft-IT wollte die Integration von Azure-Services in die SAP-Systeme, insbesondere über ABAP, daher vereinheitlichen: Es sollte eine Art geben, wie sich Services an Azure authentifizieren, eine zentrale Stelle, in die Logging-Information geschrieben werden, eine Abstraktionsschicht, wie Azure Services aufgerufen werden. Nur so konnte ein stabiler und skalierbarer Betrieb ermöglicht werden.

Aus diesem Anliegen entstand das ABAP SDK für Azure, eine Bibliothek von ABAP-Klassen, die alle SAP-Entwickler innerhalb der Microsoft-IT verwenden können, um diese Funktionalitäten auch ohne großes Vorwissen zu Microsoft Azure verwenden zu können.

Nachdem das ABAP SDK für Azure mehrere Monate erfolgreich intern in Betrieb war, kamen auch von Kunden und Partnern Anfragen, auf dieses SDK aufzubauen. Microsoft IT stellt das SDK seitdem öffentlich unter GitHub zur Verfügung.

abapGit und Installation des ABAP SDK for Azure

Dank abapGit ist die Installation denkbar einfach: Falls noch nicht geschehen, muss abapGit einfach nur per Copy & Paste auf einem SAP NetWeaver ABAP Stack 7.02 oder höher erstellt und ausgeführt werden. Danach kann das ABAP SDK for Azure direkt aus dem Git-Repository geklont und aktiviert werden.

Bevor das ABAP SDK for Azure nun aus jedem beliebigen ABAP-Programm verwendet werden kann, müssen noch eine RFC Destination und verschiedene Customizing-Tabellen konfiguriert werden.

Das ABAP SDK for Azure unterstützt aktuell folgende Azure Services:

Durch die Bereitstellung des kompletten SDKs auf GitHub wird die Entwicklung eigener Erweiterungen durch die Community klar befürwortet. Verschiedene Microsoft-Partner planen bereits Erweiterungen für Azure Active Directory B2C oder die Azure Cognitive Services. Auch Microsoft selbst treibt seine Entwicklung stetig voran und veröffentlicht durch ein eigenes Team bei Microsoft IT regelmäßig Neuerungen.

Konfiguration des ABAP SDK for Azure

Die Konfiguration des ABAP SDK for Azure lässt sich in wenigen Sätzen erklären: Abhängig vom gewünschten Azure Service muss zunächst im SAP-System über SM59 eine RFC Destination angelegt werden. Diese wird dann in der Customizing-Tabelle (SM30) ZREST_CONFIG mit einer Interface ID verbunden. ZREST_CONF_MISC erlaubt es, für die entsprechende Interface-ID Fehlerbehandlungen zu definieren: Wie wird der entsprechende Service aufgerufen? Wie oft sollen Aufrufe im Fehlerfall wiederholt werden? Wer soll bei einem Fehlerfall informiert werden? ZADF_CONFIG schließlich definiert, welcher Service in Azure aufgerufen werden und wie sich das SAP-System am Service authentifizieren soll.

Damit ist das ABAP SDK for Azure prinzipiell konfiguriert und kann aus anderen ABAP-Entwicklungen direkt aufgerufen werden. Die eigentliche Komplexität, beispielsweise der Authentifizierung, wird dabei vor dem ABAP-Entwickler verborgen, womit er sich komplett auf die Entwicklung der ABAP-Applikation – der Business-Logik – konzentrieren kann. Die technische Implementierung rückt damit in den Hintergrund.

Zunächst muss der jeweilige Azure Service initiiert werden (hier am Beispiel eines EventHubs):

Code: Azure Service initiieren

Anschließend können die Daten direkt an den Event Hub geschickt werden:

Code: Grafik an Event Hub senden

Der ABAP-Entwickler braucht also nicht viel mehr als ein paar neue Methoden zum Aufruf von Azure Service zu lernen.

Neben der Abstraktion der Services werden gleichzeitig alle Aufrufe zentral in einem „ABSP SDK Monitor“ zur Verfügung gestellt. Unter ZREST_UTIL können sämtliche Aufrufe nicht nur angezeigt, sondern bei Bedarf auch erneut angestoßen werden.

Gerade für den Regelbetrieb sind solche Methoden äußerst hilfreich und erleichtern den Betrieb von Applikationen, die von ganz unterschiedlichen Entwicklern entwickelt wurden.

Wer mehr erfahren möchte, kann sich hier ein entsprechendes End-To-End Tutorial herunterladen. In unregelmäßigen Abständen werden auch Hackathons und ähnliche Events zum ABAP SDK for Azure und anderen Themen angeboten.

Beiträge empfohlen von Microsoft


https://www.heise.de/brandworlds/zukunftsmacher/sap-in-der-cloud-das-abap-sdk-for-azure-entstehung-installation-konfiguration/https://www.heise.de/brandworlds/zukunftsmacher/sap-in-der-cloud-das-abap-sdk-for-azure-entstehung-installation-konfiguration/

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.