Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用java客户机读取ABAP代码_Abap - Fatal编程技术网

如何使用java客户机读取ABAP代码

如何使用java客户机读取ABAP代码,abap,Abap,我有一个要求,我需要阅读SAP开发人员编写的ABAP代码。我想用Java/Python编写我自己的客户机,它可以与SAP系统集成,并获得ABAP代码 据我所知,ABAP代码存储在SAP数据库中,如HANA、mysql等。因此,SAP是否提供了一种方法,我们可以像在Git/SVN等中一样读取代码。您可以使用以下技术访问表: 通过RFC使用(RFC\U READ\U表格) 使用具有相同功能的SOAP Web服务(RFC\U READ\U表) 将自定义web服务与读取报表、函数等现有函数一起使用

我有一个要求,我需要阅读SAP开发人员编写的ABAP代码。我想用Java/Python编写我自己的客户机,它可以与SAP系统集成,并获得ABAP代码


据我所知,ABAP代码存储在SAP数据库中,如HANA、mysql等。因此,SAP是否提供了一种方法,我们可以像在Git/SVN等中一样读取代码。

您可以使用以下技术访问表:

  • 通过RFC使用(RFC\U READ\U表格)
  • 使用具有相同功能的SOAP Web服务(RFC\U READ\U表)
  • 将自定义web服务与读取报表、函数等现有函数一起使用
对于RFC,您可以同时使用Java或Pyhton,因为已经存在用于的github repo

若要选择直接在db表中读取,则需要了解已保存数据的结构。它有自己的面向对象对象机制。Daniel Berlin尝试在项目中实现C++中的二进制解析器。永远不要忘记此源依赖于SAP版本

我认为使用ADT(ABAP开发工具)插件对更新的系统有好处。已经存在用于ADT的Eclipse插件。旧系统中不存在ADT

如果您计划在旧系统(7.01之后)中使用您的解决方案,则可以使用和自定义web服务构建您自己的解决方案


注意:请记住,报表和数据元素(变量、表格、类型)保存在单独的表格中。Dynpro对象(屏幕等)、报表(Smartforms)难以反编译

您可以使用以下技术访问表:

  • 通过RFC使用(RFC\U READ\U表格)
  • 使用具有相同功能的SOAP Web服务(RFC\U READ\U表)
  • 将自定义web服务与读取报表、函数等现有函数一起使用
对于RFC,您可以同时使用Java或Pyhton,因为已经存在用于的github repo

若要选择直接在db表中读取,则需要了解已保存数据的结构。它有自己的面向对象对象机制。Daniel Berlin尝试在项目中实现C++中的二进制解析器。永远不要忘记此源依赖于SAP版本

我认为使用ADT(ABAP开发工具)插件对更新的系统有好处。已经存在用于ADT的Eclipse插件。旧系统中不存在ADT

如果您计划在旧系统(7.01之后)中使用您的解决方案,则可以使用和自定义web服务构建您自己的解决方案


注意:请记住,报表和数据元素(变量、表格、类型)保存在单独的表格中。Dynpro对象(屏幕等)、报表(Smartforms)难以反编译

我通过perl NWRFC包装器/库使用RFC调用
RPY\u FUNCTIONMODULE\u READ
RPY\u FUNCTIONMODULE\u READ\u NEW
,来检索ABAP代码

我通过perl NWRFC包装器/库使用RFC调用
RPY\u FUNCTIONMODULE\u READ
RPY\u FUNCTIONMODULE\u READ\u NEW
,来检索ABAP代码

在重新发明车轮之前,请先看看:

  • 阿巴吉特
  • 或者旧的SAPLink
如果只需要源代码,可以在SAP中公开一个非常简单的rest服务/端点。
该服务只需读取原始代码并以纯文本形式返回。 每个人都可以为你创造这个。 但这只是原始来源。一个完整的开发还有很多 以及为什么像ABAPGIT这样的工具存在

在SICF中,创建一个新的端点/服务。 例如,ZCODE_MONKEY以下面的类为例

现在激活服务

调用端点

示例实现

CLASS zcode_monkey DEFINITION
  PUBLIC
  CREATE PUBLIC .
  PUBLIC SECTION.
  INTERFACES: if_http_extension.
ENDCLASS.
CLASS zcode_monkey IMPLEMENTATION.
  METHOD if_http_extension~handle_request.
      DATA: lo_src type ref to CL_OO_SOURCE,
            l_name TYPE string,
            l_repname type c length 30,
            l_clskey type seoclskey ,
            l_source type rswsourcet,
            resultcode TYPE string.
      FIELD-SYMBOLS: <line> TYPE LINE OF rswsourcet.

    l_name =    server->request->get_form_field(  name    = 'NAME' ).

    l_clskey = l_name.
    l_repname = l_name.

    create OBJECT lo_src
      EXPORTING
        clskey             = l_clskey
      EXCEPTIONS
        class_not_existing = 1
        others             = 2      .

    IF sy-subrc <> 0.
       read REPORT l_repname into l_source.
    else.
      lo_src->read( ).
      lo_src->if_oo_clif_source~get_source(  IMPORTING source = l_source   ).
    ENDIF.


    LOOP AT l_source ASSIGNING <line>.

      CONCATENATE  resultCode
                   cl_abap_char_utilities=>cr_lf
                   <line>
            INTO   resultCode   RESPECTING BLANKS. " always show respect ;)


    ENDLOOP.

    SErver->response->set_content_type( content_type = 'text/plain' ).
    server->response->set_cdata( EXPORTING  data   = resultcode ).
    server->response->set_status(
      EXPORTING
        code   = 200
        reason = 'this is a 3.50 piece of code. Dont ask...its a demo ' ).
  ENDMETHOD.

ENDCLASS.
CLASS zcode\u猴子定义
平民的
创建公共文件。
公共部分。
接口:if_http_扩展。
末级。
类zcode_monkey实现。
方法,如果\u http\u扩展名~handle\u请求。
数据:lo_src类型参考至CL_OO_源,
l_名称类型字符串,
l_repname类型c长度30,
l_clskey类型seoclskey,
l_源类型rswsourcet,
结果代码类型字符串。
字段符号:rswsourcet的类型行。
l_name=server->request->get_form_字段(name='name')。
l_clskey=l_名称。
l_repname=l_name。
创建对象lo_src
出口
clskey=l_clskey
例外情况
类\不\存在=1
其他=2。
如果sy subrc为0。
将报告l_repname读入l_源。
其他的
lo_src->read()。
lo_src->if_oo_clif_source~get_source(导入source=l_source)。
恩迪夫。
在l_源分配时循环。
连接结果代码
cl\u abap\u char\u实用程序=>cr\u lf
输入与空格相关的结果代码。“始终表示尊重;”
结束循环。
服务器->响应->设置内容类型(内容类型='text/plain')。
服务器->响应->设置cdata(导出数据=结果代码)。
服务器->响应->设置\u状态(
出口
代码=200
原因='这是一段3.50的代码。不要问…这是一个演示'。
ENDMETHOD。
末级。

在重新发明车轮之前,请先看看:

  • 阿巴吉特
  • 或者旧的SAPLink
如果只需要源代码,可以在SAP中公开一个非常简单的rest服务/端点。
该服务只需读取原始代码并以纯文本形式返回。 每个人都可以为你创造这个。 但这只是原始的来源。要完成开发,还有很多 以及为什么像ABAPGIT这样的工具存在

在SICF中,创建一个新的端点/服务。 例如,ZCODE_MONKEY以下面的类为例

现在激活服务

调用端点

示例实现

CLASS zcode_monkey DEFINITION
  PUBLIC
  CREATE PUBLIC .
  PUBLIC SECTION.
  INTERFACES: if_http_extension.
ENDCLASS.
CLASS zcode_monkey IMPLEMENTATION.
  METHOD if_http_extension~handle_request.
      DATA: lo_src type ref to CL_OO_SOURCE,
            l_name TYPE string,
            l_repname type c length 30,
            l_clskey type seoclskey ,
            l_source type rswsourcet,
            resultcode TYPE string.
      FIELD-SYMBOLS: <line> TYPE LINE OF rswsourcet.

    l_name =    server->request->get_form_field(  name    = 'NAME' ).

    l_clskey = l_name.
    l_repname = l_name.

    create OBJECT lo_src
      EXPORTING
        clskey             = l_clskey
      EXCEPTIONS
        class_not_existing = 1
        others             = 2      .

    IF sy-subrc <> 0.
       read REPORT l_repname into l_source.
    else.
      lo_src->read( ).
      lo_src->if_oo_clif_source~get_source(  IMPORTING source = l_source   ).
    ENDIF.


    LOOP AT l_source ASSIGNING <line>.

      CONCATENATE  resultCode
                   cl_abap_char_utilities=>cr_lf
                   <line>
            INTO   resultCode   RESPECTING BLANKS. " always show respect ;)


    ENDLOOP.

    SErver->response->set_content_type( content_type = 'text/plain' ).
    server->response->set_cdata( EXPORTING  data   = resultcode ).
    server->response->set_status(
      EXPORTING
        code   = 200
        reason = 'this is a 3.50 piece of code. Dont ask...its a demo ' ).
  ENDMETHOD.

ENDCLASS.
CLASS zcode\u猴子定义
平民的
创建公共文件。
公共部分。
接口:if_http_扩展。
末级。
类zcode_monkey实现。
如果\u http\u扩展名~handle\u请求