Entering content frameThis graphic is explained in the accompanying text Binding to ABAP Type P Locate the document in its SAP Library structure

Example

report DEMO_JAVA_SCRIPT_BIND_P.

data PACK1 type P decimals 3 value '3.142'.
data PACK2 type P decimals 3 value '2.718'.

data SOURCE type STRING.
data RETURN_VALUE 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 = 'var1'
                    changing  DATA      = PACK1 ).

JS_PROCESSOR->BIND( exporting NAME_OBJ  = 'abap'
                              NAME_PROP = 'var2'
                    changing  DATA      = PACK2 ).

SOURCE = 'result = abap.var1 + abap.var2;'.
RETURN_VALUE = JS_PROCESSOR->EVALUATE( SOURCE ).

write / RETURN_VALUE.

SOURCE = 'result = 1*abap.var1 + Number(abap.var2);'.
RETURN_VALUE = JS_PROCESSOR->EVALUATE( SOURCE ).

write / RETURN_VALUE.

The two ABAP variables PACK1 and PACK2 are made accessible as properties of the Top-Level Binding object 'abap' in the JavaScript context. Note that these numerical ABAP types are handled as strings in JavaScript. For example, the operator '+' is overloaded in JavaScript and handles PACK1 and PACK2, firstly, as character strings and, secondly, only after being multiplied by 1 or after using the JavaScript 'Number' function as numerical values. Nevertheless, values that cannot be displayed as a number must not be assigned to numerical ABAP types in JavaScript.

Example

report DEMO_JAVA_SCRIPT_BIND_P_ERROR.

data PACK type P decimals 3.

data SOURCE type STRING.
data RETURN_VALUE type STRING.

data JS_PROCESSOR type ref to CL_JAVA_SCRIPT.

data ERROR_REF type ref to CX_SY_CONVERSION_NO_NUMBER.
data ERR_TEXT type STRING.

JS_PROCESSOR = CL_JAVA_SCRIPT=>CREATE( ).

JS_PROCESSOR->BIND( exporting NAME_OBJ  = 'abap'
                              NAME_PROP = 'js_var'
                    changing  DATA      = PACK ).

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

try.
    RETURN_VALUE = JS_PROCESSOR->EVALUATE( SOURCE ).
  catch CX_SY_CONVERSION_NO_NUMBER into ERROR_REF.
    ERR_TEXT = ERROR_REF->GET_TEXT( ).
    write ERR_TEXT.
endtry.

This example results in the exception CX_SY_CONVERSION_NO_NUMBER, which is assigned the ABAP runtime error CONVT_NO_NUMBER, since the ABAP variable PACK is to be assigned a non-numerical value in the JavaScript program.

 

 

Leaving content frame