SAP发布Rest接口实例(详细步骤)详解编程语言

需求介绍:外部系统(钉钉)要同步员工考勤汇总数据到ERP系统(SAP),要求接口以Rest方式调用。

需求实现:平时SAP发布接口都是生成Webservice地址供外部系统以SOAP方式调用,没发布过需求中的这种接口。通过看其他人的介绍找到一些方法,借鉴这些方法最后实现了需求。

主要借鉴的文章有:IT虾米网

                                IT虾米网

整个过程主要有以下几步:

1.Tcode SE24创建类来实现IF_HTTP_EXTENSION这个接口;

2.使用IF_HTTP_EXTENSION~HANDLE_REQUEST方法进行数据处理;

3.Tcode SICF创建服务。

接下来是我这个接口的具体实现过程

创建类,实现接口 IF_HTTP_EXTENSION

1.se24 创建一个类

SAP发布Rest接口实例(详细步骤)详解编程语言

 2.切换到接口(interface)页签,输入IF_HTTP_EXTENSION ,回车。切换到方法(method)页签,双击IF_HTTP_EXTENSION~HANDLE_REQUEST进入代码编辑界面。

SAP发布Rest接口实例(详细步骤)详解编程语言

我的代码如下

  METHOD if_http_extension~handle_request. 
 
    DATA: lt_json   TYPE string, 
          lt_fields TYPE tihttpnvp. 
    FIELD-SYMBOLS: <fs_field>       LIKE LINE OF lt_fields. 
 
*获取JSON头数据 
    server->request->get_header_fields( 
        CHANGING 
          fields = lt_fields 
      ). 
*获取JSON行数据 
    lt_json = server->request->if_http_entity~get_cdata( ). 
 
 
*JSON转为ABAP内表 
    DATA: deserializer TYPE REF TO zcl_trex_json_deserializer, 
          lt_data      TYPE STANDARD TABLE OF zthr040. 
    CLEAR lt_data. 
 
    CREATE OBJECT deserializer. 
    CALL METHOD deserializer->deserialize( 
      EXPORTING 
        json = lt_json 
      IMPORTING 
        abap = lt_data[] ). 
 
*调用考勤结果写入函数执行数据 
    CALL FUNCTION 'ZFMHRDING001' 
      TABLES 
        it_hr040 = lt_data[]. 
 
*ABAP内表转换为JSON 
    DATA: serializer TYPE REF TO zcl_trex_json_serializer. 
    CLEAR lt_json. 
 
    CREATE OBJECT serializer EXPORTING data = lt_data[]. 
    CALL METHOD serializer->serialize( ). 
    lt_json = serializer->get_data( ). 
 
*将JSON返回给调用端 
    server->response->set_cdata( 
      EXPORTING 
        data   = lt_json 
    ). 
 
  ENDMETHOD.

 3.以上完成后激活方法。

创建WEB服务

使用事务码 SICF 在 default_host/sap 节点下面创建子节点,使用 Z_SIMPLE_REQ_HANDLER 类并激活方法:

SAP发布Rest接口实例(详细步骤)详解编程语言

测试服务

工具调用 http://erpdev:8000/sap/zsimple_service?sap-client=200

查看执行情况。
 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/19529.html

(0)
上一篇 2021年7月19日 22:16
下一篇 2021年7月19日 22:16

相关推荐

发表回复

登录后才能评论