ABAP 740 Table Expressions

Mit ABAP 740 sind unter anderem Table Expressions neu zum Sprachumfang hinzugekommen. Mit Table Expressions kann lesend und schreibend auf Daten von internen Tabellen zugegriffen werden, ohne dass eine Workarea benötigt wird. Es ist also weder eine Struktur, noch ein Feldsymbol oder gar eine Kopfzeile als Ziel des Datenzugriffs erforderlich. Der Datenzugriff ist vergleichbar mit einem READ Statement. Table Expressions sind vergleichbar mit LAMBDA oder LINQ Ausdrücken in C#.

Die Syntax ist wie folgt:

itab[ <<Feld>> <<Operator>> << Wert>> ]
itab[ <<Feld>> <<Operator>> << Wert>> ]-<<Komponente>>

In diesem Blogbeitrag ist die Verwendung umfassend beschrieben.

Hinweis

Bei der Verwendung von Table Expressions gilt es zu beachten:

  1. Die Tabelle kann aus tiefen Strukturen und Untertabellen bestehen.
  2. Der Wertvergleich ist case sensitive, lt_data[ name 'NAME_2' ] ist anders als lt_data[ name 'Name_2' ]
  3. Wird die Zeile nicht gefunden, wird die Exception CX_SY_ITAB_LINE_NOT_FOUND ausgelöst
  4. SY-SUBRC bleibt unverändert, egal ob die Zeile gefunden wurde oder nicht.
  5. Werden mehrere Komponenten einer Zeile benötigt, so sollte die ganze Zeile in eine lokale Workarea übertragen werden. Andernfalls erfolgt der Datenzugriff für jede Komponente einzeln. Dies wirkt sich negativ auf die Laufzeit aus.
  6. Entsprechen mehrere Zeilen der Expression, so wird immer nur auf die erste zugegriffen.
  7. Wird das Ergebnis einer Table Expression einem Feldsymbol zugewiesen (ASSIGN itab[ feld = '1'] to <fs> ), kann die Prüfung auf erfolgreiche Zuweisung entfallen, da eine Exception ausgelöst wird, falls die Zeile nicht existiert.

Table Expressions lassen sich auch verwenden, um die Existienz eines Datensatzes zu prüfen. Im folgenden Beispiel wird geprüft, ob eine Zeile existiert. Existiert die Zeile nicht, wird hier keine Exception ausgelöst

Beispiel

Im folgenden Report wird zunächst eine interne Tabelle mit dem neuen Schlüsselwort VALUE gefüllt. Anschließend erfolgt ein schreibender Zugriff auf eine bestimmte Zeile .

Table Expression Beispiel
Table Expression Beispiel. Der Wert der ersten Spalte des zweiten Datensatzes wurde geändert.