Neuerungen und Weiterentwicklungen mit ABAP ab NetWeaver 7.4

Weiterentwicklungen in ABAP – diese Neuerungen gibt es ab NetWeaver 7.40

ABAP wird einfacher, direkter und benutzerfreundlicher

Hallo zusammen,

heute werden wir mal wieder sehr technisch: Wir beschäftigen uns mit Neuerungen in ABAP. Nicht nur die Applikationen und Tools der SAP entwickeln sich weiter. Nein, auch an der SAP-eigenen Programmiersprache wird ständig weiter gearbeitet.

Wir werden euch in der nächsten Zeit häufiger Einblicke über die Sprache, die neuen Tools, Test-Möglichkeiten und vor allem den Einsatz im Umfeld von SAP BW und HANA geben.

Heute beginnen wir mit einigen Neuerungen, die sich in den letzten Jahren in ABAP ergeben haben. Da diese Änderungen immer vom jeweiligen System-Stand abhängen, kann es sein, dass sie für einige unter euch noch sehr neu, für andere bereits Jahre alt und für die nächsten noch nicht einmal verfügbar sind.

Rückblick auf NetWeaver 7.40

Mit dem NetWeaver-Release 7.40 gab es einige sehr interessante Neuerungen bzw. Veränderungen innerhalb von ABAP, die durchaus Einfluss auf die tägliche Arbeit eines Entwicklers haben können. Horst Keller von der SAP hat dazu hier einen sehr guten Artikel veröffentlicht.

ABAP 7.40 ist seit 2013 verfügbar. Seit diesem Zeitpunkt gab es über die verschiedenen Support-Packages noch weitere Anpassungen. Obwohl wir jetzt das Jahr 2017 schreiben, ist es für viele unserer Kunden noch neu oder erst jetzt verfügbar, da die Sprache mit dem jeweiligen NetWeaver-Release einhergeht.

Wir selbst hatten mittlerweile aber das Vergnügen bei einigen Kunden mit dieser Version und höheren (ABAP 7.5 ist ebenfalls verfügbar) zu arbeiten. Wie immer kostet es den einen oder anderen Entwickler Überwindung, die neuen Themen zu verwenden, da sie es eben anders gewohnt sind und es sicher mehr als einen Weg nach Rom gibt.

Zwei konkrete Beispiele für die Neuerungen in ABAP

Aber gehen wir ins Detail. Hier ein paar Beispiele, wie sich die Arbeit mit der Sprache ABAP verändert hat:

Für mich eine der angenehmsten Änderungen ist die INLINE DECLARATION. Wie man es auch aus einigen anderen Sprachen kennt, kann man nun durch solch eine Syntax direkt im Befehl die benötigten Datenelemente deklarieren.

Hier als Beispiel:

Vor 7.4 sah es so aus:

Data: WA type line_of_itab.

Loop at itab into wa.

Endloop.

 

Ab 7.4:

Loop at itab into DATA(WA).

endloop

 

Das Ergebnis besteht nicht nur darin, dass eine Zeile Quellcode eingespart wird, vielmehr findet dadurch auch eine implizite Typisierung statt. Diese Art der Deklaration funktioniert übrigens auch für Field-Symbols und andere Objekte.

Ein weiteres Beispiel für nützliche Anpassung ist der Value Operator:

Vor 7.4:

DATA itab TYPE t_itab.

DATA wa LIKE LINE OF itab.

 

wa-col1 = 1.

wa-col2 = 2.

APPEND wa TO itab.

wa-col1 = 3.

wa-col2 = 4.

APPEND wa TO itab.

 

meth( itab ).

 

Ab 7.5:

DATA(itab) = VALUE t_itab(

( col1 = 1 col2 = 2 )

( col1 = 3 col2 = 4 ) ).

meth( VALUE t_itab(

( col1 = 1 col2 = 2 )

( col1 = 3 col2 = 4 ) ) ).

 

Auch das ist eine Neuerung, durch die unnötige Zeilen und auch Befehle gespart werden können und in meinen Augen den Quellcode auch lesbarer machen.

ABAP vereinfacht vieles

Als weiteres Beispiel für Vereinfachung ist die Durchsetzung von LHS = RHS. Sprich Befehle wie Move A to B werden obsolet. Vielmehr sagt man einfach B = A und ist fertig. Der große Vorteil hiervon ist, dass diese Zuweisungen auch verkettet und in Funktions- bzw. Methodenaufrufen verwendet werden können.

Weitere Veränderungen machen sich ebenfalls in deutlich lesbarerem Code bemerkbar:

result = class=>do_something(EXPORTING p1 = … p2 = … IMPORTING p3 = … p4 = … CHANGING p5 = … p6 = … ).

ABAP bewegt sich hier gefühlt immer weiter in Richtung JAVA und anderen Sprachen, die es erlauben, Methoden-Aufrufe auch mit komplexeren Parametern In-Line zu übergeben. Mit 7.4 funktioniert das jetzt auch bei Exporting- und Changing-Parametern – vorher war das nur mit Importing-Parametern möglich.

Drei neue Befehle für Transformationen

Drei neue Befehle, die ich persönlich vor allem in Transformationen gerne verwende, sind folgende:

DATA(lin) = lines( itab).

DATA(idx) = line_index( itab[ … ] ).

IF line_exists( itab[ … ] ).

ENDIF.

 

Diese Befehle vereinfachen das Prüfen von Tabellen. Sie geben die Anzahl der Lines, den Index einer Bedingung sowie das Ergebnis einer Prüfung zurück. Mit allen Werten kann direkt weiter gearbeitet werden. Vor 7.4 mussten diese Werte-Prüfungen immer erst mit READ-Befehlen ermittelt werden. Diese Befehle konnten nicht verkettet werden. Das hatte zur Folge, dass mit Hilfsvariablen und ähnlichen Konstrukten gearbeitet wurde, was den Code nur bedingt lesbarer gemacht hat.

Ihr habt Interesse an ABAP oder braucht einen Spezialisten in diesem Bereich? Wenn ihr Fragen oder Anmerkungen habt, schreibt mir gerne eine E-Mail an joerg.waldenmayer@inspiricon.de.

Autor dieses Beitrags
Jörg Waldenmayer Team Lead Technology
Tel.: +49 (0) 7031 714 660 0
E-Mail: info@inspiricon.de