SAP restful http服务
·
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了
更多推荐
所有评论(0)