PO 发布SAP SProxy->外围系统 WebService

通信概览图

外围系统与PO、SAP的请求响应通信过程大致可以用下图描述
(个人整理所得,可能有误,欢迎指正)
在这里插入图片描述

1. 前期准备

1.1 外围系统提供WebService接口

以A系统的RFC发布WebService接口
RFC发布WebService接口
在这里插入图片描述
获取到WSDL地址,下载WSDL文件到本地
SAP的WSDL文件有些特殊,需要把WSDL的Policy段注释掉,否则导入PO会出问题
在这里插入图片描述

1.2 PO端

需要提前将SAP的RFC注册到PO的ESB中,具体配置是PO顾问前期初始化的时候做的,应该是在SM59要配置PO和SAP的什么连接,这部分不是很清楚,猜测是下图的SM59连接
在这里插入图片描述

1.3 个人PC

必须提前在开发PO的电脑上安装Java环境,我装的Java1.8是ok的
在这里插入图片描述

2. Enterprise Services Repository

2.1 建立工作区

通过PO顾问给的POD地址:【http://{PO服务器域名}:50000//dir/start/index.jsp】进入POD页面
点击Enterprise Services Builder,下载Java小程序
在这里插入图片描述
运行Java小程序之后会见到如下页面,一般会按公司->对接系统->模块来分别新建版本->工作区->文件夹
在版本下新建DEMO系统的工作区,随后分模块将对应的接口放到各模块文件夹下,假设航班接口属于MM模块,则建立如下所示结构,建立完成需要保存并激活
在这里插入图片描述

2.2 导入WSDL

新建external definition 外部定义
在这里插入图片描述
选择WSDL文件,如果是SAP导出的WSDL需要把policy段注释掉,参考1.1节
点击导入后不报错就可以保存激活
在这里插入图片描述

2.3 新建入参Mapping映射

在这里插入图片描述
新建对象Mapping Object->Message Mapping
在这里插入图片描述
依次点击Definition->小方格->Source Message->Find Design Object
在这里插入图片描述
依次打开对象直到选中先前导入的ED文件中的入参结构
在这里插入图片描述
依次点击Definition->小方格->Target Message->Find Design Object
在这里插入图片描述
依次打开对象直到选中先前导入的ED文件中的入参结构
在这里插入图片描述
导入之后请求双方都有结构了,然后选中顶层节点,拖拽左侧的小点连线至右侧的小点
在这里插入图片描述
连接完成后两侧小点会变色,下方的面板处也会有两个节点的连线
在这里插入图片描述
在连接完顶层小点后,点击红色方框标注的按钮,即可自动完成字段名称相同字段的映射
在这里插入图片描述
在这里插入图片描述
这样SAP的入参和外围系统的入参就能mapping上了,前提是SAP和外围系统使用相同入参
在这里插入图片描述

2.4 新建出参Mapping映射

在这里插入图片描述

和新建入参操作一致,只是需要选择出参的Response
在这里插入图片描述
最后效果如下
在这里插入图片描述

2.5 新建Service Interface

SAP与PO是通过SI_OUT进行通信的(参考顶端图片SI_OUT部分),而PO与外围系统是通过SI_IN通信,所以需要分别配置PO与SAP的SI_OUT和PO与外围系统的SI_IN
在这里插入图片描述
新建SI_OUT
在这里插入图片描述
依次选择Outbound->Synchronous->External Message
请求的入参选择前方导入2.2节的入参ED结构
请求的出参选择前方导入2.2节的出参ED结构
正常如果要自定义请求的入参和出参,需要再额外构建DT和MT,但是直接使用ED的结构可以省去该步骤
在这里插入图片描述
新建SI_IN
在这里插入图片描述

依次选择Inbound->Synchronous->External Message
请求的入参选择前方导入2.2节的入参ED结构
请求的出参选择前方导入2.2节的出参ED结构
在这里插入图片描述
保存激活即可

2.6 新建Operation Mapping

Operation Mapping就是将出站和入站的SI服务接口串联起来
在这里插入图片描述
在这里插入图片描述
新建Operation Mapping操作映射
在这里插入图片描述
左侧选中SI_OUT,右侧选中SI_IN,下方的message mapping填入MM_REQ
(我下面的图里选错了,选到REST的MM_REQ了,排查了半天错误…各位同僚切勿粗心大意)
在这里插入图片描述
点击保存后,会出现Request的页签,刚刚的值其实都是在request当中的
(我下面的图里选错了,选到REST的MM_REQ了,排查了半天错误…各位同僚切勿粗心大意)
在这里插入图片描述
切到Response页签,下方的message mapping填入MM_REQ
在这里插入图片描述
保存激活即可

3. Intergration Builder

通过PO顾问给的POD地址:【http://{PO服务器域名}:50000//dir/start/index.jsp】进入POD页面
点击Integration Builder,下载Java小程序
在这里插入图片描述
展开 Communication Comonent Without Party,其中 Business System 和 Business Component 都可以定义SAP系统以及外部系统等通讯对象。一般 Business System 用于定义 SAP系统(如BS_DEV_300),Business Component 用于定义非SAP系统(如此处定义的外部调用方 BC_TEST_CX)
在这里插入图片描述

3.1 建立BS-SOAP Communication Chanel发送信道

SOAP信道接收来自SAP 代理类的XML请求报文并发给SI_OUT进入到Mapping,或接收来自外围系统SOAP接口Mapping后传递给SI_OUT服务接口的XML报文
在这里插入图片描述
在这里插入图片描述

新建BS_DEV_400 的SOAP CC信道
在这里插入图片描述
新建CC 信道对象
在这里插入图片描述
选择SOAP适配器,再选择消息协议XI 3.0,保存即可
在这里插入图片描述

3.2 建立BC-SOAP Communication Chanel接收信道

SOAP信道发送来自Mapping后传递给SI_OUT的SAP XML报文;或接收来自外围系统的XML报文
在这里插入图片描述
在这里插入图片描述
在BC下新建BC_DEMO系统,一个外围系统方建一个BC就好了
在这里插入图片描述
双击BC_DEMO系统,添加2.5小节新建的SI_OUT发送端服务接口到该系统下
在这里插入图片描述
在BC_DEMO系统创建航班查询SOAP 接收信道
在这里插入图片描述
输入信道名称
在这里插入图片描述
选择SOAP的接收器类型
在这里插入图片描述
参考下图维护字段
在这里插入图片描述

SOAP接口地址是SOAP UI里面URL的地址,不要填成WSDL的地址了,不清楚就问外围系统直接要
在这里插入图片描述

保存激活即可

3.3 建立Integrated Configuration 集成配置

集成配置用来处理入站和出站的请求,将外围系统不同类型的请求分配到指定的信道中,并在最后返回对方响应
在这里插入图片描述
在这里插入图片描述
新建集成配置
在这里插入图片描述

3.3.1 Inbound Processing页签

选择发送的SOAP信道
在这里插入图片描述

3.3.2 Reciver 页签

在这里插入图片描述

3.3.3 Outbound Processing 页签

在这里插入图片描述

3.3.4 Reciver Interface 页签

在这里插入图片描述

3.3.5 Advanced Settings 页签

这里勾选的目的是为了让PO记录日志
在这里插入图片描述

5. SAP 配置SPROXY

SPROXY进入代理类,一直点点点,找到service consumer下面的SI_OUT对象
在这里插入图片描述
双击SI_OUT对象
在这里插入图片描述
前缀给个Z就好了,也可以加上模块,然后点击完成即可
在这里插入图片描述
一般没啥要修改的,直接激活就好了
在这里插入图片描述

如果后续在PO的ED里面修改结构了需要在代理类这里点Regenerate重新生成,再激活一下
在这里插入图片描述
记下这个代理类的名字,后面会用
在这里插入图片描述

6. SAP 测试SPROXY代理类

参考第5节的代理类名字,在程序里新建对象
用下述简单代码即可测试

  DATA: lo_po  TYPE REF TO zco_si_mm002_erp2demo_out,ls_req TYPE zzdemo_temp032,ls_res TYPE zzdemo_temp03response2.lo_po = NEW #( ).ls_req-it_fldate-item = VALUE #( ( sign = 'I' option = 'BT' low = '1990-01-01' high = '2000-01-01' ) ).ls_req-et_data-item = VALUE #( ( carrid = '1' ) ).TRY .lo_po->si_mm002_erp2demo_out(EXPORTINGoutput = ls_reqIMPORTINGinput  = ls_res).CATCH cx_root INTO DATA(lo_error).DATA(lv_msg) = '接口异常'.ENDTRY.cl_demo_output=>display( ls_res ).

双击代理类,可以看到有个SI_OUT的方法
在这里插入图片描述
选中SI_OUT,切到参数,即可查看对应的传入传出参数类型
在这里插入图片描述
测试结果
在这里插入图片描述

5. 消息查看器查看报文

实在是懒得再写一遍了,用REST那篇的内容复制过来了,方法基本类似
打开POD界面,点击Configuration and Monitoring Home
在这里插入图片描述
转到Monitoring->Adapter Engine->Message Monitor
在这里插入图片描述
可以在下方看到成功/失败的报文
在这里插入图片描述

5.1 失败的PO日志

点击失败的报文的数字,进入到该页面可以看详细信息,点击下方失败的请求
在这里插入图片描述
点击message log可以查看PO返回的接口失败日志,这里就是RFC适配器登录信息填错了所以报错了
在这里插入图片描述

5.2 查看PO报文Payload

点击成功的报文的数字,进入到该页面可以看详细信息
在这里插入图片描述
选中成功的消息,点击Open Message
第0行是外围系统传入的报文
在这里插入图片描述
第1行是PO加上外层元素准备传入RFC的报文
在这里插入图片描述
第2行是PO传入RFC的报文
在这里插入图片描述
第3行是RFC返回PO的报文
在这里插入图片描述
第4行是PO将RFC的XML转换成JSON并删除最外层元素后返回给外围系统的报文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/581864.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是MLOps?

人工智能(AI)和机器学习(ML)应用激动人心的发展浪潮也许会让人相信,企业交付ML产品的能力也在迅速提高。但现实情况是,ML内部流程很难跟上行业的整体发展……但若以MLOps的形式则有希望解决此问题&#xff…

一文让你读懂Python中的Response对象

目录 引言 一、Response对象简介 二、Response对象的组成 三、Response对象的创建 1、使用内置的http.client模块: 2、使用requests库: 3、使用Django框架: 四、Response对象的处理 1、发送给客户端: 2、设置响应头&…

来看看这个技术,这才是UPS监控的最好方式!

在现代社会中,信息技术的持续发展使得机房UPS监控变得至关重要。机房是企业信息系统的核心,UPS监控系统能够确保在电力故障或其他问题发生时,机房设备能够持续稳定运行,从而保障数据的安全性和可用性。 客户案例 金融机构 河北某…

fork函数详解【Linux】

fork函数详解【Linux】 fork函数的概念fork调用后的底层细节解释fork学习中的一些笔记和问题fork的写实拷贝深拷贝的策略 fork调用失败的原因 fork函数的概念 调用fork函数可以在已存在的进程中创建一个子进程,此时,新进程叫做子进程,原进程叫…

Spring Boot 入参校验及全局异常处理

版本依赖 JDK 17 Spring Boot 3.2.0 源码地址:Gitee Spring Boot validation spring-boot-starter-validation是基于hibernate-validator的实现,在Spring Boot项目中直接导入spring-boot-starter-validation即可。 Valid 和 Validated 的区别 适用范围…

《对话品牌》——活到老“养”到老

本期节目《对话品牌》栏目组邀请到了深圳壹常青健康管理有限公司董事长邬锡娣女士参加栏目录制,分享其企业故事,树立品牌形象,提升品牌价值! 节目嘉宾:邬锡娣女士 节目主持人:董倩 节目播出平台&#xf…

在线教育系统源码解读:定制化企业培训APP的开发策略

当下,企业培训正经历着一场数字化的迭代,定制化企业培训APP应运而生,成为提升员工技能、推动企业发展的重要工具。下文小编将与大家一同深入了解在线教育系统的源码,探讨开发定制化企业培训APP的策略,以满足不同企业的…

C#获取windows系统资源使用情况

1.前言 之前有一篇博客介绍如何获取Linux服务器上的资源使用情况《Java 获取服务器资源(内存、负载、磁盘容量)》,这里介绍如何通过C#获取Window系统的资源使用。 2.获取服务器资源 2.1.内存 [DllImport("kernel32.dll")][retu…

jenkins解决工具找不到的问题

--------------------------插件选择版本最好能跟服务器对上

香橙派5plus从ssd启动Ubuntu

官方接口图 我实际会用到的就几个接口,背面的话就一个M.2固态的位置: 其中WIFI模块的接口应该也可以插2230的固态,不过是pcie2.0的速度,背面的接口则是pcie3.0*4的速度,差距还是挺大的。 开始安装系统 准备工作 一张…

C语言中关于switch语句的理解

首先我们来看一下switch的定义 switch(整型表达式) { case 整型常量表达式: 语句; } 我们在书写时要注意一下,无论是在switch还是case,后面跟着的都一定要是整型,而且case这一行写完时,最后要用…

图片放大后变模糊了怎么办?这个方法惊艳你

我们需要了解为什么图片放大会模糊。在照片放大时,像素也会随之增加。如果图片的像素不足,那么放大后每个像素的大小也会增加,从而导致细节模糊。 那么,面对这个问题,我们该如何解决呢?别急,让…

狗笼,预计2028年将以 6.2%的复合年增长率增长

对于想要为爱犬提供安全舒适空间的宠物主人来说,狗笼是必不可少的宠物配件。由于宠物主人的数量不断增加以及人们对宠物安全和福祉的意识不断增强,狗笼市场一直在稳步增长。 全球市场分析:全球狗笼市场预计从 2021 年到 2028 年将以 6.2% 的复…

axios配置请求头content-type 和 get/post请求方式

axios配置请求头content-type https://blog.csdn.net/wojiushiwo945you/article/details/107653962 axios 是Ajax的一个插件,axios虽然是一个插件,但是我们不需要通过Vue.use(axios)来使用,下载完成后,只需在项目中引入即可。(一…

NFC刷卡soc芯片SI3262集成刷卡+触摸+ACD超低功耗一体

简介 13.56mhz刷卡soc芯片SI3262集成刷卡触摸ACD超低功耗,ACD模式刷卡距离可达到5cm以上,非常适用于小体积门锁,密码锁,柜锁,接下来介绍一下这款芯片的具体功能。 优势 1.超低功耗,最低功耗达 1.7uA&…

揭秘跨境电商ERP源码定制化需求及最佳实践

跨境电商ERP源码的定制化需求是跨境电商企业在整个ERP系统开发实施过程中需要重点关注的问题之一。本文将围绕跨境电商ERP源码定制化的需求和最佳实践展开深入探讨,为行业内的从业者和相关人士提供一些建议和思路。 定制化需求 跨境电商ERP的业务特点决定了对源码…

8.小明和完美序列

题目 import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt();sc.nextLine();Map<Integer,Intege…

Flask登陆后登陆状态及密码的修改和处理

web/templates/common 是统一布局 登录成功 后flask框架服务器默认由login.html进入仪表盘页面index.html(/),该页面的设置在 (web/controllers/user/index.py)&#xff0c;如果想在 该仪表盘页面 将 用户信息 展示出来&#xff0c;就得想办法先获取到 当前用户的 登陆状态。…

2022年全国职业院校技能大赛高职组云计算正式赛卷第三场-公有云

2022 年全国职业院校技能大赛高职组云计算赛项试卷 【赛程名称】云计算赛项第三场-公有云 目录 2022 年全国职业院校技能大赛高职组云计算赛项试卷 【赛程名称】云计算赛项第三场-公有云 【任务 1】公有云服务搭建[10 分] 【任务 2】公有云服务运维[10 分] 【任务 3】公有云运维…

03.MySQL的体系架构

MySQL的体系架构 一、MySQL简介二、MySQL的体系架构三、MySQL的内存结构四、MySQL的文件结构 一、MySQL简介 MySQL是一个开源的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;由瑞典MySQL AB公司开发&#xff0c;后被Sun公司收购&#xff0c;Sun公司被Oracle…