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->