使用 CL_JAVA_SCRIPT 从 ABAP 执行 jQuery 文件 [英] Execute jQuery file from ABAP using CL_JAVA_SCRIPT

查看:24
本文介绍了使用 CL_JAVA_SCRIPT 从 ABAP 执行 jQuery 文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在 abap 中使用 CL_JAVA_SCRIPT 来执行一个 javascript 文件:我从 url 获取的 jQuery.js.这是我的代码:

I want to use CL_JAVA_SCRIPT in abap to execute a javascript file : jQuery.js which i get from url. And this is my code :

REPORT ZCLIENT.  
DATA: LV_CLIENT TYPE REF TO IF_HTTP_CLIENT.  
DATA:lv_URL TYPE STRING .  
lv_URL  = 'https://resources/jquery.js'.  
* Create client  
   CALL METHOD CL_HTTP_CLIENT=>CREATE_BY_URL  
     EXPORTING  
       URL                = lv_URL  
     IMPORTING  
       CLIENT             = LV_CLIENT  
     EXCEPTIONS  
       ARGUMENT_NOT_FOUND = 1  
       PLUGIN_NOT_ACTIVE  = 2  
       INTERNAL_ERROR     = 3  
       OTHERS             = 4.  
   IF SY-SUBRC NE 0.  
     MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO  
       WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.  
   ENDIF.  
*   LV_CLIENT->REQUEST->SET_CONTENT_TYPE(  
*       EXPORTING  
*         CONTENT_TYPE = 'application/javascript; charset=UTF-8'  
*         ).  
   CALL METHOD LV_CLIENT->REQUEST->SET_FORMFIELD_ENCODING  
     EXPORTING  
       FORMFIELD_ENCODING = LV_CLIENT->REQUEST->CO_ENCODING_URL.  
* Get request:  
   CALL METHOD LV_CLIENT->SEND  
     EXCEPTIONS  
       HTTP_COMMUNICATION_FAILURE = 1  
       HTTP_INVALID_STATE         = 2  
       HTTP_PROCESSING_FAILED     = 3  
       OTHERS                     = 4.  
   IF SY-SUBRC NE 0.  
     MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO  
       WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.  
   ENDIF.  
* Prepare client-receive:  
   CALL METHOD LV_CLIENT->RECEIVE  
     EXCEPTIONS  
       HTTP_COMMUNICATION_FAILURE = 1  
       HTTP_INVALID_STATE         = 2  
       HTTP_PROCESSING_FAILED     = 3  
       OTHERS                     = 4.  
* Get HTML:  
DATA EV_DATA TYPE STRING.  
CONSTANTS co_line_size TYPE i VALUE 150.  
TYPES: t_line TYPE c LENGTH co_line_size.  
DATA: l_string TYPE string,  
      lt_lines TYPE TABLE OF t_line.  
FIELD-SYMBOLS: <l_line> TYPE t_line.  
   EV_DATA = LV_CLIENT->RESPONSE->GET_CDATA( ).  
"   compile js  
data GET_VALUE type STRING.  
data JS_PROCESSOR type ref to CL_JAVA_SCRIPT.  
data SOURCE type STRING.  
concatenate  EV_DATA SOURCE into SOURCE SEPARATED BY cl_abap_char_utilities=>cr_lf.  
JS_PROCESSOR = CL_JAVA_SCRIPT=>CREATE( ).  
JS_PROCESSOR->COMPILE( SCRIPT_NAME = 'TEST_GET.JS'  
  SCRIPT =  EV_DATA ).  
if JS_PROCESSOR->LAST_CONDITION_CODE <> 0.  
write: / 'Error in COMPILE',  
  JS_PROCESSOR->LAST_ERROR_MESSAGE.  
else.  
write / 'JavaScript was compiled'.  
endif.  
skip.  
JS_PROCESSOR->EXECUTE(  
exporting SCRIPT_NAME = 'TEST_GET.JS' ).  
if JS_PROCESSOR->LAST_CONDITION_CODE <> 0.  
write: / 'Error in EXECUTE',  
  JS_PROCESSOR->LAST_ERROR_MESSAGE.  
else.  
write / 'JavaScript was executed'.  
endif.  
skip.  

我的文件编译得很好,但是在执行我的代码时,我收到了一些错误,比如窗口未定义".

my file is well compiled but When executing my code i'm getting some errors like "window is not defined" .

应该如何解决问题

推荐答案

jQuery 是一个 JavaScript 库,旨在与浏览器的文档对象模型 (DOM) 一起使用,并用于 UI、动画、客户端逻辑等.它建立在 DOM 之上,所有功能都依赖于此,尝试在 ABAP 系统上执行 jQuery.js 文件将无法正常工作,因为没有浏览器,也没有 DOM 供 jQuery 与之交互.

jQuery is a JavaScript library designed to work with the browser's document object model (DOM) and it used for the UI, animations, client side logic, etc. It is built on top of the DOM and all functionality depends on that, trying to execute the jQuery.js file on an ABAP system will not work as there is no browser and there is no DOM for jQuery to interact with.

您可以在 SAP 网站上找到有关 ABAP 服务器及其功能和不功能的更多信息 ABAP 应用服务器 页面.

You can find further information on the ABAP server and what it does and does not do at the SAP website ABAP Application Server page.

这篇关于使用 CL_JAVA_SCRIPT 从 ABAP 执行 jQuery 文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆