ABAPASSIGN_LOCAL_COPY - ASSIGN LOCAL COPY
General Material Data CPI1466 during BackupDiese Dokumentation steht unter dem Copyright der SAP AG.
ASSIGN LOCAL COPY
Obsolete Syntax
ASSIGN LOCAL COPY
OF { {[INITIAL] mem_area}
| {INITIAL LINE OF {itab|(itab_name)}}
| {MAIN TABLE FIELD (name)} }
TO <fs> casting_spec.
Zusätze:
1. ... mem_area
2. ... MAIN TABLE FIELD (name)
3. ... casting_spec
Wirkung
Obsolete Erzeugung eines lokalen Datenobjekts. Diese Variante der Anweisung ASSIGN ist nur inUnterprogrammen undFunktionsbausteinen möglich. DasFeldsymbol <fs> muss lokal in der Prozedur deklariert sein.
Die Anweisung ASSIGN LOCAL COPY weist wie die normale Anweisung ASSIGNdem Feldsymbol <fs> einen Speicherbereich mem_area zu. Im Gegensatz zur normalenASSIGN-Anweisung referenziert das Feldsymbol nach erfolgreicher Zuweisung aber nicht den in mem_area spezifizierten Speicherbereich. Stattdessen wird im lokalen Datenbereich der Prozedur einanonymesDatenobjekt erzeugt. Nach erfolgreicher Ausführung der Anweisung zeigt das Feldsymbol auf das neue Datenobjekt. Das neue Datenobjekt wird wie folgt behandelt:
- Die Größe des Speicherbereichs des neuen Datenobjekts richtet sich entweder nach den Angaben in mem_area oder bei der Angabe von LINE OF nach demZeilentyp einer internen Tabelle. Die interne Tabelle kann direkt als itab oder als Inhalt einesflachen zeichenartigen Feldes itab_name angegeben werden.
- Der Datentyp, mit dem das neu erzeugte Datenobjekt behandelt wird, richtet sich wie beim normalen ASSIGN nach den Angaben in casting_spec.
- Der initiale Inhalt des neuen Datenobjekts wird bei Angabe von mem_area ohne den Zusatz INITIAL aus dem in mem_area angegebenen Speicherbereich kopiert. Ansonsten ist er typgerecht initialisiert.
Die Einschränkung des Speicherbereichs range_spec,die in der normalen ASSIGN-Anweisung implizit und explizit erfolgen kann, erfolgt ausschließlich implizit nach den gleichen Regeln wie beim normalen ASSIGN.
Hinweis
Die Erzeugung eines lokalen Datenobjekts mit der Anweisung ASSIGN LOCAL COPY wird seit Release4.6 von der Anweisung CREATE DATA mit nachfolgender Dereferenzierung in der normalen Anweisung ASSIGN abgelöst.
Zusatz 1
... mem_area
Syntax von mem_area
... { dobj[+off][(len)]
| (name)
| oref->(attr_name)
| {class|(class_name)}=>{attr|(attr_name)}
| dref->* } ...
Wirkung
Die Angaben in mem_area sind eine Untermenge derAngaben beim normalen ASSIGN und haben die gleiche Funktion mit folgenden Einschränkungen:
- Falls der Zusatz INITIAL vor mem_area verwendet wird, muss das Datenobjekt name zeichenartig undflach sein.
- Falls der Zusatz INITIAL vor mem_area verwendet wird, darf die Datenreferenz dref bei Verwendung des Dereferenzierungsoperators ->* nichtgenerisch typisiert sein.
Zusatz 2
... MAIN TABLE FIELD (name)
Dieser Zusatz ist nur zum internen Gebrauch bestimmt.
Er darf nicht in Anwendungsprogrammen verwendet werden.
Wirkung
Dieser Zusatz ist eine spezielle Form der Angabe des Speicherbereichs mem_area, die nur in dieser Variante der Anweisung ASSIGN möglich ist. Er wirktwie die Angabe TABLE FIELD (name) beim normalen ASSIGN mit dem Unterschied, dass der Suchbereich auf die aktuelleHauptprogrammgruppe beschränkt ist.
Zusatz 3
... casting_spec
Wirkung
Die Angabe von casting_spec entspricht der beim normalen ASSIGNmit der Einschränkung, dass bei Verwendung des Zusatzes INITIAL vor mem_area undbei der Angabe einer internen Tabelle keine expliziten Angaben gemacht werden können. Das Feldsymbolübernimmt dann also den Datentyp des Datenobjekts in mem_area bzw. den Zeilentyp der internen Tabelle.
Beispiel
Eine typische Verwendung der Anweisung ASSIGN LOCAL COPY war vor Release 4.6 die Erzeugung einer lokalen Kopie eines globalen Datenobjekts.
DATA g_dobj TYPE i.
...
CLEAR g_dobj.
PERFORM subroutine1.
...
FORM subroutine1.
FIELD-SYMBOLS <l_dobj> TYPE ANY.
ASSIGN LOCAL COPY OF g_dobj TO <l_dobj>.
<l_dobj> = <l_dobj> + 1.
WRITE: / g_dobj, <l_dobj>.
ENDFORM.
Das folgende Unterprogramm zeigt, wie die gleiche Funktionalität seit Release 4.6 allgemein gültig mit einer Datenreferenz implementiert werden kann.
DATA g_dobj TYPE i.
...
CLEAR g_dobj.
PERFORM subroutine2.
...
FORM subroutine2.
DATA dref TYPE REF TO data.
FIELD-SYMBOLS <l_dobj> TYPE ANY.
CREATE DATA dref LIKE g_dobj.
ASSIGN dref->* TO <l_dobj>.
<l_dobj> = g_dobj.
<l_dobj> = <l_dobj> + 1.
WRITE: / g_dobj, <l_dobj>.
ENDFORM.
General Material Data BAL_S_LOG - Application Log: Log header data
Diese Dokumentation steht unter dem Copyright der SAP AG.
Length: 8203 Date: 20120526 Time: 231727 triton ( 211 ms )






