SAP ABAP

ABAP ist eine proprietäre Programmiersprache, die für die Programmierung von Anwendungen im SAP-Kontext entwickelt wurde und in Grundzügen Ähnlichkeit zur Programmiersprache COBOL aufweist.

Wer sich näher mit SAP auseinandersetzt, stößt früher oder später auf den Begriff SAP ABAP. Dass es sich um eine Programmiersprache handelt, ist meist bekannt. Doch wo liegen die Unterschiede zu anderen Sprachen? Wie entstand SAP ABAP, wie wird es in der Praxis eingesetzt und ist es in Zeiten von SAP S/4 HANA nach wie vor relevant? Dieser Artikel geht umfassend und verständlich auf diese und weitere Fragestellungen rund um SAP ABAP ein.

Was ist SAP ABAP?

Bei SAP ABAP handelt es sich um die hauseigene (proprietäre) Programmiersprache von SAP. Sie wurde im Jahr 1983 eingeführt. Ausgeschrieben bedeutete die Abkürzung einst „Allgemeiner Berichtsaufbereitungsprozessor“, da Unternehmen mit der Sprache ursprünglich nur Reports programmieren konnten. Veränderungen an der Datenbanktabelle waren jedoch nicht möglich. Es folgten Weiterentwicklungen des Sprachumfangs von ABAP, in deren Rahmen die Namensbedeutung von ABAP schließlich auf „Advanced Business Application Programming“ geändert wurde. Dies drückt aus, dass SAP ABAP für die Entwicklung kommerzieller Anwendungen vorgesehen ist. Bereits seit 1990 und der Einführung von SAP R/3 basieren sämtliche SAP-Module auf ABAP. Eine wichtige Ergänzung war zudem ABAP Objects (kurz ABAP OO), da hierdurch eine objektorientierte Programmierung ermöglicht wurde.

Was kann mit der Programmiersprache SAP ABAP umgesetzt werden?

Zunächst wird SAP ABAP selbstverständlich von den Programmierern der SAP SE eingesetzt, um neue Anwendungen und Anweisungen, Funktionsbausteine und Updates zu bestehenden Programmteilen zu entwickeln. Die Rede ist hierbei auch vom sogenannten SAP-Standard. Trotz des Variantenreichtums und zahlreicher Branchenlösungen reicht der Sprachumfang dieses Standards jedoch oftmals nicht aus, um die individuellen Anforderungen von Unternehmen vollständig abzudecken. An dieser Stelle kommen interne oder externe SAP-Programmierer ins Spiel, die mithilfe von SAP ABAP Lösungen entwickeln, um diese Lücke zu schließen. Die Möglichkeiten gestalten sich vielfältig und umfassen neben der Systembasis sämtliche SAP-Module wie Finanzwesen, Human Resources, Produktion, Logistik, Vertrieb und Einkauf. Nur einige Beispiele für die Einsatzmöglichkeiten von ABAP sind:

  • Entwicklung eigener Datenbanktabellen
  • Programmierung individueller Benutzeroberflächen
  • Entwicklung eigener Transaktionen
  • Gestaltung von Reports
  • Generieren von spezifischen Listen
  • Erstellung neuer Prozesse und Anweisungen

Welche Eigenschaften hat SAP ABAP aus technischer Sicht?

In ihrer Syntax gleicht SAP ABAP der Programmiersprache COBOL, die bereits in den 1950er Jahren entstand und immer noch im Einsatz ist. COBOL (Common Business Oriented Language) ist deutlich an die natürliche Sprache angelehnt und wird insbesondere für kaufmännische Applikationen genutzt. Sehr ähnlich verhält es sich auch in SAP ABAP. Zudem ist SAP ABAP eine sogenannte 4GL-Sprache (fourth generation language). Programmiersprachen dieser Art sind darauf ausgelegt, Code möglichst schnell und mit wenigen Codezeilen zu erstellen. Weiterhin eignet sich die SAP ABAP ideal für die Verarbeitung großer Datenmengen innerhalb kommerzieller Anwendungen.

Während elementare Sprachen ihre Funktionen in Bibliotheken legen, geht SAP ABAP einen anderen Weg, der wie folgt charakterisiert ist:

  • Datenbankzugriffe werden über Open SQL Statements in den Quellcode eingebunden.
  • SAP-Pufferung sorgt für optimierte Performance bei Datenbankzugriffen.
  • Massendaten im Arbeitsspeicher werden in internen Tabellen dynamisch gespeichert.
  • OLTP (Online Transaction Processing) ermöglicht, dass zahlreiche Benutzer gleichzeitig auf die Datenbanktabelle zugreifen können.

Zudem existieren im Wesentlichen zwei Schnittstellen für SAP ABAP:

  • Schnittstelle zu anderen Programmierumgebungen via RFC (Remote Function Call); ermöglicht den Aufruf von Funktionen aus entfernten Systemen
  • XML-Schnittstelle

Zwar begünstigt die Integration dieser Funktionen und Anweisungen die Geschwindigkeit und Überprüfbarkeit von Programmen, die Vielzahl von Sprachelementen macht SAP ABAP jedoch auch komplex.

Besitzen SAP ABAP-Programme eine Abwärtskompatibilität?

SAP ABAP ist ursprünglich ein prozedurales Programmiermodell, das auf einzelnen Funktionsbausteinen und Unterprogrammen basiert. Seit dem ABAP Release 6.10 können jedoch auch objektorientierte Befehle (Klassen und Interfaces) genutzt werden. Dies erfolgt unter der Begrifflichkeit ABAP Objects, kurz ABAP OO (Details im nächsten Abschnitt).

Von Beginn an verfolgt SAP mit ABAP das Prinzip der Abwärtskompatibilität. Das heißt: Alte Anweisungen verlieren nicht ihre Gültigkeit, wenn sie durch neue Anweisungen ersetzt werden. Altanweisungen existieren also weiterhin, was im Laufe der Zeit zu einem erheblichen Sprachumfang führt. Zwar sollten die alten Elemente nicht mehr zum Einsatz kommen, möglich ist dies aber durchaus. Weiterhin ist zu erwähnen, das ABAP und ABAP OO gemeinsam eingesetzt werden können, also interoperabel sind. Wird ABAP OO verwendet, lassen sich alte Sprachelemente von SAP ABAP (bis auf wenige Ausnahmen) demnach ebenfalls weiter einsetzen.

Der Vorteil dieses Ansatzes liegt auf der Hand: Eigenentwickelte Funktionen und Programme bleiben stets funktionsfähig. Bestehende Entwicklungen müssen nicht aktualisiert werden. Bei der Programmierung sollte dennoch darauf geachtet werden, die alten Komponenten nicht mehr einzusetzen, sondern aktuelle und performantere Sprachelemente von ABAP zu nutzen. Weiterhin besteht die Möglichkeit, alte und neue Bestandteile zu kombinieren. In objektorientiertem Quellcode können prozedurale Elemente verwendet werden. Auch der umgekehrte Fall (objektorientierter Elemente im prozeduralen Coding von ABAP) ist möglich. Werden alte und neue Bestandteile gezielt zusammengefügt, kann dies die Effektivität der Programmiersprache ABAP erhöhen.

Was ist ABAP Objects (ABAP OO)?

ABAP OO ist eine Erweiterung von SAP ABAP. Sie fügt der Programmiersprache objektorientierte Konzepte und Elemente hinzu. Das Ziel ist die Vereinfachung der Anwendungsentwicklung durch Modularisierung. Vereinfacht ausgedrückt: Quellcode kann in übersichtlichen, wiederverwendbaren Modulen von Anweisungen gekapselt werden, wodurch sich Aufwände deutlich reduzieren. Zudem lassen sich mit ABAP OO die Strukturen von Objekten abstrakt vordefinieren und an Unterklassen vererben. Bereits seit dem Release 4.6 ist ABAP OO vollständig in den SAP-Standard integriert. Vorher war es lediglich möglich, Funktionsbausteine von Anweisungen zu sogenannten Funktionsgruppen zusammenzufassen.

Neben der vereinfachten Programmierung verbessert ABAP OO die Anwendungsperformance. Unnötige Datenbankabfragen werden vermieden. Zudem lassen sich konkurrierende Zugriffe auf Datenbanken reduzieren.

Im Vergleich zu anderen Programmiersprachen, die auf Objekten basieren, existieren in ABAP OO einige Besonderheiten. So verfügt eine Klasse stets über zwei Konstruktoren - einen Instanzkonstruktor und einen statischen Konstruktor. Konstruktoren sind hierbei Prozeduren, die zum Erzeugen von Objekten verwendet werden. Der Instanzkonstruktor wird bei jeder Erzeugung von Objekten automatisch ausgeführt und initialisiert somit einzelne Instanzen. Der statische Konstruktor wird hingegen nur einmal vor dem ersten Zugriff auf eine Klasse ausgeführt.

Weitere Besonderheiten von ABAP OO sind:

  • Einfachvererbung: Jede Klasse kann Strukturen nur von einer Oberklasse erben. Mehrere Unterklassen sind jedoch möglich.
  • Zusammenfassung von Interfaces: Mehrere vorhandene Interfaces können in einem neuen Interface zusammengefasst werden.
  • Object Services Framework: Beinhaltet einen Persistenzdienst, einen Transaktionsdienst sowie einen Query-Dienst, wodurch die Entwicklung objekt-orientierter Anwendungen vereinfacht wird.

Wie läuft die Programmierung mit SAP ABAP ab?

Die Erstellung neuer Programme mit SAP ABAP erfolgt in mehreren Prozessschritten:

  • Programmierung in der Entwicklungsumgebung
  • Transport der geänderten Objekte in eine Test-/Konsolidierungsumgebung
  • Test, Freigabe und Transport in das Produktivsystem

Für das Schreiben von Quellcode in ABAP stellt SAP Programmierern eine Entwicklungsumgebung zur Verfügung. Diese trägt den Namen ABAP Workbench. Bereits vorhandene Programme werden hier in Form einer Baumstruktur - gegliedert nach inhaltlichen Gesichtspunkten - dargestellt.

Aus technischer Sicht werden Code und Datentypen in SAP ABAP strikt voneinander getrennt. Sollen global gültige Tabellen und Datentypen definiert werden, erfolgt dies im sogenannten Data Dictionary. Hier werden neben den programmtechnischen Eigenschaften auch Dokumentationen für Datentypen abgelegt.

Die SAP ABAP-Programme selbst werden in der zentralen SAP-Datenbanktabelle gespeichert. Dies unterscheidet ABAP von anderen Programmiersprachen, bei denen Anwendungen häufig separate Dateien sind. Innerhalb der Datenbank liegt der Code einerseits als Quellcode vor, der sich mit den ABAP Workbench Tools anzeigen lässt. Andererseits existiert er als generierter Code auch in einer Binärdarstellung (ähnlich Java Bytecode).

Nachdem SAP jederzeit lauffähig sein muss, wird die Entwicklung von Quellcode nicht im Produktivsystem vorgenommen. Neue Programme müssen daher über sogenannte Transportaufträge von der Entwicklungsumgebung in die Folgesysteme importiert werden. Der Zeitpunkt dieser Transporte kann exakt definiert werden. Insbesondere bei umfangreicheren Änderungen erfolgt dies oftmals nachts oder an arbeitsfreien Tagen.

ABAP in Eclipse als Nachfolger der Workbench

Die ABAP Workbench stand immer wieder für ihren mäßigen Bedienkomfort in der Kritik. Kleine Hilfestellungen wie eine Vorwärtsnavigation, bei der mit Doppelklick direkt in Tabellendefinitionen oder Variablendeklarationen abgesprungen werden kann, konnten nicht wesentlich zur Verbesserung beitragen. Mit der neuen ABAP-Entwicklungsumgebung „ABAP in Eclipse“ bietet SAP seit 2012 jedoch eine Alternative beziehungsweise einen Nachfolger für die Workbench an.

SAP ABAP in Eclipse wurde speziell für die agile Software-Entwicklung konzipiert. Neben bestehenden ABAP Workbench-Funktionen sind einige neue Features hinzugekommen. Beispiele sind:

  • Syntax Highlighting (Hervorhebung von Syntaxen)
  • Code Completion (Autovervollständigung von Quellcode)
  • Refactoring (Strukturverbesserung von Quelltexten, auch für das Umbenennen von Variablen und Methoden einsetzbar)

Darüber hinaus kann ABAP in Eclipse mithilfe von Plugins sehr flexibel an individuelle Szenarien angepasst werden. Auch Tests für eine höhere Code-Qualität lassen sich implementieren. Ein neuer Debugger rundet die moderne Entwicklungsumgebung ABAP in Eclipse ab.

SAP ABAP und Sicherheit

Wie in jeder Anwendung, so können auch in SAP ABAP-Programmen Sicherheitslücken bestehen. Diese entstehen überwiegend aus Unwissenheit und Unachtsamkeit der ABAP-Entwickler oder aus fehlender Transparenz, da die enormen Mengen an Code kaum manuell zu überblicken sind.

Der häufigste Fehler in ABAP Eigenentwicklungen ist eine fehlende oder mangelhaft programmierte Berechtigungsprüfung. Hierdurch ist es möglich, dass unbefugte Mitarbeiter auf bestimmte Informationen zugreifen und Missbrauch mit den Daten betreiben. Noch gefährlicher sind jedoch Schwachstellen, durch die externe Angreifer die Kontrolle über SAP-Systeme erlangen können. Kriminelle sind in diesem Falle potenziell in der Lage, komplette SAP Datenbestände zu manipulieren, zu löschen oder zu stehlen.

Um Risiken durch fehlende ABAP-Quellcodes zu minimieren, sind mehrere Maßnahmen erforderlich. Zu nennen sind insbesondere die folgenden Aspekte:

  • Fortlaufende Sicherheitsschulungen für interne Programmierer
  • Bei externen Dienstleistern: Code-Qualitätsstandards in Vereinbarungen aufnehmen
  • Scan der eigenentwickelten ABAP-Codes auf Schwachstellen (möglich mit spezieller Software)
  • Sicherheitspatches zeitnah einspielen
  • Notfallpläne für den Fall erfolgreicher Angriffe aufstellen

Welche Rolle spielt ABAP in SAP S/4 HANA?

Mit Einführung der SAP S/4 HANA-Technologie ist für SAP-Software ein neues Zeitalter angebrochen. Sowohl die Benutzerführung als auch die Datenmodelle wurden signifikant vereinfacht. Die Datenbank befindet sich nicht mehr auf einem Datenbankserver, sondern mit den Programmdaten im Hauptspeicher des Applikationsservers. Datenbank und Anwendung sind in SAP S/4 HANA also miteinander verschmolzen. Für ABAP-Entwickler haben sich hieraus verschiedene Veränderungen ergeben.

Zunächst verschob sich der Fokus von Befehlsanweisungen zu einer funktionalen Ausrichtung. Außerdem wird aus Performance-Gründen empfohlen, in SAP S/4 HANA mit Native SQL (vormals Open SQL) zu programmieren. Der Quellcode wurde aus den Programmen in die Datenbankschicht verlagert. Somit findet die Programmierung direkt auf der Datenbank statt, was mit dem bekannten SAP ABAP nicht mehr möglich ist. Entwickler mussten daher SQLScript als neue Programmiersprache für SAP S/4 HANA erlernen und einsetzen.

Seit der SAP S/4 HANA-Einführung wurde die SAP ABAP-Programmierung allerdings deutlich vereinfacht. Mussten für Datenselektionen anfangs noch komplexe Datenmodellierungen (Analytische Views) vorgenommen werden, genügen heute die einfacheren ABAP-CDS-Views. Hierbei sorgen vordefinierte Datenmodelle dafür, dass Entwickler während des Programmierens komfortabel auf zusammenhängende Daten zurückgreifen können