Anfang des Inhaltsbereichs

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

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

Die Komponenten der Struktur bilden die Properties des Proxy-Objekts, wobei die ABAP-Namen in Kleinbuchstaben übernommen werden. Unterstrukturen werden als eigene Proxy-Objekte abgebildet.

Auf die gebundenen ABAP-Strukturen und ihre Unterstrukturen kann in JavaScript nur komponentenweise, aber nicht als Ganzes zugegriffen werden. Entsprechende Anweisungen wirken sich nicht auf gebundenen ABAP-Datenobjekte aus, sehr wohl aber auf das Proxy-Objekt in JavaScript. Weiterhin kann das Proxy-Objekt in JavaScript nicht um weitere Properties oder Methoden erweitert werden.

Beispiel

report DEMO_JAVA_SCRIPT_BIND_STRUCT.

data: begin of ADDRESS,
        FIRST_NAME type STRING,
        SECOND_NAME type STRING,
        begin of STREET,
          NAME      type STRING,
          NUMBER(4) type C,
        end of STREET,
        begin of CITY,
          ZIPCODE(5) type N,
          NAME       type STRING,
        end of CITY,
      end of ADDRESS.

data SOURCE type STRING.

data JS_PROCESSOR type ref to CL_JAVA_SCRIPT.
JS_PROCESSOR = CL_JAVA_SCRIPT=>CREATE( ).

JS_PROCESSOR->BIND( exporting NAME_OBJ  = 'abap'
                              NAME_PROP = 'Adr'
                    changing  DATA      = ADDRESS ).

concatenate 'abap.Adr.first_name=   "Han";       '
            'abap.Adr.second_name=  "Solo";      '
            'abap.Adr.street.name=  "Woodway";   '
            'abap.Adr.street.number="666";       '
            'abap.Adr.city.zipcode= "64283";     '
            'abap.Adr.city.name=    "Horse Town";'
  into SOURCE separated by CL_ABAP_CHAR_UTILITIES=>CR_LF.

JS_PROCESSOR->EVALUATE( JAVA_SCRIPT = SOURCE ).

write: / ADDRESS-FIRST_NAME,   ADDRESS-SECOND_NAME,
       / ADDRESS-STREET-NAME,  ADDRESS-STREET-NUMBER,
       / ADDRESS-CITY-ZIPCODE, ADDRESS-CITY-NAME.

SOURCE = 'abap.Adr = "Hello World!";'.

JS_PROCESSOR->EVALUATE( JAVA_SCRIPT = SOURCE ).

write JS_PROCESSOR->LAST_ERROR_MESSAGE.

In diesem Beispiel wird die ABAP-Struktur ADDRESS unter dem Namen 'abap.Adr' in JavaScript zugänglich gemacht und mit Werten versorgt. Nach der ersten Ausführung der Methode EVALUATE hat die Struktur im ABAP-Programm die Werte, die in JavaScript gesetzt wurden.

Die zweite Ausführung von EVALUATE führt zu einem Fehler, da Zuweisungen zu komplexen Attributen nicht erlaubt sind.

Ende des Inhaltsbereichs