• Header exxsens Developer Blog

Feldsymbole (Field-Symbols) als Ersatz für Work-Areas

Die Field-Symbols in ABAP sind ein sehr mächtiges Werkzeug im Bereich der dynamischen Programmierung. Den meisten Entwicklern sind diese jedoch als Ersatz für Work-Areas bekannt bzw. sind diese dort schon vielen begegnet. Trotz dieser Bekanntheit wird dann trotzdem eine normale Work-Area verwendet.

Die Verwendung von Field-Symbols als Ersatz für die Work-Areas wird oft im Zusammenhang mit einer Performance-Optimierung herangezogen. Warum ist das so?

Bei einem normalen LOOP AT [interne Tabelle] INTO [Work-Area] wird die Zeile der internen Tabelle in die Work-Area kopiert. Möchte man anschließend noch die interne Tabelle aus der Struktur aktualisieren, muss die Work-Area noch mit dem MODIFY-Befehl zurückkopiert werden. Bei der Verwendung von Field-Symbols erfolgt dieser Kopiervorgang nicht, sondern das Field-Symbol erhält nur einen Verweis auf die Speicheradresse.

Die folgenden Coding-Beispiele sollen nun die Verwendung der Field-Symbols demonstrieren:

Deklaration

Anstelle der Deklaration mit DATA einer Work-Area werden die Field-Symbols entsprechend mit

FIELD-SYMBOLS: <ls_usr02> type usr02. 

deklariert. Der Name für das Field-Symbol muss die Spitzen-Klammern enthalten.

Loop über eine interne Tabelle

Beim Loop über eine interne Tabelle wird das Field-Symbol über das Schlüsselwort ASSIGNING zugewiesen. Anschließend kann mit diesem Field-Symbol analog einer Work-Area gearbeitet werden. Hierbei muss jedoch beachtet werden, dass eine Änderung der Daten im Field-Symbol direkt in der internen Tabelle stattfinden, da nur mit einem „Zeiger" auf den Speicherbereich gezeigt wird. Ein MODIFY auf die interne Tabelle ist NICHT notwendig.

  LOOP AT lt_usr02 ASSIGNING <ls_usr02>.

  ENDLOOP. 

READ TABLE

Wie beim Loop über eine interne Tabelle wird beim READ TABLE das Field-Symbol über das Schlüsselwort ASSIGNING zugewiesen. Das Verhalten und die Eigenschaften sind analog des Loop's.

READ TABLE lt_usr02 ASSIGNING <ls_usr02> WITH KEY bname = 'EXXSENS'. 

Zeile anfügen

Um eine Zeile an eine interne Tabelle anzufügen verwenden Sie die folgende Syntax:

APPEND INITIAL LINE TO lt_usr02 ASSIGNING <ls_usr02>.
 
employee notify - Dynamische Verteiler - Szenario ...
Fortschrittsanzeige - so einfach und so selten ver...

Empfehlen Sie uns weiter