Ansicht
Dokumentation

ABAPASSIGN_MEM_AREA_STATIC_DOBJ - ASSIGN MEM AREA STATIC DOBJ

ABAPASSIGN_MEM_AREA_STATIC_DOBJ - ASSIGN MEM AREA STATIC DOBJ

Fill RESBD Structure from EBP Component Structure   CL_GUI_FRONTEND_SERVICES - Frontend Services  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

ASSIGN, static_dobj

Kurzreferenz



... dobj$[+off$]$[(len)$]  ...

Wirkung

In der statischen Variante für den Speicherbereich kann ein Datenobjekt dobj mit einer optionalen Offset-/Längenangabe +off(len) nach den im Abschnitt Datenobjekte in Operandenpositionen beschriebenen Regeln angegeben werden mit folgender Ausnahme: Eine mit dem Dereferenzierungsoperator ->* dereferenzierte Datenreferenz gehört hier zu den dynamischen Angaben. Die Angabe von dobj durch ein Feldsymbol gehört dagegen zur statischen Variante.

Der Speicherbereich wird wie folgt durch die Offset-/Längenangabe +off(len) bestimmt:

  • Wenn keine Offset-/Längenangabe gemacht wird, entspricht der zugewiesene Speicherbereich genau dem Speicherbereich des Datenobjekts. Dem Feldsymbol wird das gesamte Datenobjekt dobj zugewiesen und Anweisungen, die das Feldsymbol an Operandenpositionen enthalten, arbeiten mit dem Datenobjekt.
  • Wenn eine Offset-/Längenangabe gemacht wird, wird der Speicherbereich aus der Speicheradresse des Datenobjekts und den Offset-/Längenangaben bestimmt. Es gelten die allgemeinen Regeln des Teilfeldzugriffs. Wenn diese erfüllt sind kann darüber hinaus Speicher außerhalb der Feldgrenzen von dobj adressiert werden. Der adressierbare Speicher richtet sich nach der Angabe range_spec. Falls ein Offset off ohne Länge len angegeben ist, wird für len implizit die Länge des Datenobjekts dobj verwendet. Wenn für dobj ein Feldsymbol angegeben ist, dem bereits ein Speicherbereich zugewiesen ist, kann der Inhalt der Offsetangabe negativ sein, so lange der in range_spec angegebene Bereich nicht verlassen wird. Bei einer Offset-/Längenangabe gelten folgende Einschränkungen:

  • Der Datentyp von dobj darf weder string noch xstring sein, wodurch len in keinem Fall kleiner gleich Null sein darf.

  • Falls für dobj der Name eines Datenobjekts angegeben ist und kein expliziter RANGE-Zusatz verwendet wird, kann kein Offset off ohne Länge len angegeben werden wenn. Falls für dobj der Name eines Feldsymbols angegeben ist, muss dessen Datentyp flach und elementar sein, wenn ein Offset off ohne Länge len angegeben wird.

Wenn die Zuweisung nicht erfolgreich ist, ist dem Feldsymbol nach der ASSIGN-Anweisung kein Speicherbereich zugewiesen. Der Rückgabewert sy-subrc wird bei der statischen Variante nicht gesetzt. Statt dessen kann der Prädikatausdruck <fs> IS ASSIGNED ausgewertet werden.

Bei einer Inline-Deklaration des Feldsymbols mit FIELD-SYMBOL(<fs>) wird dieses genau mit dem Datentyp typisiert, der statisch für mem_area festgestellt werden kann. Wenn mem_area ein generisch typisiertes Feldsymbol oder ein generisch typisierter Formalparameter ist, wird der generische Typ verwendet.

Hinweise

  • Achten Sie darauf, nach der statischen Variante nicht aus Versehen das Systemfeld sy-subrc auszuwerten. Der Wert des Systemfelds ist in diesem Fall immer der, den es vor Ausführung der Anweisung ASSIGN hatte und sagt nichts über den Erfolg dieser Anweisung aus.
  • Auch die statische Variante ist dahingehend dynamisch, dass die Offset-/Längenangaben dynamisch sein können. Dynamische Offset-/Längenangaben führen aber nicht dazu, dass das Systemfeld sy-subrc gesetzt wird.
  • Wenn für dobj ein generisch typisiertes Feldsymbol oder ein generisch typisierter Formalparameter angegeben ist, bestimmt dessen aktueller Typ zur Laufzeit das Verhalten, beispielsweise ob eine Offset-/Längenangabe möglich ist oder nicht.

Zuweisung des Speicherbereichs der einzelnen Zeichen eines Datenobjekts text an ein Feldsymbol char>.

Zuweisung des Speicherbereichs der einzelnen Zeichen eines Datenobjekts text an ein Feldsymbol char>.

Ein Feldsymbol fs1> zeigt auf die Komponente col1 der Struktur struct. Bei der ersten Zuweisung von fs1> an ein Feldsymbol fs2> wird eine Offset- ohne Längenangabe gemacht und deshalb implizit die Länge 10 der Komponente col1 verwendet. Die Zuweisung schlägt fehl, da der zugewiesene Speicherbereich außerhalb des erlaubten Bereichs liegt. Bei der zweiten Zuweisung wird der erlaubte Speicherbereich mit dem Zusatz RANGE auf die gesamte Struktur ausgedehnt und die Zuweisung ist erfolgreich.

Ein Feldsymbol fs1> zeigt auf die Komponente col1 der Struktur struct. Bei der ersten Zuweisung von fs1> an ein Feldsymbol fs2> wird eine Offset- ohne Längenangabe gemacht und deshalb implizit die Länge 10 der Komponente col1 verwendet. Die Zuweisung schlägt fehl, da der zugewiesene Speicherbereich außerhalb des erlaubten Bereichs liegt. Bei der zweiten Zuweisung wird der erlaubte Speicherbereich mit dem Zusatz RANGE auf die gesamte Struktur ausgedehnt und die Zuweisung ist erfolgreich.






General Material Data   ROGBILLS - Synchronize billing plans  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 6971 Date: 20240424 Time: 023456     sap01-206 ( 111 ms )