为了方便方便调用http类型的接口,我将其进行了封装,只需传入报文及接口地址即可得到接口返回消息,具体如何新建function如下图所示,代码说明可详细看我这篇文章SAP-ABAP-如何用WEBAPI的方式调用外部接口。下面的截图是function的参数

FUNCTION zrfc_call_http_request .
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" VALUE(IP_URL) TYPE STRING OPTIONAL
*" VALUE(IP_BODY) TYPE STRING OPTIONAL
*" EXPORTING
*" VALUE(V_SUBRC) TYPE CHAR1
*" VALUE(V_MESSAGE) TYPE BAPI_MSG
*" VALUE(V_RESPON) TYPE STRING
*" VALUE(V_XRESPON) TYPE XSTRING
*"----------------------------------------------------------------------
DATA lv_message TYPE string.
CLEAR:lv_message,v_subrc,v_message,v_respon.
DATA http_client TYPE REF TO if_http_client.
"创建客户端请求
CALL METHOD cl_http_client=>create_by_url
EXPORTING
url = ip_url
IMPORTING
client = http_client
EXCEPTIONS
argument_not_found = 1
plugin_not_active = 2
internal_error = 3
OTHERS = 4.
IF sy-subrc <> 0.
http_client->get_last_error( IMPORTING message = lv_message ).
v_message = lv_message.
v_subrc = 'E'.
MESSAGE '创建http连接失败!' TYPE 'S' DISPLAY LIKE 'W'.
RETURN.
ENDIF.
http_client->propertytype_logon_popup = http_client->co_disabled.
"设定调用服务
CALL METHOD http_client->request->set_method
EXPORTING
method = 'POST'.
"设定传输请求内容格式以及编码格式
CALL METHOD http_client->request->if_http_entity~set_content_type
EXPORTING
content_type = 'application/x-www-form-urlencoded'.
* CALL METHOD http_client->request->set_header_field
* EXPORTING
* name = 'Content-Type'
* value = 'application/JSON;charset=utf-8'.
IF ip_body IS NOT INITIAL.
CALL METHOD http_client->request->set_cdata
EXPORTING
data = ip_body
offset = 0
length = strlen( ip_body ).
ENDIF.
"发送请求
CALL METHOD http_client->send
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2.
IF sy-subrc <> 0.
http_client->get_last_error( IMPORTING message = lv_message ).
v_message = lv_message.
v_subrc = 'E'.
MESSAGE '发送请求失败!' TYPE 'S' DISPLAY LIKE 'W'.
RETURN.
ENDIF.
"读取远程服务返回的处理过结果。
CALL METHOD http_client->receive
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3.
IF sy-subrc <> 0 .
http_client->get_last_error( IMPORTING message = lv_message ).
v_message = lv_message.
v_subrc = 'E'.
MESSAGE '获取返回消息失败!' TYPE 'S' DISPLAY LIKE 'W'.
RETURN.
ELSE.
"读取返回返回内容
v_subrc = 'S'.
v_message = '调用接口成功!'.
v_respon = http_client->response->get_cdata( ).
v_xrespon = http_client->response->get_data( ).
ENDIF.
ENDFUNCTION.
本文介绍了一种在SAP ABAP环境中封装HTTP接口的方法,通过创建一个Function Module简化了对外部HTTP服务的调用过程。该方法允许用户仅需提供报文及接口地址即可轻松获取响应消息。
866

被折叠的 条评论
为什么被折叠?



