ABAPGET_REFERENCE - GET REFERENCE

Addresses (Business Address Services)   RFUMSV00 - Advance Return for Tax on Sales/Purchases  
Diese Dokumentation steht unter dem Copyright der SAP AG.

GET REFERENCE

Kurzreferenz



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 )