Ansicht
Dokumentation
ABAPASSIGN_RANGE - ASSIGN RANGE
RFUMSV00 - Advance Return for Tax on Sales/Purchases PERFORM Short ReferenceDiese Dokumentation steht unter dem Copyright der SAP AG.
ASSIGN, range_spec
... ${ $}
$| ${RANGE range$}.
Alternativen:
1. ... ${ $}
2. ... RANGE range
Wirkung
Die Angabe range_spec legt die Bereichsgrenzen fest, innerhalb derer dem Feldsymbol ein Speicherbereich zugewiesen werden kann. Es kann entweder keine Angabe gemacht oder der Zusatz RANGE angegeben werden.
Gleichzeitig ordnet die Anweisung ASSIGN dem Feldsymbol <fs> diese Bereichsgrenzen
zu. Wenn das Feldsymbol <fs> in einer folgenden ASSIGN-Anweisung selbst zur Spezifizierung
eines Speicherbereichs mem_area
verwendet wird, werden die zugeordneten Bereichsgrenzen zur Bestimmung der Bereichsgrenzen des Feldsymbols verwendet, an das die Zuweisung erfolgt.
Hinweis
Die einem Feldsymbol durch range_spec zugewiesenen Bereichsgrenzen gelten nur für nachfolgende
ASSIGN-Anweisungen. In anderen Anweisungen gelten mit Ausnahme von ADD UNTIL die
allgemeinen Regeln.
Alternative 1
... ${ $}
Wirkung
Falls für range_spec keine Angabe gemacht wird, werden die Bereichsgrenzen wie folgt festgelegt:
- Falls für dobj in mem_area ein elementares Datenobjekt angegeben ist, bestimmt der Speicherbereich dieses Datenobjekts die Bereichsgrenzen.
- Falls für dobj in mem_area ein Feldsymbol angegeben ist, dem ein elementares Datenobjekt zugewiesen ist, übernimmt das Feldsymbol <fs> der aktuellen Anweisung die diesem Feldsymbol zugeordneten Bereichsgrenzen.
- Falls für dobj in mem_area eine Struktur oder ein Feldsymbol angegeben ist, das auf eine Struktur zeigt, wird überprüft, ob die Struktur ein zeichenartiges Anfangsstück (bis zur ersten Ausrichtungslücke) hat, und dieses bestimmt die Bereichsgrenzen.
Falls diese Bereichsgrenzen überschritten werden, ist bei der statischen Variante von mem_area nach der ASSIGN-Anweisung kein Speicherbereich zugewiesen (der
Prädikatausdruck
<fs> IS ASSIGNED ist falsch), während bei den dynamischen Varianten sy-subrc auf 4 gesetzt ist.
In der ersten ASSIGN-Anweisung werden fs1> die Bereichsgrenzen des Datenobjekts text zugeordnet. In der zweiten ASSIGN-Anweisung übernimmt fs2> diese Grenzen. Ab dem sechsten Schleifendurchlauf wird versucht, fs2> einen größeren Speicherbereich zuzuordnen, wodurch der logische Ausdruck hinter IF nicht mehr wahr ist.
In der ersten ASSIGN-Anweisung werden fs1> die Bereichsgrenzen des Datenobjekts text
zugeordnet. In der zweiten ASSIGN-Anweisung übernimmt fs2> diese Grenzen. Ab dem
sechsten Schleifendurchlauf wird versucht, fs2> einen größeren Speicherbereich zuzuordnen, wodurch der logische Ausdruck hinter IF nicht mehr wahr ist.
Alternative 2
... RANGE range
Wirkung
Falls in range_spec der Zusatz RANGE angegeben ist, werden die Bereichsgrenzen durch den Datenbereich eines Datenobjekts range festgelegt. Für range muss ein Datenobjekt beliebigen Datentyps angegeben werden, das die Bereichsgrenzen umfasst, die sich in Unicode-Programmen ergeben, wenn der Zusatz RANGE nicht angegeben ist (siehe oben). Falls zur Laufzeit festgestellt wird, dass range diese Bereichsgrenzen nicht umfasst, kommt es zu einer behandelbaren Ausnahme.
Bei Verwendung des RANGE-Zusatzes können dem Feldsymbol nur Teilbereiche des Datenobjekts range zugewiesen werden. Falls diese Bereichsgrenzen überschritten werden, ist bei der statischen Variante von mem_area nach der ASSIGN-Anweisung kein Speicherbereich zugewiesen (der Prädikatausdruck <fs> IS ASSIGNED ist falsch), während bei den dynamischen Varianten sy-subrc auf 4 gesetzt ist.
Der Zusatz RANGE kann nicht zusammen mit dem Zusatz CASTING TYPE HANDLE und nicht bei der Zuweisung von
Tabellenausdrücken verwendet werden.
Hinweise
- Ein RANGE-Zusatz hebt nicht die typspezifischen Regeln für Teilfeldzugriffe auf. Damit ein Teilfeldzugriff über die Feldgrenzen eines angegebenen Datenobjekts dobj hinaus möglich ist, muss der Teilfeldzugriff prinzipiell möglich sein. Insbesondere kann nie ein Teilfeldzugriff über die Grenzen einer Struktur hinweg stattfinden, da dann nicht auf das zeichenartige Anfangsstück zugegriffen würde.
- Wenn für range eine Struktur angegeben ist, die
dynamische
Datenobjekte enthält, tragen diese immer nur mit der internen Referenz zum Datenbereich der
Struktur bei. Der eigentliche Datenbereich der dynamischen Datenobjekte ist ausgelagert und spielt für RANGE keine Rolle. Dies gilt auch für Unterstrukturen, die als
Boxed Components deklariert sind.
Beispiel
Die Struktur struc ist aus zehn Komponenten col1_1, col2_1, ..., col1_5,
col2_5 aufgebaut. Die ASSIGN-Anweisung weist dem strukturiert typisierten Feldsymbol sub>
nacheinander jeweils den Speicherbereich zweier benachbarter Komponenten zu, wobei der Speicherbereich
durch den gemeinsamen Namen der ersten beiden Komponenten comp1 in der Struktur struc
und die Angabe von INCREMENT bestimmt wird. Ohne den RANGE-Zusatz würde die WHILE-Schleife
nur ein einziges Mal durchlaufen, da nur auf den Speicherbereich von struc-comp1 zugegriffen
werden kann. Mit dem RANGE-Zusatz wird die Schleife fünfmal durchlaufen. Nach der Zuweisung kann auf die Komponenten des Feldsymbols zugegriffen werden.
rdisp/max_wprun_time - Maximum work process run time BAL Application Log Documentation
Diese Dokumentation steht unter dem Copyright der SAP AG.
Length: 8294 Date: 20240329 Time: 011114 sap01-206 ( 157 ms )