如何实现SAP创建HTTP接口?

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

步骤

1.SE24创建类,实现IF_HTTP_EXTENSION

  1. SE24创建类实现接口
    在这里插入图片描述
    输入接口描述保存
    在这里插入图片描述
    在接口选项,输入IF_HTTP_EXTENSION
    在这里插入图片描述
    再方法选项,点击IF_HTTP_EXTENSOIN~HANDLE_REQUEST
    在这里插入图片描述
    进入方法编辑
    在这里插入图片描述
  method IF_HTTP_EXTENSION~HANDLE_REQUEST.

    TYPES: BEGIN OF ty_data,
             matnr TYPE matnr,
             maktx TYPE maktx,
           END OF ty_data,
           BEGIN OF ty_mat,
             matnr TYPE matnr,
           END OF ty_mat.

    DATA: lt_data TYPE TABLE OF ty_data,
          lt_mat  TYPE TABLE OF ty_mat,
          ls_mat  TYPE ty_mat.

    DATA: lr_mat  TYPE RANGE OF matnr,
          lrs_mat LIKE LINE OF lr_mat.

    DATA: lt_form_fields   TYPE tihttpnvp, "请求url参数
          lt_header_fields TYPE tihttpnvp, "请求头部数据
          lv_method        TYPE string,    "请求类型
          lv_request       TYPE string,    "请求json数据
          lv_response      TYPE string.    "返回json数据

    "请求类型
    lv_method = server->request->get_method(  ).

    "请求url参数
    server->request->get_form_fields( CHANGING fields = lt_form_fields ).

    "请求头部数据
    server->request->get_header_fields( CHANGING fields = lt_header_fields ).

    "请求json数据
    lv_request = server->request->get_cdata( ).

    "json转abap
    /ui2/cl_json=>deserialize( EXPORTING json = lv_request
                               CHANGING data = lt_mat ).

    "将内表数据转成range用作查询条件
    LOOP AT lt_mat INTO ls_mat.
      lrs_mat-sign = 'I'.
      lrs_mat-option = 'EQ'.
      lrs_mat-low = ls_mat-matnr.
      APPEND lrs_mat TO lr_mat.
    ENDLOOP.

    CASE lv_method.
      WHEN 'GET'.

        SELECT matnr maktx INTO CORRESPONDING FIELDS OF TABLE lt_data
               FROM makt
               UP TO 20 ROWS
               WHERE spras = sy-langu
               AND matnr IN lr_mat.

        "abap转换json
        /ui2/cl_json=>serialize( EXPORTING data   = lt_data
                                 RECEIVING r_json = lv_response ).

        "返回json数据给调用端
        server->response->set_cdata( EXPORTING data = lv_response ).

        "请求响应
        server->response->set_status( code = 200 reason = 'OK' ).
      WHEN OTHERS.

        "如果不是get请求,则返回错误
        server->response->set_status( code = 405 reason = 'ERROR' ).

    ENDCASE.


  endmethod.

2.激活HTTP服务

进入SICF,运行后,
在这里插入图片描述

选中sap,鼠标右键点击"新的子元素"

在这里插入图片描述

添加服务名称,勾选"服务为管理服务"

在这里插入图片描述
输入描述内容,不用设置集团和账号密码

在这里插入图片描述
在处理器清单界面添加刚才创建的类后保存
在这里插入图片描述
然后返回,就能看到刚才创建的服务,右击,点击启用服务
在这里插入图片描述

3测试服务

右击服务,选测试服务
在这里插入图片描述

弹框中有测试url,复制后,粘贴到接口测试工具中,我用的apifox,其他的接口测试工具也可以

在这里插入图片描述
备注一下请求的名称,选择好请求类型GET,填好URL(需要在接口后面增加?sap-client=202来决定是取哪个集团数据)
在这里插入图片描述
在Auth里选择授权类型,并输入SAP登陆的账号密码

在这里插入图片描述
因为我们接口是通过接受JSON参数的,所以在Body里选择row和JSON,输入JSON参数,然后点击发送请求,得到响应数据
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值