SAP发布Rest接口实例(详细步骤)

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

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

主要借鉴的文章有:SAP 如何提供 RESTful Web 服务?_王敏的专栏-CSDN博客_sap web 服务

                                SAP发布REST/HTTP接口 - ^ω^SAP傻X^o^ - 博客园

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

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

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

3.Tcode SICF创建服务。

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

创建类,实现接口 IF_HTTP_EXTENSION

1.se24 创建一个类

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

我的代码如下

  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 类并激活方法:

测试服务

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

查看执行情况。
 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值