Anfang des Inhaltsbereichs

Diese Grafik wird im zugehörigen Text erklärt Verbindung zu Datenreferenzen  Dokument im Navigationsbaum lokalisieren

Eine ABAP-Datenreferenz wird in JavaScript als Proxy-Objekt der vordefinierten Proxy-Klasse SAPAbapDrefClass abgebildet. Der JavaScript-Referenz kann über den Parameter NAME_PROP der Methode BIND ein (case-sensitiver) Name gegeben werden.

Wenn die ABAP-Datenreferenz nicht initial ist, also auf ein Datenobjekt zeigt, hat das Proxy-Objekt genau ein Property 'data', über die auf das referenzierte ABAP-Datenobjekt zugegriffen werden kann (Dereferenzierung). Zuweisungen an die Komponente 'data' ändern den Inhalt des referenzierten Datenobjekts in ABAP. Wenn die ABAP-Datenreferenz mit einem strukturierten ABAP-Datentyp typisiert ist, hat die Property 'data' entsprechende Unterproperties mit den Namen der ABAP-Komponenten in Kleinbuchstaben. Wenn die ABAP-Datenreferenz initial ist, gibt es das Property 'data' nicht.

Das Proxy-Objekt hat eine Methode 'notInitial' ohne Eingabeparameter, die einen booleschen Wert zurückgibt. Der Rückgabewert ist wahr, wenn die ABAP-Datenreferenz auf ein Datenobjekt zeigt und falsch, wenn die ABAP-Datenreferenz initial ist.

Das Proxy-Objekt kann in JavaScript nicht um weitere Properties oder Methoden erweitert werden. Bei Zuweisungen an gebundene Datenreferenzen in JavaScript wird die JavaScript-Verarbeitung abgebrochen.

Beispiel

report DEMO_JAVA_SCRIPT_BIND_DREF.

types: begin of T_STRUCT,
         TEXT type STRING,
      end of T_STRUCT.

data DREF type ref to T_STRUCT.
data STRUCT type T_STRUCT.

data SOURCE type STRING.

data JS_PROCESSOR type ref to CL_JAVA_SCRIPT.

STRUCT-TEXT = 'Hello'.
get reference of STRUCT into DREF.

JS_PROCESSOR = CL_JAVA_SCRIPT=>CREATE( ).

JS_PROCESSOR->BIND( exporting NAME_OBJ  = 'abap'
                              NAME_PROP = 'Dref'
                    changing  DATA      = DREF ).

concatenate  'if ( abap.Dref.notInitial() )        '
             '{ abap.Dref.data.text += " World!"; }'
             INTO source.

JS_PROCESSOR->EVALUATE( JAVA_SCRIPT = SOURCE ).

write STRUCT-TEXT.

Dieses Beispiel zeigt, wie in JavaScript auf eine Komponente einer strukturiert typisierten Datenreferenz zugegriffen werden kann. Die Methode notInitial überprüft, ob die Datenreferenz auf ein Datenobjekt zeigt.

Ende des Inhaltsbereichs