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

ABAP - 系统集成之SAP的数据同步到OA(泛微E9)服务器数据库

  • 需求背景

       项目经理说每次OA下单都需要调用一次SAP的接口获取数据,导致效率太慢了,能否把SAP的数据保存到OA的数据库表里,这样OA可以直接从数据库表里获取数据效率快很多。思来想去,提供了两个方案。

  1.  在集群SAP节点下增加一个SQL Server数据库,通过ABAP技术把SAP数据写进SAP节点下的SQL Server,然后做集群下的主从复制,将SAP下的SQL Server复制到OA节点下的SQL Server。
  2. OA对外发布保存数据的接口,供SAP调用,SAP传入数据,OA接口保存。

项目经理经决定采用了方案2.

  • OA对外发布API的方式很多,本文采用建模引擎发布RESTFul API 的方式
  • 步骤一:OA系统对外发布RESTful API
  • 建模引擎操作在接口管理处新增一个RESTful接口,如图1.1所示,给新建的RESTful接口授权,如图1.2所示。

图 1.1

图 1.2

下载API文档,如图1.3所示

图1.3

使用POSTMAN测试

Tips1:设置请求头,如图1.4所示

图1.4

Tips2:设置请求体,先整理data报文,如图1.5所示,raw正文的数据即便是留着在那里也不会有影响,把整理好的data报文复制到表单格式的参数里,如图1.6所示。

图1.5

图1.6

测试结果如图1.7所示

图1.7

建模表单处查看数据,实现效果如图1.8所示

图1.8

  • SAP系统调用OA发布RESTful API
  DATA(lv_send_data) = /ui2/cl_json=>serialize( data      = ls_postcompress    = abap_falsepretty_name = /ui2/cl_json=>pretty_mode-camel_case ).DATA(lv_url) = `http://ip:port/api/cube/restful/interface/saveOrUpdateModeData/SAPStckSyn`.cl_http_client=>create_by_url( EXPORTING url    = lv_urlIMPORTING client = DATA(lo_http_client) ).
//设置请求头lo_http_client->request->set_header_field( name = 'Content-Type' value = 'application/x-www-form-urlencoded; charset=utf-8' ).//设置请求方式lo_http_client->request->set_method( if_http_request=>co_request_method_post ).//设置请求体表单lo_http_client->request->set_form_field( name = 'datajson' value = lv_send_data ).//发送请求调用OA RESTful APIlo_http_client->send( EXCEPTIONS http_communication_failure = 1http_invalid_state         = 2  ).IF sy-subrc NE 0.lo_http_client->get_last_error( IMPORTING message = DATA(lv_send_msg) code = DATA(lv_send_code) ).ENDIF.//获取服务器响应lo_http_client->receive( EXCEPTIONS http_communication_failure = 1http_invalid_state         = 2http_processing_failed     = 3 ).IF sy-subrc EQ 0.DATA(lv_response) = lo_http_client->response->get_cdata( ).ELSE.lo_http_client->get_last_error( IMPORTING message = DATA(lv_rece_msg) code = DATA(lv_rece_code) ).ENDIF.//将服务器响应Json报文转换成SAP结构/ui2/cl_json=>deserialize( EXPORTING json = lv_responsepretty_name = /ui2/cl_json=>pretty_mode-camel_caseCHANGING data = ls_success_receive ).IF ls_success_receive-status NE `1`.MESSAGE 'SAP库存同步OA失败' TYPE 'S' DISPLAY LIKE 'E'.ENDIF.

  

http://www.lryc.cn/news/499034.html

相关文章:

  • uniapp使用ucharts修改Y、X轴标题超出换行
  • 三分钟详细解读什么是Ecovadis认证?
  • spring6:4、原理-手写IoC
  • 爬取的数据能实时更新吗?
  • Linux 下使用飞鸽传书实现与Windows飞秋的通信
  • MongoDB分片集群搭建及扩容
  • qt QSettings详解
  • 【Linux】ubuntu下一键配置vim
  • 【NLP 9、实践 ① 五维随机向量交叉熵多分类】
  • 信息系统安全防护攻防对抗式实验教学解决方案
  • 【笔记2-4】ESP32:freertos任务创建
  • 2024年12月6日Github流行趋势
  • matlab读取NetCDF文件
  • RDMA驱动学习(三)- cq的创建
  • Flask使用Celery与多进程管理:优雅处理长时间任务与子进程终止技巧(multiprocessing)(subprocess)
  • Django模板系统
  • 15. 文件操作
  • 清风数学建模学习笔记——Topsis法
  • 组合总和习题分析
  • 基于eFramework车控车设中间件介绍
  • L17.【LeetCode笔记】另一棵树的子树
  • BGP通过route-policy路由策略调用ip-prefix网络前缀实现负载均衡与可靠性之AS-path属性
  • 每日速记10道java面试题14-MySQL篇
  • 内存图及其画法
  • Ansys Maxwell:Qi 无线充电组件
  • 【Shell 脚本实现 HTTP 请求的接收、解析、处理逻辑】
  • 【北京迅为】iTOP-4412全能版使用手册-第六十七章 USB鼠标驱动详解
  • 【青牛科技】拥有两个独立的、高增益、内部相位补偿的双运算放大器,可适用于单电源或双电源工作——D4558
  • Kafka 数据写入问题
  • 实战ansible-playbook(九)-profile配置- 确保 CUDA 和 MPI 环境变量正确设置并立即生效