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,一经查实,立即删除!

相关文章

CSS样式详解之伪类元素及CSS3选择器

目录 一、伪类元素二、CSS3选择器1. 相邻选择器()2. 兄弟选择器(~)3. 指定选择器(nth-of-type(n))4. 子元素指定选择器(子元素匹配选择器)5. 属性选择器① [ 属性名 ]② [ 属性名属性…

什么是MLOps?

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

面试复盘5——后端开发——一面

前言 本文主要用于个人复盘学习,因此为保障公平,所以本文不指出公司名,题目编号只是为了自己区别而已。对待面经,望读者还是更多从其中学习总结,而不是去碰原题。 面试岗位信息 后端开发秋招,上海某大中…

08.Kubernetes node 节点部署

Kubernetes node节点部署比较繁琐,需要配置一堆的配置文件和证书,手动配置特别容易出错。 这就体现出用脚本部署的优势,将繁琐的操作批量自动化 一是极大的提升效率(尤其是节点比较多的时候)二是确保所有节点配置的统一性(配置统一很重要,因为正常情况下,如果某个节点出…

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

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

centos 编译安装 libxml-2.0

centos 编译安装 libxml-2.0 下载地址 我下载的 libxml2-2.9.12.tar.gz 版本 下载后解压&#xff0c;进入解压后的目录 执行&#xff1a; ./configure make && make install安装过程中出现 <Pyghon.h> 找不到的问题&#xff0c;指定了路径之后还是找不到&…

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

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

2660. 保龄球游戏的获胜者 --力扣 --JAVA

题目 给你两个下标从 0 开始的整数数组 player1 和 player2 &#xff0c;分别表示玩家 1 和玩家 2 击中的瓶数。 保龄球比赛由 n 轮组成&#xff0c;每轮的瓶数恰好为 10 。 假设玩家在第 i 轮中击中 xi 个瓶子。玩家第 i 轮的价值为&#xff1a; 如果玩家在该轮的前两轮的任何…

fork函数详解【Linux】

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

SpringBoot当中的Singleton和Prototype详解

在Spring Boot中&#xff0c;Singleton和Prototype是两种Bean的作用域。这两种作用域决定了Spring容器如何创建和管理Bean的实例。 Singleton&#xff08;单例&#xff09;&#xff1a; 当一个Bean被配置为Singleton作用域时&#xff0c;Spring容器在启动时只会创建该Bean的一个…

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

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

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

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

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

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

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

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

jenkins解决工具找不到的问题

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

香橙派5plus从ssd启动Ubuntu

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

常用入门算法

一&#xff1a;快慢指针 适合原地调换一个数组的元素们的位置&#xff0c;使用for循环&#xff0c;声明两个下标&#xff0c;一个移的快&#xff0c;一个移的慢。 快的指针用来往前走&#xff0c;慢的用来停在目标数据上。典型的案例&#xff1a;283. 移动零 1、给定一个数组…

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

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

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

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

MySQL 数据页损坏处理思路

文章目录 前言1. 备份恢复2. 强制 InnoDB 恢复2.1 损坏数据页2.2 观察错误日志2.3 设置参数2.4 定位表信息2.5 分析处理2.6 恢复数据 总结 前言 研发自己搭建了一套 MySQL 没有设置双一参数&#xff0c;机房异常断电&#xff0c;导致数据页出现损坏&#xff0c;本篇文章介绍此…