Ansicht
Dokumentation

ABAPGET_REFERENCE - GET REFERENCE

ABAPGET_REFERENCE - GET REFERENCE

rdisp/max_wprun_time - Maximum work process run time   BAL_S_LOG - Application Log: Log header data  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

GET REFERENCE

Kurzreferenz



GET REFERENCE OF dobj INTO dref.

Wirkung

Diese Anweisung setzt die Referenz in der Referenzvariable dref so, dass sie auf das Datenobjekt dobj zeigt. Für dref kann angegeben werden:

  • Eine Inline-Deklaration DATA(var) oder FINAL(var). Es wird eine Datenreferenzvariable deklariert, deren statischer Typ der Datentyp von dobj ist. Der Datentyp von dobj statisch als vollständig oder als generischer Typ data erkennbar sein. Feldsymbole und Formalparameter mit anderen generischen Typen, insbesondere any, sind nicht möglich.

Die Angabe des Datenobjekts erfolgt direkt und nach den im Abschnitt Lesepositionen beschriebenen Regeln. Bei einer Offset-/Längenangabe +off(len) darf der Datentyp von dobj aber weder string noch xstring sein.

Hinweise

  • Die Anweisung GET REFERENCE ist neben dem Referenzierungsoperator REF und dem Zusatz REFERENCE INTO bei Anweisungen für interne Tabellen die einzige Möglichkeit, Stack-Referenzen zu erzeugen. Stack-Referenzen können ungültig werden, wenn das referenzierte Datenobjekt gelöscht wird.
  • Bei Anwendung auf Datenobjekte im Heap erzeugt GET REFERENCE speichererhaltende Heap-Referenzen.
  • Der Inhalt zweier mit GET REFERENCE gefüllter Referenzvariablen ist nur dann gleich, wenn außer den referenzierten Datenobjekten auch die übrigen Verwaltungsinformationen gleich sind. Beispielsweise ist eine Referenz, die direkt über die Angabe des Datenobjekts besorgt wird, ungleich zu einer Referenz, die über die Angabe eines Feldsymbols besorgt wird, wenn dieses wegen eines Castings einen anderen Datentyp hat.
  • Bei einer internen Tabelle mit Kopfzeile kann eine Datenreferenzvariable nur auf diese oder nur auf den Tabellenkörper zeigen. In der Anweisung GET REFERENCE adressiert der Name einer internen Tabelle mit Kopfzeile die Kopfzeile. Um sich auf den Tabellentyp zu beziehen, muss wie üblich [] an den Namen angehängt werden. Eine dereferenzierte Datenreferenz, der ein Tabellenkörper zugewiesen ist, verhält sich an Operandenpositionen wie eine Tabelle ohne Kopfzeile.
  • Beim Setzen von Referenzen mit GET REFERENCE wird nur am Ort der Anweisung selbst überprüft, ob auf das entsprechende Datenobjekt zugegriffen werden darf. Danach können die Referenzen beliebig weitergegeben werden und über sie kann an beliebigen Stellen auf die zugeordneten Datenobjekte zugegriffen werden. Um zu verhindern, dass außerhalb von Klassen über Referenzen auf (schreib-)geschützte und private Attribute zugegriffen wird, sollten keine Referenzen auf solche Attribute nach außen gegeben werden. Eine Konstante oder ein nicht-änderbarer Eingabeparameter kann durch Weitergabe seiner Referenz aber nie änderbar gemacht werden.

Beispiel

Erzeugung von Datenreferenzen auf die einzelnen Zeichen eines Datenobjekts text und deren Speicherung in einer internen Tabelle. Die direkte Dereferenzierung an einer Operandenposition ist möglich, da die Datenreferenz vollständig typisiert ist. Nach der Ausgabe wird auch eine alternative Implementierung mit einem Iterationsausdruck und dem Referenzierungsoperator REF gezeigt, die das gleiche Ergebnis hat.

Ausnahmen

Unbehandelbare Ausnahmen

  • Ursache: Das nach INTO angegebene Datenobjekt ist keine Referenzvariable.
    Laufzeitfehler: GET_REF_REFERENCE_EXPECTED
  • Ursache: GET REFERENCE auf einen Teilstring ist nicht erlaubt.
    Laufzeitfehler: ILLEGAL_SUBSTRING_PARAMETER








BAL Application Log Documentation   TXBHW - Original Tax Base Amount in Local Currency  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 7381 Date: 20240419 Time: 061348     sap01-206 ( 103 ms )