ABAPGET_REFERENCE - GET REFERENCE
Addresses (Business Address Services) RFUMSV00 - Advance Return for Tax on Sales/PurchasesDiese Dokumentation steht unter dem Copyright der SAP AG.
GET REFERENCE
Syntax
GET REFERENCE OF dobj INTO dref.
Wirkung
Diese Anweisung besorgt sich eine Referenz auf ein Datenobjekt dobj und stellt diese in die Referenzvariable dref. Die Referenzvariable dref muss als Datenreferenzvariable deklariert sein. Der statische Typ der Datenreferenzvariablen muss nach den Konvertierungsregeln für Referenzvariablen allgemeiner oder gleich zum Datentyp von dobj sein.
Die Angabe des Datenobjekts erfolgt direkt und nach den im AbschnittDatenobjektein Operandenpositionen beschriebenen Regeln. Bei einer Offset-/Längenangabe darf der Datentyp von dobj hier aber weder string noch xstring sein.
Hinweise
- Die Anweisung GET REFERENCE ist neben dem Zusatz REFERENCEINTO bei Anweisungen für interne Tabellen die einzige Möglichkeit,unselbstständigeDatenreferenzen zu erzeugen. Unselbstständige Datenreferenzen können ungültig werden, wenn das referenzierte Datenobjekt gelöscht wird.
- Der Inhalt zweier mit GET REFERENCE gefüllter Referenzvariablen ist nur dann gleich, wennaußer den referenzierten Datenobjekten auch die übrigen Verwaltungsinformationen gleichsind. 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 einesCastings einen anderen Datentyp hat.
- Bei einer internen Tabelle mit Kopfzeile kann eine Datenreferenzvariable nur auf diese oder nur auf denTabellenkörperzeigen. In der Anweisung GET REFERENCE adressiert der Name einer internen Tabelle mit Kopfzeiledie Kopfzeile. Um den Tabellenkörper anzusprechen, muss wie üblich [] an den Namenangehängt werden. Eine dereferenzierte Datenreferenz, der ein Tabellenkörper zugewiesen ist, verhält sich an Operandenpositionen wie eine Tabelle ohne Kopfzeile.
- Der Kontext in dem eine Datenreferenz mit GET REFERENCE abgezogen wird, bestimmt, ob das referenzierteDatenobjekt über die Referenz geändert werden kann oder nicht. Wenn das Datenobjekt imKontext von GET REFERENCE änderbar ist, kann es an beliebigen Stellen auch überdie Referenz geändert werden. Beispielsweise kann in einer Methode eine Referenz auf ein privatesAttribut einer Klasse abgezogen und nach außen gegeben werden. Da das Attribut in der Klasseänderbar ist, kann es dann auch außerhalb der Klasse über die Referenz geändertwerden. Umgekehrt kann beispielsweise eine Konstante oder ein nicht-änderbarer Eingabeparameter durch Weitergabe seiner Referenz nicht änderbar gemacht werden.
- Seit Release 7.0 kann eine mit GET REFERENCE besorgte Datenreferenz auf ein Datenobjekt imShared Objects Memory auch in einer abgeschlossenenGebietsinstanzversionabgelegt werden. Dabei sind die beim Zusatz AREAHANDLE der Anweisung CREATE DATA beschriebenen Einschränkungen zu beachten.
Beispiel
Erzeugung von Datenreferenzen auf die einzelnen Zeichen eines Datenobjekts text und deren Speicherungin einer internen Tabelle. Die direkte Dereferenzierung an einer Operandenposition ist möglich, da die Datenreferenz vollständig typisiert ist.
TYPES c1 TYPE c LENGTH 1.
DATA: dref TYPE REF TO c1,
dref_tab LIKE TABLE OF dref.
DATA: text TYPE c LENGTH 10 VALUE '0123456789',
off TYPE i.
DO 10 TIMES.
off = sy-index - 1.
GET REFERENCE OF text+off(1) INTO dref.
APPEND dref TO dref_tab.
ENDDO.
LOOP AT dref_tab INTO dref.
WRITE / dref->*.
ENDLOOP.
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: GET_REF_SUBSTRING_NOT_ALLOWED
General Data in Customer Master ABAP Short Reference
Diese Dokumentation steht unter dem Copyright der SAP AG.
Length: 6354 Date: 20120526 Time: 212313 triton ( 183 ms )






