ABAPSAP RESTFUL 服务应用
Posted SAP剑客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ABAPSAP RESTFUL 服务应用相关的知识,希望对你有一定的参考价值。
RESTFUL是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用格式定义或者JSON格式定义。RESTFUL适用于移动互联网厂商作为业务接口的场景,实现第三方OTT调用移动网络资源的功能,动作类型为新增、变更、删除所调用资源。
在SAP中对外提供Web Service需要用到ICF (Internet Commincation Framework) 。
如果要将SAP应用程序服务器作为HTTP服务提供者,就需要定义一个类(实现 IF_HTTP_EXTENSION 接口)。
实现接口方法:
METHOD IF_HTTP_EXTENSION~HANDLE_REQUEST.
DATA : LV_JSON TYPE STRING.
"Json结构
DATA : BEGIN OF LS_REQUEST,
DATALIST TYPE TABLE OF ZMMS_CARKWEIGHT,
END OF LS_REQUEST.
"传输结构
DATA : LT_ITAB TYPE TABLE OF ZMMS_TEST
LS_ITAB TYPE ZMMS_TEST.
"调用的方法 GET / POST
DATA(LV_METHOD) = SERVER->REQUEST->GET_METHOD( ).
CASE LV_METHOD.
WHEN 'GET'.
WHEN 'POST'.
* ME->POST( SERVER ).
"获取HTTP Body
LV_JSON = SERVER->REQUEST->GET_CDATA( ).
IF LV_JSON IS INITIAL.
SERVER->RESPONSE->SET_STATUS( CODE = 404 REASON = 'No Body Parameter' ).
EXIT.
ENDIF.
"将Json转换成内表
/UI2/CL_JSON=>DESERIALIZE( EXPORTING JSON = LV_JSON
PRETTY_NAME = /UI2/CL_JSON=>PRETTY_MODE-CAMEL_CASE
CHANGING DATA = LS_REQUEST ).
IF LS_REQUEST-DATALIST IS NOT INITIAL.
LT_ITAB = LS_REQUEST-DATALIST.
ELSE.
SERVER->RESPONSE->SET_STATUS( CODE = 404 REASON = 'Json Format Error' ).
EXIT.
ENDIF.
"内表处理
LOOP AT LT_ITAB INTO LS_ITAB.
ENDLOOP.
IF LT_CARKDATA IS NOT INITIAL.
"保存到自定义表中,这里省略
......
IF SY-SUBRC = 0.
COMMIT WORK.
"设置返回格式Json
SERVER->RESPONSE->SET_CONTENT_TYPE( 'application/json' ).
"返回Body数据
SERVER->RESPONSE->SET_CDATA(
/UI2/CL_JSON=>SERIALIZE( DATA = 'Success'
COMPRESS = ABAP_TRUE
PRETTY_NAME = /UI2/CL_JSON=>PRETTY_MODE-CAMEL_CASE )
).
"返回成功状态码
SERVER->RESPONSE->SET_STATUS( CODE = 200 REASON = 'OK' ).
ELSE.
"SAP数据更新失败
SERVER->RESPONSE->SET_STATUS( CODE = 500 REASON = 'Update failed' ).
ENDIF.
ENDIF.
WHEN OTHERS.
SERVER->RESPONSE->SET_STATUS( CODE = 405 REASON = 'Method Not Allowed' ).
ENDCASE.
ENDMETHOD.
然后使用 SICF事务码创建服务,并且将处理器(handler)设定为自定义类。客户端就可以访问这个服务了。
最后使用PostMan调用测试无误。
以上是关于ABAPSAP RESTFUL 服务应用的主要内容,如果未能解决你的问题,请参考以下文章