ASSIGN
From Sapwiki
→Nächstältere Version | Nächstjüngere Version←
Mit dem ABAP-Befehl ASSIGN kann ein Feld einem Feldsymbol zugewiesen werden. Damit enthält das Feldsymbol immer den Wert des zugewiesenen Feldes.
Inhaltsverzeichnis |
Statisches Assign
Der Name des Feldes wird explizit angegeben:
data feld(10) type c value 'INHALT'. field-symbols <f>. assign feld to <f>.
Das Feldsymbol enthält den Inhalt von Feld FELD, nämlich 'INHALT'.
Assign von Zeilen einer internen Tabelle
Über ein Assign lassen sich auch Änderungen an internen Tabellen schneller vornehmen als mit einem klassischen MODIFY. (Siehe dazu auch Transaktion SE30, "Tipps und Tricks".)
LOOP AT ITAB ASSIGNING <WA>.
I = SY-TABIX MOD 2.
IF I = 0.
<WA>-FLAG = 'X'.
ENDIF.
ENDLOOP.
Auch READ ... ASSIGNING ... ist möglich.
Dynamisches Assign
Der Name des Feldes wird zur Laufzeit bestimmt.
data: feld(10) type c value 'INHALT'.
feldname(10) type c.
field-symbols <f>.
Feldname = 'FELD'.
assign (feldname) to <f>.
Das Feldsymbol enthält den Inhalt von Feld FELD, nämlich 'INHALT'.
Dynamisches Assign von Feldern aus anderen Programmen
Mit dem dynamischen ASSIGN lassen sich z.B. auch Werte aus anderen Programmen in einem Userexit verwenden, die nicht in der Schnittstelle enthalten sind.
Aus der SAP-Hilfe:
Warnung: Diese Möglichkeit darf nur von Spezialisten zum internen Gebrauch verwendet werden. Inkompatible Änderungen bzw. Weiterentwicklungen sind jederzeit und ohne Warnung oder Hinweis möglich.
Beispiel:
Wir wollen im Exit EXIT_SAPLATPC_001 einen Wert aus der Struktur VBAK lesen:
CONSTANTS: my_c_vbak(14) type c value '(SAPMV45A)VBAK'. FIELD-SYMBOLS: <fs_vbak> type vbak. * Zuweisen ASSIGN (my_c_vbak) to <fs_vbak>. * Jetzt haben wir alle Werte der VBAK zur Verfügung IF <fs_vbak>-vkbur = '03'. ... ENDIF.
Anmerkung: Auch im ABAP-Debugger lassen sich Feldwerte (zuvor) aufgerufener Programme in der Form (SAPMV45A)VBAK anzeigen. Dies mag hilfreich sein, um zu ermitteln, ob ein dynamisches Assign an einer bestimmten Stelle hilfreich ist.

