当前位置: 首页 > news >正文

SAP调用api

之前是把SAP程序封装成api,然后又接到了需求是sap调用其他api,直接上代码吧
 

FUNCTION ZRFC_PP_016.
*"----------------------------------------------------------------------
*"*"Local interface:
*"  IMPORTING
*"     VALUE(CHARG) TYPE  CHARG_D
*"  EXPORTING
*"     VALUE(STATUS) TYPE  STRING
*"     VALUE(CODE) TYPE  STRING
*"     VALUE(MESSAGE) TYPE  STRING
*"     VALUE(DATA) TYPE  STRING
*"     VALUE(LOCATION) TYPE  STRING
*"----------------------------------------------------------------------DATA:lo_http_client TYPE REF TO if_http_client,lv_json_out    TYPE string,lv_json_in     TYPE string,lv_url         TYPE string,lv_len         TYPE i,lv_json        TYPE string,lv_json1       TYPE string,lv_json_list   TYPE string.TYPES:tt_string_list TYPE TABLE OF string WITH DEFAULT KEY,BEGIN OF ty_charg,systemlot TYPE tt_string_list,END OF ty_charg.DATA:ls_charg TYPE ty_charg." 1. 定义 list 的行结构TYPES: BEGIN OF ty_list,systemLot TYPE string,  " 批次号location  TYPE string,  " 位置END OF ty_list." 2. 定义 list 内表类型(兼容旧版本)TYPES: tt_list TYPE STANDARD TABLE OF ty_list WITH DEFAULT KEY." 3. 定义 data 子结构TYPES: BEGIN OF ty_data,count TYPE i,        " 数量list  TYPE tt_list,  " 列表数据END OF ty_data." 4. 定义主结构TYPES: BEGIN OF ty_json,status  TYPE abap_bool,  " 状态 (true/false)code    TYPE string,     " 状态码message TYPE string,     " 消息文本data    TYPE ty_data,    " 数据内容END OF ty_json." 5. 声明数据结构DATA: ls_json TYPE ty_json.DATA: ls_item TYPE ty_list.  " 使用之前定义的 list 行类型*填入URL:lv_url = '这里填写api'.*1)创建客户端请求CALL METHOD cl_http_client=>create_by_urlEXPORTINGurl                = lv_urlIMPORTINGclient             = lo_http_clientEXCEPTIONSargument_not_found = 1plugin_not_active  = 2internal_error     = 3OTHERS             = 4.IF sy-subrc NE 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITHsy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.ENDIF.*2)转换成JSON格式APPEND charg TO ls_charg-systemlot.CALL METHOD zcl_json=>serializeEXPORTINGdata   = ls_chargRECEIVINGr_json = lv_json.*3)设定传输请求内容格式以及编码格式CALL METHOD lo_http_client->request->set_header_fieldEXPORTINGname  = 'content-Type'value = 'application/json; charset=utf-8'.*4)设定调用方式CALL METHOD lo_http_client->request->set_method( 'POST' ).*5)设置传入字符串lv_json_out = lv_json.lv_len = STRLEN( lv_json_out ).CALL METHOD lo_http_client->request->set_cdataEXPORTINGdata   = lv_json_outoffset = 0length = lv_len.*6)发送数据lo_http_client->send(EXCEPTIONShttp_communication_failure = 1http_invalid_state = 2 ).*7)接收数据CALL METHOD lo_http_client->receiveEXCEPTIONShttp_communication_failure = 1http_invalid_state         = 2http_processing_failed     = 3.*8)读取数据lv_json = lo_http_client->response->get_cdata( ).*9)解析数据CALL METHOD zcl_json=>deserializeEXPORTINGjson = lv_jsonCHANGINGdata = ls_json.IF ls_json-status IS NOT INITIAL.status = ls_json-status.ENDIF.IF ls_json-code IS NOT INITIAL.code = ls_json-code.ENDIF.IF ls_json-message IS NOT INITIAL.message = ls_json-message.ENDIF.IF ls_json-data IS NOT INITIAL.
*   data = ls_json-data.
*取值
*    location = ls_json-data-list-location.LOOP AT ls_json-data-list INTO ls_item.location = ls_item-location.ENDLOOP.ENDIF.ENDFUNCTION.

相关文章:

  • 创客匠人服务体系解析:知识 IP 变现的全链路赋能模型
  • 【网工】华为配置专题进阶篇③
  • FPGA--hello
  • MySQL慢SQL优化全攻略:从诊断到调优
  • C++ 学习笔记精要(二)
  • Android Kotlin 用法对比Java使用小结
  • Dilworth 定理 学习笔记
  • 智能危险品搬运机器人市场报告:行业趋势与未来展望
  • qt常用控件--01
  • 对于网站业务安全SCDN都能够从哪些方面进行保护?
  • Kafka协议开发总踩坑?3步拆解二进制协议核心
  • IP 风险画像网络违规行为识别
  • 语音相关-浏览器的自动播放策略研究和websocket研究
  • Kafka线上集群部署方案:从环境选型到资源规划思考
  • C#学习日记
  • 基于存储过程的MySQL自动化DDL同步系统设计
  • GNU Octave 基础教程(2):第一个 Octave 程序
  • 作为运营,需要在账号中给用户提供什么?
  • 文件管理总结
  • HCIP-数据通信基础
  • 重庆营销型网站随做的好/佛山百度网站排名优化
  • o2o网站建设好么/数据分析一般用什么软件
  • 乐平网站建设/深圳高端网站建设公司
  • 成人高考试卷真题/便宜的seo网络营销推广
  • 网站编辑合适内向的人做吗/海外新闻发布
  • 上海企业信用信息公示系统查询入口/seo百度关键词优化软件