SAP发布REST的JSON格式接口
一、创建服务处理类
二、SICF服务发布
在这里插入图片描述

(2) 点击创建后,选择处理类的类型

在这里插入图片描述

(3)进入到类界面,点击接口(interface)的页签,输入IF_HTTP_EXTENSION ,并回车 

在这里插入图片描述

在这里插入图片描述

按下回车后,自动带出很多的属性和方法,如下:

 在这里插入图片描述

 在这里插入图片描述

 (4)切换到方法(method)页签,双击IF_HTTP_EXTENSION~HANDLE_REQUEST进入代码编辑界面。

在这里插入图片描述

 (5)实现接口处理代码

主要在方法IF_HTTP_EXTENSION~HANDLE_REQUEST中进行代码处理,实现
接口的逻辑,此处主要是获取JSON格式数据,并以JSON格式返回给外部系统
代码

METHOD IF_HTTP_EXTENSION~HANDLE_REQUEST.

  DATA: LV_JSON_STRING TYPE STRING. "传入和传出JSON格式数据所用到的变量
  DATA: LT_FLIGHT TYPE TABLE OF SFLIGHT. "内表

  DATA: BEGIN OF LW_REQUEST,
          CARRID TYPE SFLIGHT-CARRID,
          CONNID TYPE SFLIGHT-CONNID,
        END OF LW_REQUEST.
  DATA LT_REQUEST LIKE STANDARD TABLE OF LW_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 = LT_REQUEST ).

*------设置返回数据格式为JSON
  CALL METHOD SERVER->RESPONSE->IF_HTTP_ENTITY~SET_CONTENT_TYPE
    EXPORTING
      CONTENT_TYPE = 'application/json'.

*------获取要返回的数据
  IF LT_REQUEST[] IS NOT INITIAL.
    CLEAR:LT_FLIGHT.
    SELECT
      *
      INTO TABLE LT_FLIGHT
      FROM SFLIGHT
      UP TO 5 ROWS
      FOR ALL ENTRIES IN LT_REQUEST
      WHERE
          CARRID = LT_REQUEST-CARRID
      AND CONNID = LT_REQUEST-CONNID.
  ENDIF.


*------要返回的数据转换成JSON格式
  CLEAR:LV_JSON_STRING.
  LV_JSON_STRING = /UI2/CL_JSON=>SERIALIZE(    "把ABAP内表转换为JSON格式,把LT_FLIGHT放入LV_JSON
                                    DATA = LT_FLIGHT
                                    COMPRESS = ABAP_TRUE
                                    PRETTY_NAME = /UI2/CL_JSON=>PRETTY_MODE-CAMEL_CASE ).

*------设置返回数据
  SERVER->RESPONSE->SET_CDATA(
          EXPORTING
            DATA   = LV_JSON_STRING    " Character data
        ).

ENDMETHOD.

 二、SCIF服务发布

(1)输入服务管理事务代码:SICF,点击执行,进入服务管理页面在这里插入图片描述

在这里插入图片描述

(2)在/default_host/sap/下面创建自定义服务:ZCL_REST_TEST_09
右击节点,选择第一个:新的子元素

在这里插入图片描述

在这里插入图片描述

 输入登陆数据

在这里插入图片描述

 输入服务处理类

在这里插入图片描述

 保存
(3)激活服务

在这里插入图片描述

在这里插入图片描述

测试服务

在这里插入图片描述

在这里插入图片描述

可能需要输入登陆信息 

在这里插入图片描述

 (5)断点调试
如果发生问题,可以在程序里面设置上外部断点

 在这里插入图片描述

设置好后,再重新发起请求,就会停在断点的位置,然后就可以debug了 

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐