Seit ABAP 7.40 gibt es die so genannten „Table Expressions“ in ABAP. Damit besteht nun die Möglichkeit wie in anderen modernen Programmiersprachen auf Inhalte von internen Tabellen zuzugreifen. Beispiel: LINE_EXISTS
Um z. B. zu prüfen, ob in einer Tabelle ein Eintrag vorhanden ist, wird die Expression LINE_EXISTS verwendet: IF LINE_EXISTS( LT_BUT000[ TYPE = ‘1‘ ] )
…
ENDIF.
Das oben genannte Beispiel würde in der klassischen Form so aussehen:
READ TABLE LT_BUT000 WITH KEY TYPE = ‘1‘ TRANSPORTING NO FIELDS.
IF SY-SUBRC EQ 0.
...
ENDIF.
Beispiel: Tabellenzeile lesen • LS_BUT000 = LT_BUT000[ 1 ]. (entspricht READ ... INDEX 1)
• LS_BUT000 = LT_BUT000[ TYPE = ‘1‘ ]. (entspricht READ ... WITH KEY TYPE = '1')
• LS_BUT000 = LT_BUT000[ TYPE = ‘1‘ BPKIND = ‘0001‘ ]. (entspricht READ ... WITH KEY TYPE = '1' BPKIND = '0001')
Ein wichtiger Unterschied ist, dass nach einem Tabellenzugriff über die Tabellen Expressions nicht der SY-SUBRC gesetzt wird, sondern die Exception CX_SY_ITAB_LINE_NOT_FOUND ausgelöst wird, falls ein Eintrag nicht gefunden wird.
lustigerweise sind wir gerade mitten im Updaten und genau sowas ist für mich gerade sehr interessant
Vielen Dank für die Info, ich werde es mir alles mal durchlesen und schauen, wie sich das so handlen lässt.
Gibts sonst noch bekannte Neuerungen in dem Release?
- Inline Deklaration von Variablen und Feldsymbolen
- Table Expressions (wie im obigen Beispiel angerissen)
- ABAP Channel
- SQL Expressions (ab 7.40 SP05)
- ABAP/Hana Access
- JSON Support
Interessanterweise gab es auch bereits mit 7.02 einige Erweiterungen die sich in der ABAP Welt aber noch nicht so herumgesprochen haben. Ein Beispiel dafür sind die String Expressions: http://www.cadaxo.com/content/de/cadaxo ... tions.html (in dem Blogeintrag gehe ich auf die Stringexpressions näher ein)
lg Fößleitner Johann
Folgende Benutzer bedankten sich beim Autor foessleitnerj für den Beitrag: Pyro
Die Performance und Ergebnisse von SELECTs und JOINs im Produktivsystem überprüfen?
=> SQL Cockpit http://www.cadaxo.com