SAP发布HTTP接口

1、创建类

引用标准接口

SAP发布HTTP接口

改写集成的接口方法

SAP发布HTTP接口

此处仅实现POST方法,将传入的JSON报文转为函数传入参数,调用获取物料接口,并将返回的物料信息,转换为JSON报文返回

METHOD if_http_extension~handle_request.

DATA:lv_method TYPE string,
lv_req_json TYPE string,
lv_res_json TYPE string.
lv_method = server->request->get_header_field( '~request_method' ).
* lv_path = server->request->get_header_field( '~request_uri' ).

IF lv_method <> 'POST'.
server->response->set_header_field( name = 'Content-Type' value = 'text/html' ).
server->response->set_cdata( '请使用POST方法' ).
server->response->set_status( code = 200
reason = '' ).
RETURN.
ENDIF.

TYPES:BEGIN OF ty_input,
i_matnr TYPE marc-matnr,
END OF ty_input.

DATA:ls_input TYPE ty_input,
lt_marc TYPE TABLE OF ymms_marc.
TYPES:BEGIN OF ty_output,
t_marc LIKE lt_marc,
END OF ty_output.

DATA:ls_output TYPE ty_output.

lv_req_json = server->request->get_cdata( ).
/ui2/cl_json=>deserialize( EXPORTING json = lv_req_json
pretty_name = /ui2/cl_json=>pretty_mode-camel_case
CHANGING data = ls_input ).

CALL FUNCTION 'YLCCTEST01_GETMATNR'
EXPORTING
i_matnr = ls_input-i_matnr
TABLES
t_marc = lt_marc.

ls_output-t_marc = lt_marc.

lv_res_json = /ui2/cl_json=>serialize( data = ls_output )."pretty_name = /ui2/cl_json=>pretty_mode-low_case ).

server->response->set_status( code = 200 reason = 'successfully' ). "
server->response->set_header_field( name = 'Content-Type' value = 'application/json' ).
server->response->set_cdata( lv_res_json ).
ENDMETHOD.

2、创建WEB服务

事务代码SICF,创建新节点

SAP发布HTTP接口

处理器清单中填上类名称

SAP发布HTTP接口

3、激活并测试服务