SAP 发布JSON接口
SAP发布REST的JSON格式接口:
主要简单介绍一下SAP如何发布REST接口,并指定格式是JSON的。
- 创建服务处理类
服务处理类用于外部系统调用SAP服务(即sap接口)的时候,作为服务的处理类,即SAP接口的响应代码,本文档是获取信息以JSON形式返回给外部系统
1.1 创建处理类的具体步骤:
(1) 输入事物代码:se24,输入要创建的类名,点击创建
(2) 选择处理类的类型
(3) 输入SAP标准接口:IF_HTTP_EXTENSION
回车后到方法页签中实现:IF_HTTP_EXTENSION~HANDLE_REQUEST
(4) 实现接口处理代码
主要在方法IF_HTTP_EXTENSION~HANDLE_REQUEST中进行代码处理,实现
接口的逻辑
METHOD if_http_extension~handle_request.
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:lv_res TYPE string.
DATA:BEGIN OF lw_request,
matnr TYPE matnr,
spras TYPE spras,
END OF lw_request.
DATA:BEGIN OF msg,
msgtyp TYPE bapi_mtype,
msgtxt TYPE bapi_msg,
END OF msg.
DATA:BEGIN OF lw_response,
matnr TYPE matnr,
ernam TYPE ernam,
ersda TYPE ersda,
maktx TYPE maktx,
msg LIKE msg,
END OF lw_response.
DATA lt_request LIKE STANDARD TABLE OF lw_request."该内表要和接收的数据结构一致
DATA lt_response LIKE STANDARD TABLE OF lw_response.
CLEAR:lt_request.
*------接收并解析传递的JSON数据为内表(如果前端传递的是对象,则需要用结构接收;如果传递的数组,则使用内表)
lv_json_string = server->request->get_cdata( ).
/ui2/cl_json=>deserialize(
EXPORTING
json = lv_json_string
CHANGING data = lw_request ).
*------设置返回数据格式
CALL METHOD server->response->if_http_entity~set_content_type
EXPORTING
content_type = 'application/json'.
*------获取要返回的数据
IF lw_request IS NOT INITIAL.
SELECT
mara~matnr,
mara~ernam,
mara~ersda,
makt~maktx
FROM mara
LEFT JOIN makt
ON mara~matnr = makt~matnr
FOR ALL ENTRIES IN @lt_request
WHERE
mara~matnr = @lt_request-matnr AND
makt~spras = @lt_request-spras
INTO CORRESPONDING FIELDS OF TABLE @lt_response.
IF lt_response IS INITIAL.
lw_response-msg-msgtxt = '查询失败'.
lw_response-msg-msgtyp = 'E'.
ELSE.
lw_response-msg-msgtxt = '查询成功'.
lw_response-msg-msgtyp = 'S'.
ENDIF.
ELSE.
lw_response-msg-msgtxt = '发送数据为空'.
lw_response-msg-msgtyp = 'E'.
ENDIF.
*------要返回的数据转换成JSON格式
CLEAR:lv_json_string.
lv_json_string = /ui2/cl_json=>serialize(
data = lw_response
compress = abap_true
pretty_name = /ui2/cl_json=>pretty_mode-camel_case ).
*------设置返回数据
server->response->set_cdata(
EXPORTING
data = lv_json_string
" Character data
).
ENDMETHOD.
- SICF服务发布:
2.1 输入服务管理事务代码:SICF,点击执行,进入服务管理页面
2.2 创建自定义服务:ZCL_JSON_TEST
2.3 输入账号密码和client
2.4 输入服务处理类
2.5 保存并右键激活服务
2.5 右键测试服务(右键同上)
获取URL后使用postman或者浏览器测试结果。
post SAP-Garson
原文链接:https://blog.csdn.net/qq_44826887/article/details/119593783文章来自于网络,如果侵犯了您的权益,请联系站长删除!