Ansicht
Dokumentation

ABAPASSIGN_MEM_AREA_WRITABLE_EXP - ASSIGN MEM AREA WRITABLE EXP

ABAPASSIGN_MEM_AREA_WRITABLE_EXP - ASSIGN MEM AREA WRITABLE EXP

BAL_S_LOG - Application Log: Log header data   Addresses (Business Address Services)  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

ASSIGN, writable_exp

Kurzreferenz



... NEW class( ... )->attr $| CAST type( ... )->dobj
  $| table_exp  ...


Alternativen:

1. ... NEW class( ... )->attr $| CAST type( ... )->dobj

2. ... table_exp

Wirkung

Die Operandenposition hinter ASSIGN ist eine Ergebnisposition, an der schreibbare Ausdrücke angegeben werden können.

Hinweise

  • Für den Speicherbereich können schreibbare Ausdrücke aber keine anderen Ausdrücke angegeben werden, da nur diese Ausdrücke ein nicht temporäres Ergebnis haben können. Eine Zuweisung eines temporären Datenobjekts an ein Feldsymbol hätte keinen Sinn.
  • Schreibbare Ausdrücke können in einem Datenobjekt name nicht angegeben werden.

Alternative 1

... NEW class( ... )->attr  $| CAST type( ... )->dobj


Wirkung

Diese Alternative der Angabe des Speicherbereichs mem_area der Anweisung ASSIGN weist einem Feldsymbol das Resultat des folgenden Konstruktorausdrucks:

Es gelten die gleichen Regeln wie bei der statischen Angabe des Speicherbereichs, es kann aber keine Offset-/Längenangabe gemacht werden.

Hinweise

  • Eine Zuweisung eines Attributs attr eines mit NEW erzeugten Objekts an ein Feldsymbol erhält dieses am Leben, solange das Feldsymbol auf das Attribut zeigt.
  • Bei dieser Variante setzt nicht die Anweisung ASSIGN sondern der verwendete Konstruktorausdruck den Rückgabewert sy-subrc.
  • Der Instanzierungsoperator NEW setzt bei erfolgreicher Objekterzeugung den Rückgabewert sy-subrc auf den Wert 0.

  • Der Casting-Operator CAST setzt nicht den Rückgabewert sy-subrc.

Beispiel

Konstruktorausdruck mit NEW in der Angabe des Speicherbereichs der Anweisung ASSIGN. Durch die Zuweisung des Attributs attr an ein Feldsymbol bleibt das Objekt erhalten.

Konstruktorausdruck mit CAST in der Angabe des Speicherbereichs von ASSIGN-Anweisungen.

Alternative 2

... table_exp


Wirkung

Diese Alternative der Angabe des Speicherbereichs mem_area der Anweisung ASSIGN weist dem Feldsymbol das Resultat des Tabellenausdrucks table_exp oder einer Tabellenausdrucksverkettung zu. Das Resultat eines Tabellenausdrucks ist an diesen Positionen immer ein temporäres Feldsymbol.

  • Wenn ein einzelner Tabellenausdruck angegeben wird, oder eine Verkettung, deren letzte Stelle ein Tabellenausdruck ist, wird die gesamte gefundene Zeile dem Feldsymbol zugewiesen.
  • Wenn eine Verkettung angegeben ist, deren letzter Stelle eine Strukturkomponente hinter einem Strukturkomponenten-Selektor ist, wird diese Komponente dem Feldsymbol zugewiesen. Für die Strukturkomponente kann hier aber keine Offset-/Längenangabe gemacht werden.

Bei dieser Variante setzt die Anweisung ASSIGN den Rückgabewert sy-subrc:

  • Wenn die angegebene Zeile gefunden wird, wird sy-subrc auf 0 gesetzt.
  • Wenn die Zeile nicht gefunden wird, wird sy-subrc auf 4 gesetzt, außer wenn bei einer Binärsuche in einer sortierten Tabelle das Tabellenende erreicht wurde. Dann wird sy-subrc auf 8 gesetzt.

Im Gegensatz zu sonstigen Verwendungen von Tabellenausdrücken wird hier auch das Systemfeld sy-tabix wie bei einer entsprechenden Anweisung READ TABLE gesetzt.

Bei nicht erfolgreicher Zuweisung behält das Feldsymbol den vorhergehenden Zustand. Die Auswertung des Prädikatausdrucks <fs> IS ASSIGNED ist also nicht ausreichend, sondern es muss sy-subrc überprüft werden.

Bei dieser Variante der Anweisung ASSIGN kann der Zusatz CASTING nur bei der Zuweisung an ein vorhandenes Feldsymbol, nicht bei einer Inline-Deklaration, und nur alleinstehend ohne weitere Zusätze angegeben werden. Der Zusatz RANGE kann nicht angegeben werden.

Hinweise

  • Insbesondere werden der Wert von sy-subrc und sy-tabix wie bei der Anweisung READ TABLE gesetzt und

Anders als bei READ TABLE können über Verkettungen auch Komponenten von gelesenen Zeilen oder Zeilen von geschachtelten internen Tabellen zugewiesen werden.
  • Die Konstruktoroperatoren VALUE und REF zur Steuerung des Resultats des Tabellenausdrucks können hier nicht verwendet werden.
  • Wenn die angegebene Zeile nicht gefunden wird, kommt es nicht wie bei sonstigen Verwendungen von Tabellenausdrücken zu einer Ausnahme.

Beispiel

Dieses Beispiel hat die gleiche Funktionalität wie das Beispiel zu READ TABLE ... ASSIGNING .... Hier ist die READ-Anweisung durch eine ASSIGN-Anweisung ersetzt, und es wird direkt die benötigte Komponente zugewiesen.






RFUMSV00 - Advance Return for Tax on Sales/Purchases   RFUMSV00 - Advance Return for Tax on Sales/Purchases  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 8958 Date: 20240427 Time: 063231     sap01-206 ( 114 ms )