Для интерпретации JavaScript кода в ABAP можно воспользоваться глобальным классом: CL_JAVA_SCRIPT. Далее в примере будет наглядно показано как можно вычислять выражения используя JS функцию eval().
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
DATA: v_expression TYPE STRING. DATA: js_processor TYPE REF TO cl_java_script, js_source TYPE STRING, return_value TYPE STRING. * Создадим выражение которое необходимо вычислить v_expression = '(2+2)*2'. * Создаем объект интерпретатора Javascript js_processor = cl_java_script=>create( ). * Создаем выражение на JS CONCATENATE 'var string = ' v_expression ';' 'function evaluate_expression() ' ' { string = eval(string); ' " JS функция eval - вычисляет выражения. ' } ' 'evaluate_expression(); ' 'string; ' INTO js_source SEPARATED BY cl_abap_char_utilities=>cr_lf. " Получаем результат обработки JS кода return_value = js_processor->evaluate( js_source ). " Если произошли ошибки при выполнении покажем их IF js_processor->last_condition_code IS NOT INITIAL. WRITE: /'Error message', js_processor->last_error_message, /'Error Code', js_processor->last_condition_code. ELSE. " Выведем результат обработки JS выражения WRITE: /'Result of', v_expression ,' is: ', return_value. ENDIF. |
JS дает предлагает множество удобных функций, например в объекте Math, конечно скорость работы будет не на высоте. Возведение в степень:
1 2 3 4 |
CONCATENATE 'var x = Math.pow(10,2);' 'x; ' INTO js_source SEPARATED BY cl_abap_char_utilities=>cr_lf. |
Стандартный саповский пример использования интерпретатора программа: SJSEU и программы DEMO_JAVA*. Для изучения самого JS рекомендую книгу Д. Флэнагана «JavaScript подробное руководство».
Обновление. На официальном сайте по поводу использования JS сказано следующее:
Note
Support for the connection of JavaScript to ABAP will be discontinued in a future release, without replacement. Therefore, the CL_JAVA_SCRIPT class must no longer be used.
Начало многообещающее, материал интересный и актуальный, скорость добавления новых записей в блог — впечатляет =)
Спасибо!
P.S. Жаль блог пока выглядит анонимным =)
Пожалуйста, надеюсь материалы будут Вам полезны и в дальнейшем
А для чего нужен JS в SAP, можете дать реальные примеры?
Если необходимо внедрить что-то вроде макросов в excel например.
К примеру для реализации подобия макросов, вообще штука довольно специфическая, редко где может понадобится