ABAP:对外发布Restful

一、创建全局类

SE24创建全局类

实现IF_HTTP_EXTENSION接口

创建GET和POST方法

两个方法都添加参数

修改IF_HTTP_EXTENSION~HANDLE_REQUEST方法的代码

复制代码
METHOD if_http_extension~handle_request.
  DATA(lv_method) = server->request->get_method( )."查看调用方法GET OR POST
  CASE lv_method.
    WHEN 'GET'.
      me->get( server ).
    WHEN 'POST'.
      me->post( server ).
    WHEN OTHERS.
      "Sets current HTTP status code
      server->response->set_status( code = 405 reason = '请求方法不支持,请联系管理员!' ).
  ENDCASE.

ENDMETHOD.

修改POST方法的代码:

复制代码
  METHOD post.

    DATA: lr_json_ser TYPE REF TO cl_trex_json_serializer,
          lr_json_des TYPE REF TO cl_trex_json_deserializer.
    DATA: lv_json_string TYPE string.

    DATA: gt_t005u TYPE TABLE OF t005u.
    DATA: lv_request TYPE string.
    DATA: BEGIN OF ls_request,
            spras TYPE spras,
            land1 TYPE land1,
          END OF ls_request.

    DATA lt_request LIKE STANDARD TABLE OF ls_request. " 该内表格式要和外部传入参数格式一致

*&--- 获取调用时候传入的参数
    CLEAR: lt_request.

    lv_json_string = server->request->get_cdata( ). " 获取传入的 JSON 格式数据
    /ui2/cl_json=>deserialize(    " 把 JSON 格式的转化为 ABAP 内表, 把 LV_JSON_STRING 放入 LT_REQUEST 里面
                      EXPORTING
                        json = lv_json_string
                        pretty_name = /ui2/cl_json=>pretty_mode-camel_case
                      CHANGING
                        data = ls_request ).

    APPEND ls_request TO lt_request.

*&--- 设置返回数据格式
    CALL METHOD server->response->if_http_entity~set_content_type
      EXPORTING
        content_type = 'application/json'.

*&--- 获取要返回的数据
    IF lt_request[] IS NOT INITIAL.
      CLEAR: gt_t005u.

      SELECT *
        INTO TABLE gt_t005u
        FROM t005u
        UP TO 5 ROWS
        FOR ALL ENTRIES IN lt_request
        WHERE spras = lt_request-spras
          AND land1 = lt_request-land1.
    ENDIF.
      SELECT *
        INTO TABLE gt_t005u
        FROM t005u
        UP TO 5 ROWS.

*&--- 要返回的数据转换成 JSON 格式
    CLEAR: lv_json_string.

    CREATE OBJECT lr_json_ser
      EXPORTING
        data = gt_t005u[].
    CALL METHOD lr_json_ser->serialize.
    CALL METHOD lr_json_ser->get_data
      RECEIVING
        rval = lv_json_string.

*&--- 设置返回数据
    server->response->set_cdata(
            EXPORTING
              data   = lv_json_string    " Character data
          ).


  ENDMETHOD.

二、发布服务

输入事务码:SICF

创建服务

输入服务名

输入之前创建的全局类

存储成功后激活服务

三、测试服务

测试服务

拿到URL后在POSTMAN测试

相关推荐
爱喝水的鱼丶2 天前
SAP-ABAP:BAPI 基础认知:SAP 标准业务对象接口的核心逻辑与调用入门
信息可视化·性能优化·sap·abap·bapi·开发交流·交流学习
rm -rf * && haha.sh3 天前
【ABAP】SUBMIT 用法详解
sap·abap·abap开发
爱喝水的鱼丶5 天前
SAP-ABAP:性能优化效果验证与回归测试:优化前后性能对比、业务逻辑兼容性校验方案
性能优化·sap·abap·回归测试·开发交流·交流学习
爱喝水的鱼丶5 天前
SAP-ABAP:接口与报表场景专项优化:RFC/ODATA 接口、ALV 报表的性能提升方案
运维·性能优化·接口·sap·abap·rfc·经验交流
爱喝水的鱼丶10 天前
SAP-ABAP:SAP性能分析核心工具入门——ST05/SAT/ST12等常用事务码的基础用法解析
性能优化·sap·abap·性能分析·开发交流·交流学习
xlxxy_13 天前
外部系统调用SAP接口遇到的一些报错
开发语言·数据库·sap·abap
爱喝水的鱼丶13 天前
SAP-ABAP:调试器高级工具使用——内表分析、SQL追踪、内存检查功能实操
运维·sql·性能优化·sap·abap·经验交流
爱喝水的鱼丶17 天前
SAP-ABAP:SAP 实战笔记:BAPI_OUTB_DELIVERY_CONFIRM_DEC 详解——外向交货单过账的利器
运维·性能优化·sap·abap·经验交流
爱喝水的鱼丶20 天前
SAP-ABAP:SELECT大数据量查询性能调优——避免嵌套循环、减少数据库交互的核心方案
开发语言·数据库·sql·性能优化·sap·abap·erp
爱喝水的鱼丶21 天前
SAP-ABAP:SELECT查询性能优化基础——索引匹配、条件顺序与缓冲机制利用技巧
数据库·性能优化·select·sap·abap·开发交流·交流学习