1:定制小程序开发外围系统提供的接口URL,用户名和密码信息。
2,调用接口
*根据接口参数,定义用于接口序列化和的数据结构信息。LS_REQUEST,LS_RESPONSE .
*声明HTTP client .
DATA: O_HTTP_CLIENT TYPE REF TO IF_HTTP_CLIENT ..
LV_REQUEST_URL = LS_CONFIG-URL .
*根据URL创建客户端示例。
CALL METHOD CL_HTTP_CLIENT=>CREATE_BY_URL
EXPORTING
URL = LV_REQUEST_URL
* PROXY_HOST =
* PROXY_SERVICE =
* SSL_ID =
* SAP_USERNAME =
* SAP_CLIENT =
* PROXY_USER =
* PROXY_PASSWD =
* DO_NOT_USE_CLIENT_CERT = ABAP_FALSE
* USE_SCC = ABAP_FALSE
* SCC_LOCATION_ID =
IMPORTING
CLIENT = O_HTTP_CLIENT
EXCEPTIONS
ARGUMENT_NOT_FOUND = 1
PLUGIN_NOT_ACTIVE = 2
INTERNAL_ERROR = 3
PSE_NOT_FOUND = 4
PSE_NOT_DISTRIB = 5
PSE_ERRORS = 6
OTHERS = 7.
IF SY-SUBRC <> 0.
EX_STATUS = 'E' .
CALL METHOD O_HTTP_CLIENT->GET_LAST_ERROR
IMPORTING
MESSAGE = LV_MESSAGE.
EX_MESSA = LV_MESSAGE .
RETURN.
ENDIF.
LV_USERNAME = LS_CONFIG-ACCOUNT.
LV_PASSWORD = LS_CONFIG-PASSWORD.
*设置用户名密码认证。
CALL METHOD O_HTTP_CLIENT->AUTHENTICATE
EXPORTING
* PROXY_AUTHENTICATION = ' '
* CLIENT =
USERNAME = LV_USERNAME
PASSWORD = LV_PASSWORD
* LANGUAGE =
*添加用户名和密码到消息头。
CALL METHOD O_HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME = 'username'
VALUE = LV_USERNAME.
CALL METHOD O_HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME = 'password'
VALUE = LV_PASSWORD.
*设置抬头格式。
CALL METHOD O_HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME = 'Content-Type'
VALUE = 'application/json; charset=utf-8'.
*设置发送方法。
O_HTTP_CLIENT->REQUEST->SET_METHOD( IF_HTTP_REQUEST=>CO_REQUEST_METHOD_POST ).
*序列化JSON数据。
LV_REQUEST_STR = /UI2/CL_JSON=>SERIALIZE( DATA = LS_REQUEST ASSOC_ARRAYS = ABAP_TRUE ).
*设置发送数据。
O_HTTP_CLIENT->REQUEST->IF_HTTP_ENTITY~SET_CDATA( DATA = LV_REQUEST_STR ) .
*发送请求。
CALL METHOD O_HTTP_CLIENT->SEND
EXCEPTIONS
HTTP_COMMUNICATION_FAILURE = 1
HTTP_INVALID_STATE = 2.
IF SY-SUBRC <> 0 .
CALL METHOD O_HTTP_CLIENT->GET_LAST_ERROR
IMPORTING
MESSAGE = LV_MESSAGE.
EX_MESSA = LV_MESSAGE .
RETURN.
ENDIF.
*接收反馈消息
CALL METHOD O_HTTP_CLIENT->RECEIVE
EXCEPTIONS
HTTP_COMMUNICATION_FAILURE = 1
HTTP_INVALID_STATE = 2
HTTP_PROCESSING_FAILED = 3.
IF SY-SUBRC <> 0 .
CALL METHOD O_HTTP_CLIENT->GET_LAST_ERROR
IMPORTING
MESSAGE = LV_MESSAGE.
EX_MESSA = LV_MESSAGE .
RETURN.
ENDIF.
LV_RESPONSE_STR = O_HTTP_CLIENT->RESPONSE->GET_CDATA( ).
*反序列化数据。
/UI2/CL_JSON=>DESERIALIZE( EXPORTING JSON = LV_RESPONSE_STR ASSOC_ARRAYS = ABAP_TRUE CHANGING DATA = LS_RESPONSE ).