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.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.