Kennen Sie diese ABAP 7.4 / 7.5 Syntax Elemente schon?
In ABAP führen ja bekanntlich viele Wege nach Rom. Sie fragen sich vielleicht: Warum die neuen Features nutzen, wenn Sie es doch auch bereits mit der aktuellen ABAP-Palette realisiert bekommen haben? Ganz einfach: Mit manchen ABAP 7.4 / 7.5 Syntax Elementen können Sie sich so einige Codezeilen sparen und Ihre Entwicklung deutlich übersichtlicher gestalten. In diesem Beitrag bringe ich ihnen einige Elemente mit, bei denen Ihre Kollegen Augen machen werden.
Konstruktorausdrücke
Lernen Sie die wichtigsten Neuerungen kennen, die Entwickler ab SAP NetWeaver 7.5 nutzen können. Neue ABAP Sprachfeatures, neue Entwicklungsobjekte und neue Technologien im Zusammenspiel mit SAP HANA.
Ein Konstruktorausdruck besteht aus…
- einem eingebauten Konstruktoroperator,
- einem zum Operator passenden Daten- oder Objekttyp, der über eine Angabe “#” auch implizit aus der Operandenposition abgeleitet werden kann, und
- der Angabe von typspezifischen Parametern in Klammern.
Die komplette Referenz aller Operatoren finden Sie hier. Wir wollen im Folgenden einen genaueren Blick auf drei ausgewählte Konstruktoroperatoren werfen: VALUE, CONV und COND.
VALUE-Operator
Dieser Operator ist besonders praktisch, um sich ein paar Codezeilen zu sparen und gleichzeitig mehr Übersichtlichkeit zu gewinnen.
Der Vorteil hierbei: Während Sie früher noch die Attribute einzeln ansprechen und zuweisen mussten, können Sie hier das Ganze kompakt innerhalb der Klammern übergeben. Falls die letzte Codezeile Ihnen Rätsel aufgibt, lohnt sich übrigens ein Blick auf den Blogartikel meines Kollegen Nico Horn zur ABAP Inline-Deklaration.
Zugegeben, der Mehrwert wird in diesem einfachen Beispiel noch nicht ganz klar deutlich. Aber wir können das Ganze mal weiterspinnen:
In diesem Beispiel wird der Einsatz des „#“ vor der umschließenden Klammer als implizite Typangabe deutlich. Dies ist nur möglich, wenn der Typ aus dem Kontext einwandfrei zu ermitteln ist. Tipp: Probieren Sie hier einfach mal unterschiedliche Ansätze aus!
Gerade Tabellen lassen sich damit schnell und kompakt initialisieren.
CONV-Operator
Der Conv-Operator dient, wie der Name es schon vermuten lässt, dem Konvertieren von Werten. Sie kennen das bestimmt: Sie rufen einen Funktionsbaustein auf und schon meckert er, dass ihm das Format eines numerischen Wertes nicht passt. Anstatt hier über Hilfsvariablen zu gehen, probieren Sie es mal wie folgt:
Hier lässt sich entsprechend bequem die ein oder andere Codezeile einsparen.
COND-Operator
Auch, wenn der Name ähnlich klingen mag, hat dieser nichts mit der Konvertierung zu tun. Das Konzept des COND-Operators können Sie sich vorstellen wie ein kompaktes CASE direkt an der Operandenposition. Anstatt je nach Fall etwas zu tun, nimmt ein COND-Statement je nach Auswertung der Bedingung einen anderen Wert an. Folgendes Beispiel erläutert dies:
Die variable lv_cond nimmt je nachdem, welcher Fall Eintritt (also in diesem Fall abhängig von den Parametern) einen anderen Wert an.
Aber Vorsicht: bei impliziter Typangabe wird der erste mögliche Wert – hier ‘LT’ – als Vorlage genommen, um den Typ des Datenobjekts zu bestimmen. Dies hat zur Folge, dass dieser auch nur 2 Stellen lang ist. Wäre eines der anderen Ergebnisse länger als 2 Buchstaben, würden diese abgeschnitten. Besser ist daher eine explizite Typangabe:
Wie oben zu sehen, lässt sich auch ein ELSE-Fall einbauen, falls keine der Bedingungen wahr ist.
FOR-Zusatz
Der FOR-Zusatz kann zusammen mit den Konstruktorausdrücken REDUCE, NEW und VALUE verwendet werden, um einen Iterationsausdruck als Teilausdruck einzuleiten. Folgendes Beispiel stellt die klassische Loop-Variante der Kombination aus VALUE und FOR gegenüber:
Das Ergebnis ist bei beiden Varianten das Gleiche.
Tabellenausdrücke
Verwenden Sie noch READ TABLE … INTO, um auf Tabellenzeilen zuzugreifen? Dann probieren Sie gerne diese neue Methode, bei der der Index oder alternativ Komponentenwerte in eckigen Klammern angegeben werden:
Gruppierung auf internen Tabellen
Wieder ein Fallbeispiel aus dem bekannten Datenmodell rund um Flüge:
- Sie selektieren eine Menge X von Fluggesellschaften.
- Sie möchten diese nach einem Attribut (bspw. Währungsschlüssel) gruppieren.
- Ergebnis: Eine Tabelle, die pro Währungsschlüssel eine Tabelle von Fluggesellschaften enthält.
Anstatt nun hinzugehen und erstmal zu zählen, wie viele Währungen vorkommen, dann für jede eine Tabelle zu erstellen und dann mit einer CASE-Anweisung die Einträge in die einzelnen Tabellen zu kopieren, geht das auch einfach so:
Mit ein wenig Code im inneren Loop lässt sich so beispielsweise diese schöne Ausgabe erzeugen:
Kniffe für Ihre ABAP-Entwicklung
Ich hoffe, Sie konnten sich aus den oben vorgestellten Elementen Einiges für Ihre zukünftige ABAP-Entwicklung mitnehmen. Kennen Sie noch andere ABAP 7.4/7.5 Kniffe, die Ihnen im Coding-Alltag Lasten abnehmen? Dann lassen Sie gerne die Leser und mich durch einen Kommentar daran teilhaben. Ich freue mich auf Ihre Tipps und Hinweise!