Modernisiere dein ABAP
Was steckt hinter dieser etwas provokanten Aussage und wie kannst du Stück für Stück an das moderne ABAP kommen? Alles in diesem Artikel.
Inhaltsverzeichnis
ABAP ist eine historisch stark gewachsene Sprache und im Gegensatz zu anderen Programmiersprachen wurden bisher keine alten Sprachkonstrukte aus dem Wortschatz entfernt, sodass ABAP immer abwärtskompatibel ist. Doch solltest du daher noch so programmieren wie vor 20 oder 30 Jahren?
Einleitung
In ABAP gibt es über 1250 Schlüsselwörter, damit ist die Programmiersprache TOP 1 unter den Sprachen. Doch die Menge an Schlüsselwörtern ist eher kontraproduktiv, da sie Einsteiger am schnellen Lernen der Sprache hindern. Schauen wir uns einmal den Gebrauch von REFRESH, CLEAR und FREE an. Hier sind drei Statements, die ungefähr das gleiche machen, doch für welches soll man sich entscheiden und welches macht heute noch Sinn? Alte ABAP Hasen werden sich wahrscheinlich darüber streiten, doch eigentlich sollte man nur noch ein Statement verwenden und schon hat man sich zwei Andere gespart.
Anfang
Wo sollte man anfangen, die Sprache zu reduzieren? Unserer Meinung nach vor allem in der Ausbildung von neuen ABAP Entwicklern. Hier wird der Grundstein für die Entwicklung gelegt und junge ABAP Entwickler sollten in erster Linie vor allem lernen, wie die neuen Dinge funktionieren. So bringt es ihnen wenig, wenn sie mit FORMS und Funktionsbausteinen beginnen. Später einmal über die technische Dokumentation Informationen zu alten Statements zu bekommen ist kein Problem, doch man sollte sie vor allem mit den neuen Statements vertraut machen.
Aktuelle Entwickler sollten vor allem damit beginnen, sich die neuen Statements anzuschauen und diese zu verwenden. In den meisten Fällen sind diese noch einmal besser performance-optimiert und lassen sich einfacher in Statements kombinieren.
Obsolet
Ein sehr guter Hinweis für nicht mehr zu verwendende Schlüsselwörter findet man in der ABAP Dokumentation. Solltest du dir einmal über einen Befehl nicht sicher sein, dann schau in die technische Dokumentation, dort findest du an erster Stelle Informationen zu obsoleten Statements:
Solche Statements kannst du direkt aus deinem Wortschatz der Programmiersprache streichen.
Nachfolger
Etwas schwieriger wird es bei der Ermittlung von Nachfolgern zu Schlüsselwörtern oder Best-Practices beim Entwickeln. Wichtige Informationen liefert der Clean ABAP Guide oder einfach über unsere Webseite, hier haben wir eine Liste mit Modern ABAP Statements zusammengestellt. Daneben findest du neben Neu und Alt, auch zahlreiche Blogs zum Thema Modern ABAP und wie du die neue Syntax nutzt.
ABAP Cloud
SAP hat damit begonnen, die Sprache etwas aufzuräumen, wenn es um die neuesten Codelines und Releases geht. Schauen wir uns das ABAP Environment etwas näher an, dann wird schnell auffallen, dass nicht mehr alles geht. Hier wurde bereits die Sprache stark eingeschränkt und nicht mehr alles ist möglich. Auch wenn das System im Hintergrund noch genauso funktioniert, wird über den Compiler die Sprachversion eingeschränkt. Dies hat zur Folge, dass ABAP automatisch eingeschränkt wird im Sprachumfang und Entwickler nur noch viele der neuen Statements verwenden können.
Hier geht SAP einen harten, aber richtigen Weg. Formbasierte Reports und Anwendungen gehören der Vergangenheit an und anders kann kein Wechsel Richtung Web und Fiori stattfinden. Doch wie man schnell und einfach Fiori Anwendungen mit Fiori Elements erstellt, passt besser in einen anderen Artikel auf unserem Blog.
Beispiele
Schauen wir uns einmal ein paar Beispiele an und wie wir Sprache für alle etwas einfacher machen können.
APPEND vs. INSERT
Bereits in einem Artikel, haben wir die beiden Statements miteinander verglichen. APPEND wird nicht mehr benötigt und kann ebenfalls vergessen werden. INSERT arbeitet immer wie man es erwartet und verursacht auch keine Probleme, wenn man den Datentyp ändert. So sparst du dir Zeit beim beseitigen der Fehler und Ändern der Statements.
" Old
APPEND ls_structure TO lt_table.
" New
INSERT ls_structure INTO TABLE lt_table.
Vergleichsoperatoren
Wer kennt es nicht vom lernen von ABAP, was macht gleich noch LE oder GT? Diese Ausdrücke für Vergleichsoperatoren werden im Umfeld der SELECT-OPTIONS benötigt, doch kann man damit auch Vergleiche in IF Statements durchführen. Allerdings wird hier die Lesbarkeit leiden, da diese Operatoren erst interpretiert werden müssen. Bei der Modellierung von CDS Views kann man sie nicht mehr einsetzen, was wiederum einen Bruch in der Entwicklung verursacht und zu unschönen Vermischungen führt.
" Old
IF ld_number GE 10.
ENDIF.
" New
IF ld_number >= 10.
ENDIF.
Jüngere Entwickler schauen sich meist auch noch andere Programmiersprachen an oder entwickeln als Full-Stack Developer im Bereich Fiori. Da hier die alten Vergleichsoperatoren nicht funktionieren, wird es früher oder später zu einem Bruch kommen. Hier lohnt es sich als Angewohnheit, gleich die Standard Vergleichsoperatoren zu nutzen.
Initialisieren
Am Anfang haben wir die drei Statements REFRESH, CLEAR und FREE angesprochen. Refresh ist bereits obsolet und sollte nicht mehr verwendet werden. Hier sollte klar auf CLEAR gegangen werden, da es intuitiv auch viel besser zum Bereinigen von Variablen genutzt werden kann. FREE wurde vor allem zum Aufräumen von Tabellen und Objekten genutzt, der Unterschied zu CLEAR ist aber nur minimal und kann vernachlässigt werden.
" Old
REFRESH: lt_table, ld_variable.
" New
CLEAR: lt_table, ld_variable.
Fazit
Modernes ABAP ist nicht schwer, es erfordert ein wenig Hilfe und Umgewöhnung, doch so kann man sich Schritt für Schritt an einen besseren Stil heranwagen. Unsere Empfehlung an dich, wenn du dir nicht sicher bist, verwende immer den neuesten Ausdruck bei der Entwicklung.