1业务说明
ABAP系统通过HTTP方式调用其他系统发布的接口
2代码实现
2.1认证接口
根据访问的URL创建HTTP客户端
设置访问方式,并调用SEND和接收函数
有时需要专门验证用户名密码
获取返回的HTTP访问状态和状态描述,并关闭接口
其中定义的接收内表需要按照JSON结构来定义
2.2具体接口
当获取TOKEN成功之后,就可以继续执行后续的某个业务功能接口了
仍然根据访问的接口URL创建HTTP客户端
设置传输格式,校验权限,访问方式
根据传入JSON,定义内表,并转换为JSON格式
同理,调用发送和接收函数,之后用相同方式获取返回的JSON数据,并将其转换为内表,做后续操作,方法和认证接口处理一致,不再赘述。
2.3源代码
"TOKEN的结构
TYPES: BEGIN OF TY_TOKEN,
ACCESS_TOKEN TYPE STRING,
TOKEN_TYPE TYPE STRING,
REFRESH_TOKEN TYPE STRING,
EXPIRES_IN TYPE STRING,
SCOPE TYPE STRING,
END OF TY_TOKEN.
"发送数据时的结构
DATA:BEGIN OF TY_DATILDATA OCCURS 0,
DATEFROM TYPE STRING,
DATETO TYPE STRING,
PAGE TYPE STRING,
SIZE TYPE STRING,
END OF TY_DATILDATA.
"编辑发送数据
DATA: BEGIN OF TY_SENDDATA,
PAYLOAD LIKE TY_DATILDATA,
END OF TY_SENDDATA.
"编辑接收数据
DATA: BEGIN OF TY_RECEIVEDATA,
PAYLOAD LIKE TY_DATILDATA,
DATA LIKE TABLE OF TY_DATILDATA,
END OF TY_RECEIVEDATA.
DATA:LS_TOKEN TYPE TY_TOKEN,
LS_SENDDATA LIKE TY_SENDDATA,
LS_RECDATA LIKE TY_RECEIVEDATA.
DATA: LV_LEN TYPE I, "发送报文长度
LV_URL TYPE STRING, "接口地址
LO_HTTP_CLIENT TYPE REF TO IF_HTTP_CLIENT, "http客户端
LV_SEND_JSON TYPE STRING, "发送的JSON
LV_REC_JSON TYPE STRING, "接收的JSON
LV_AUTHORIZATION TYPE STRING,
LV_CODE TYPE I, "HTTP 返回状态
LV_REASON TYPE STRING. " HTTP 状态描述
START-OF-SELECTION.
CLEAR:LV_URL.
LV_URL = 'https://hostname/oauth/oauth/token'.
"创建http客户端
CALL METHOD CL_HTTP_CLIENT=>CREATE_BY_URL
EXPORTING
URL = LV_URL
IMPORTING
CLIENT = LO_HTTP_CLIENT
EXCEPTIONS
ARGUMENT_NOT_FOUND = 1
PLUGIN_NOT_ACTIVE = 2
INTERNAL_ERROR = 3
OTHERS = 4.
"不显示登录界面
LO_HTTP_CLIENT->