ABAP SAP发布REST的JSON格式接口
SAP发布REST的JSON格式接口
SAP发布REST的JSON格式接口
介绍一下SAP如何发布REST接口,并指定格式是JSON的。
一、创建服务处理类
服务处理类用于外部系统调用SAP服务(即sap接口)的时候,作为服务的处理类,即SAP接口的响应代码,本文档是获取JSON信息,然后以JSON形式返回给外部系统
(1) TCODE: SE24
输入要创建的类名,点击创建
(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)激活服务
(4)测试服务
弹出网页,复制地址,打开postman,发起请求
可能需要输入登陆信息
(5)断点调试
如果发生问题,可以在程序里面设置上外部断点
设置好后,再重新发起请求,就会停在断点的位置,然后就可以debug了
post SAP-Garson
原文链接:https://blog.csdn.net/qq_34060435/article/details/119593999文章来自于网络,如果侵犯了您的权益,请联系站长删除!