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

2024-03-03 2771阅读

通信概览图

外围统与PO、SAP的请求响应通信过程大致可以用下图描述

(个人整理所得,可能有误,欢迎指正)

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

1. 前期准备

1.1 外围系统提供WebService接口

以A系统的RFC发布WebService接口

RFC发布WebService接口

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

获取到WSDL地址,下载WSDL文件到本地

SAP的WSDL文件有些特殊,需要把WSDL的Policy段注释掉,否则导入PO会出问题

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

1.2 PO端

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

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

1.3 个人PC

必须提前在开发PO的电脑上安装Java环境,我装的Java1.8是ok的

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

2. Enterprise Services Repository

2.1 建立工作区

通过PO顾问给的POD地址:【http://{PO服务器域名}:50000//dir/start/index.jsp】进入POD页面

点击Enterprise Services Builder,下载Java小程序

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

运行Java小程序之后会见到如下页面,一般会按公司->对接系统->模块来分别新建版本->工作区->文件夹

在版本下新建DEMO系统的工作区,随后分模块将对应的接口放到各模块文件夹下,假设航班接口属于MM模块,则建立如下所示结构,建立完成需要保存并激活

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

2.2 导入WSDL

新建external definition 外部定义

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

选择WSDL文件,如果是SAP导出的WSDL需要把policy段注释掉,参考1.1节PO 发布SAP SProxy->外围系统 WebService 第9张

点击导入后不报错就可以保存激活

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

2.3 新建入参Mapping映射

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

新建对象Mapping Object->Message Mapping

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

依次点击Definition->小方格->Source Message->Find Design Object

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

依次打开对象直到选中先前导入的ED文件中的入参结构

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

依次点击Definition->小方格->Target Message->Find Design Object

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

依次打开对象直到选中先前导入的ED文件中的入参结构

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

导入之后请求双方都有结构了,然后选中顶层节点,拖拽左侧的小点连线至右侧的小点

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

连接完成后两侧小点会变色,下方的面板处也会有两个节点的连线

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

在连接完顶层小点后,点击红色方框标注的按钮,即可自动完成字段名称相同字段的映射

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

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

这样SAP的入参和外围系统的入参就能mapping上了,前提是SAP和外围系统使用相同入参

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

2.4 新建出参Mapping映射

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

和新建入参操作一致,只是需要选择出参的Response

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

最后效果如下

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

2.5 新建Service Interface

SAP与PO是通过SI_OUT进行通信的(参考顶端图片SI_OUT部分),而PO与外围系统是通过SI_IN通信,所以需要分别配置PO与SAP的SI_OUT和PO与外围系统的SI_IN

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

新建SI_OUT

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

依次选择Outbound->Synchronous->External Message

请求的入参选择前方导入2.2节的入参ED结构

请求的出参选择前方导入2.2节的出参ED结构

正常如果要自定义请求的入参和出参,需要再额外构建DT和MT,但是直接使用ED的结构可以省去该步骤

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

新建SI_IN

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

依次选择Inbound->Synchronous->External Message

请求的入参选择前方导入2.2节的入参ED结构

请求的出参选择前方导入2.2节的出参ED结构

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

保存激活即可

2.6 新建Operation Mapping

Operation Mapping就是将出站和入站的SI服务接口串联起来

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

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

新建Operation Mapping操作映射

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

左侧选中SI_OUT,右侧选中SI_IN,下方的message mapping填入MM_REQ

(我下面的图里选错了,选到REST的MM_REQ了,排查了半天错误…各位同僚切勿粗心大意)

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

点击保存后,会出现Request的页签,刚刚的值其实都是在request当中的

(我下面的图里选错了,选到REST的MM_REQ了,排查了半天错误…各位同僚切勿粗心大意)

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

切到Response页签,下方的message mapping填入MM_REQ

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

保存激活即可

3. Intergration Builder

通过PO顾问给的POD地址:【http://{PO服务器域名}:50000//dir/start/index.jsp】进入POD页面

点击Integration Builder,下载Java小程序

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

展开 Communication Comonent Without Party,其中 Business System 和 Business Component 都可以定义SAP系统以及外部系统等通讯对象。一般 Business System 用于定义 SAP系统(如BS_DEV_300),Business Component 用于定义非SAP系统(如此处定义的外部调用方 BC_TEST_CX)

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

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

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

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

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

新建BS_DEV_400 的SOAP CC信道

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

新建CC 信道对象

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

选择SOAP适配器,再选择消息协议XI 3.0,保存即可

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

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

SOAP信道发送来自Mapping后传递给SI_OUT的SAP XML报文;或接收来自外围系统的XML报文

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

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

在BC下新建BC_DEMO系统,一个外围系统方建一个BC就好了

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

双击BC_DEMO系统,添加2.5小节新建的SI_OUT发送端服务接口到该系统下

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

在BC_DEMO系统创建航班查询SOAP 接收信道

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

输入信道名称

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

选择SOAP的接收器类型

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

参考下图维护字段

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

SOAP接口地址是SOAP UI里面URL的地址,不要填成WSDL的地址了,不清楚就问外围系统直接要

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

保存激活即可

3.3 建立Integrated Configuration 集成配置

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

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

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

新建集成配置

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

3.3.1 Inbound Processing页签

选择发送的SOAP信道

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

3.3.2 Reciver 页签

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

3.3.3 Outbound Processing 页签

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

3.3.4 Reciver Interface 页签

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

3.3.5 Advanced Settings 页签

这里勾选的目的是为了让PO记录日志

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

5. SAP 配置SPROXY

SPROXY进入代理类,一直点点点,找到service consumer下面的SI_OUT对象

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

双击SI_OUT对象

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

前缀给个Z就好了,也可以加上模块,然后点击完成即可

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

一般没啥要修改的,直接激活就好了

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

如果后续在PO的ED里面修改结构了需要在代理类这里点Regenerate重新生成,再激活一下

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

记下这个代理类的名字,后面会用

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

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(
        EXPORTING
          output = ls_req
        IMPORTING
          input  = ls_res
       ).
    CATCH cx_root INTO DATA(lo_error).
      DATA(lv_msg) = '接口异常'.
  ENDTRY.
  cl_demo_output=>display( ls_res ).

双击代理类,可以看到有个SI_OUT的方法

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

选中SI_OUT,切到参数,即可查看对应的传入传出参数类型

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

测试结果

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

5. 消息查看器查看报文

实在是懒得再写一遍了,用REST那篇的内容复制过来了,方法基本类似

打开POD界面,点击Configuration and Monitoring Home

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

转到Monitoring->Adapter Engine->Message Monitor

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

可以在下方看到成功/失败的报文

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

5.1 失败的PO日志

点击失败的报文的数字,进入到该页面可以看详细信息,点击下方失败的请求

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

点击message log可以查看PO返回的接口失败日志,这里就是RFC适配器登录信息填错了所以报错了

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

5.2 查看PO报文Payload

点击成功的报文的数字,进入到该页面可以看详细信息

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

选中成功的消息,点击Open Message

第0行是外围系统传入的报文

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

第1行是PO加上外层元素准备传入RFC的报文

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

第2行是PO传入RFC的报文

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

第3行是RFC返回PO的报文

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

第4行是PO将RFC的XML转换成JSON并删除最外层元素后返回给外围系统的报文


    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]