当前位置:网站首页>ABAP-调用Restful API
ABAP-调用Restful API
2022-07-01 15:32:00 【InfoQ】
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" REFERENCE(IV_CODE) TYPE STRING
*" REFERENCE(IV_BODY) TYPE STRING
*" EXPORTING
*" REFERENCE(EV_TYPE) TYPE CHAR1
*" REFERENCE(EV_MSG) TYPE STRING
*"----------------------------------------------------------------------
TYPES: BEGIN OF ty_result,
success TYPE string,
errmsg TYPE string,
END OF ty_result.
DATA: "lt_result TYPE TABLE OF ty_result,
ls_result TYPE ty_result.
DATA: lt_log TYPE TABLE OF zhrt_oa,
ls_log TYPE zhrt_oa.
IF iv_code IS INITIAL .
ev_msg = '请输入接口名称代码'.
ev_type = 'E'.
RETURN.
ENDIF.
IF iv_body IS INITIAL .
ev_msg = '请输入Request Body内容'.
ev_type = 'E'.
RETURN.
ENDIF.
DATA: lv_message TYPE string,
lv_service TYPE string.
DATA http_client TYPE REF TO if_http_client.
CLEAR:lv_service,lv_message.
SELECT SINGLE url INTO lv_service FROM zt_url WHERE sysid = 'OA'.
IF lv_service IS INITIAL .
ev_msg = '接口地址未配置,请通过 zt_url 配置OA接口地址'.
ev_type = 'E'.
RETURN.
ELSE.
lv_service = lv_service && iv_code.
ENDIF.
* IF sy-sysid EQ 'DEV' OR sy-sysid EQ 'TES'.
* lv_service = 'http://192.168.19.244:8090/OAapp/' && iv_code.
* ELSE.
* lv_service = 'http://*****'.
* ENDIF.
CLEAR ls_log.
ls_log-zcode = iv_code.
SELECT SINGLE zname zflow INTO (ls_log-zname,ls_log-zflow)
FROM zt_interface
WHERE zcode = ls_log-zcode.
ls_log-zdatum = sy-datum.
ls_log-zuzeit = sy-uzeit.
ls_log-zpernr = sy-uname.
ls_log-request = iv_body.
"创建客户端请求
CALL METHOD cl_http_client=>create_by_url
EXPORTING
url = lv_service
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 ).
ev_msg = lv_message.
ev_type = 'E'.
ENDIF.
IF ev_type NE 'E'.
CALL METHOD http_client->request->set_header_field
EXPORTING
name = 'Content-Type'
value = 'application/json'. "'application/JSON; charset=utf-8'.
CALL METHOD http_client->request->set_method( 'POST' ).
IF iv_body IS NOT INITIAL.
CALL METHOD http_client->request->set_cdata
EXPORTING
data = iv_body
offset = 0
length = strlen( iv_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 ).
ev_msg = lv_message.
ev_type = 'E'.
ENDIF.
ENDIF.
IF ev_type NE 'E'.
"读取远程服务返回的处理过结果。
CALL METHOD http_client->receive
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3.
IF sy-subrc = 0.
DATA(result) = http_client->response->get_cdata( ).
ls_log-response = result.
"解析JSON串
/ui2/cl_json=>deserialize( EXPORTING json = result pretty_name = /ui2/cl_json=>pretty_mode-camel_case CHANGING data = ls_result ).
IF ls_result-success = '0'.
ev_msg = ls_result-errmsg.
ev_type = 'E'.
ELSEIF ls_result-success = '1'..
ev_msg = '传输成功'.
ev_type = 'S'.
ELSE.
ev_msg = '返回状态为空' && http_client->response->get_cdata( )."'接口连接失败'.
ev_type = 'E'.
ENDIF.
ELSE.
ev_msg = http_client->response->get_cdata( )."'接口连接失败'.
ev_type = 'E'.
ENDIF.
ENDIF.
"日志保存
ls_log-ztype = ev_type.
ls_log-zmsg = ev_msg.
APPEND ls_log TO lt_log.
MODIFY zt_log FROM TABLE lt_log.
COMMIT WORK.边栏推荐
- Microservice tracking SQL (support Gorm query tracking under isto control)
- Opencv learning note 4 -- bank card number recognition
- What are the EN ISO 20957 certification standards for common fitness equipment
- JS中箭头函数和普通函数的区别
- Opencv Learning Notes 6 -- image feature [harris+sift]+ feature matching
- Skywalking 6.4 distributed link tracking usage notes
- Returning to the top of the list, the ID is still weak
- [antenna] [3] some shortcut keys of CST
- 异常检测中的浅层模型与深度学习模型综述(A Unifying Review of Deep and Shallow Anomaly Detection)
- skywalking 6.4 分布式链路跟踪 使用笔记
猜你喜欢

Lean Six Sigma project counseling: centralized counseling and point-to-point counseling

Filter & (login interception)

Basic use process of cmake

phpcms后台上传图片按钮无法点击
![Stm32f411 SPI2 output error, pb15 has no pulse debugging record [finally, pb15 and pb14 were found to be short circuited]](/img/ea/8c9f716717bc08f2e563c577738ec8.png)
Stm32f411 SPI2 output error, pb15 has no pulse debugging record [finally, pb15 and pb14 were found to be short circuited]

【STM32学习】 基于STM32 USB存储设备的w25qxx自动判断容量检测

Wechat official account subscription message Wx open subscribe implementation and pit closure guide

Hardware design guide for s32k1xx microcontroller

JS中箭头函数和普通函数的区别

MySQL 服务正在启动 MySQL 服务无法启动解决途径
随机推荐
Survey of intrusion detection systems:techniques, datasets and challenges
MySQL 服务正在启动 MySQL 服务无法启动解决途径
《QT+PCL第六章》点云配准icp系列5
Rhcsa fourth day operation
Redis秒杀demo
Zhang Chi Consulting: lead lithium battery into six sigma consulting to reduce battery capacity attenuation
k8s部署redis哨兵的实现
Introduction to MySQL audit plug-in
点云重建方法汇总一(PCL-CGAL)
【目标跟踪】|模板更新 时间上下文信息(UpdateNet)《Learning the Model Update for Siamese Trackers》
go-zero实战demo(一)
《性能之巅第2版》阅读笔记(五)--file-system监测
采集数据工具推荐,以及采集数据列表详细图解流程
opencv学习笔记六--图像拼接
opencv学习笔记五--文件扫描+OCR文字识别
Qt+pcl Chapter 6 point cloud registration ICP Series 2
项目中字符串判空总结
Opencv Learning Notes 6 -- image mosaic
Beilianzhuguan joined the dragon lizard community to jointly promote carbon neutralization
STM32F4-TFT-SPI时序逻辑分析仪调试记录