Ansicht
Dokumentation
ABAPGET_REFERENCE - GET REFERENCE
rdisp/max_wprun_time - Maximum work process run time BAL_S_LOG - Application Log: Log header dataDiese Dokumentation steht unter dem Copyright der SAP AG.
GET REFERENCE
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 vorhandene Datenreferenzvariable. Der statische Typ der Datenreferenzvariablen muss nach den Zuweisungsregeln für Referenzvariablen allgemeiner oder gleich zum Datentyp von dobj sein.
- 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.
- Eine mit GET REFERENCE besorgte Datenreferenz auf ein Datenobjekt im Shared Objects Memory kann auch in einer abgeschlossenen Gebietsinstanzversion abgelegt werden. Dabei sind die beim Zusatz AREA HANDLE der Anweisung CREATE DATA beschriebenen Einschränkungen zu beachten.
- Der Referenzierungsoperator
REF wirkt wie die Anweisung GET REFERENCE und kann an
allgemeinen Ausdruckspositionen verwendet 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 )