本文主要是介绍CPI系列 透传S4的webservice,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
点击蓝字 关注我们
一
前言
CPI是SAP公司提供的云服务,功能类似于PI/PO,用于集成多个系统之间的调用
本文主要介绍怎么通过CPI调用S4系统发布的WEBSERVICE.(相当于通过CPI透传S4系统的WEBSERVICE)
二
S4系统创建WEBSERVICE
详细过程见链接
无峰,公众号:ABAP 技巧与实战SAP操作手册之 RFC函数发布WEB服务
注意以下事项
S4系统创建RFC函数, 把RFC函数发布成WEBSERVICE.
SOAMANAGER配置服务时,需要根据S4系统的配置确定使用http 或 https(图一)
S4系统怎么配置使用http 或https不太清楚. 但是可以根据soamanager事务代码跳出的网页界面的地址确定. 如果跳出地址是https. 这里就选用https . 否则选用http
图一
选用错误可能导致SOAPUI测试WEBSERVICE时报错 如图二是WEBSERVICE 选择了http,测试执行时报错.
这个错误很有迷惑性 . 看起来是服务器接收到的参数 content-type 的内容 text/html 不正确.
错误原因: 客户端实际发送的参数是text/xml . 由于WEBSERVICE服务是http ,S4系统配置了HSTS((HTTP Strict Transport Security)https.系统自动转换http为https时,调整了content-type参数内容. 导致这个报错.
图二
通过SOAPUI测试通过S4/CAR系统发布的WEBSERVICE.如图三是测试的发出消息及成功后接收的消息
图三
二
导出WSDL并调整
WSDL定义调整基于NOTES 2573685 ,如果未调整, CPI接口调用将会在消息监控中看到报错信息
修改wsdl定义文件 删除第一个找到的串 HttpsToken 的节点.
SOAMANAGER配置S4的WEBSERVICE 时最好设置无认证.
用火狐浏览器(可以另存文件的浏览器都可以)打开S4 WSDL定义
推荐使用XMLSPY软件 打开WSDL定义文件.可以找到httpstoken 节点(只需要找到并删除第一个). 删除这个节点(红框中的内容)
如果S4的SOAMAGER中配置了基本验证. 这里的信息会有点差异, 需要把 两个串删除,
三
联通CPI与S4/CAR系统
因为 S4/CAR系统在内网环境(云服务器通过专线连接或企业内网),CPI是公网环境. 所以需要使用SAP CLOUD CONNECT (类似与反向代理服务器)把内网地址映射到SAP BTP中,供CPI使用. 创建连接时, 需要输入一个locationn ID (图一). 这个ID在后续CPI配置接口连接S4系统时需要.
SAP CLOUD CONECT 是SAP提供的反向代理软件, 可以安装在本地电脑(可以使用SAP提供的CLOUD CONECT 服务,也可以自行在一台同时可以访问内网/外网的服务器上安装)
创建连接时需要云服务器地区,BTP子账号,连接子账号的用户/密码(如图四)
其中子账号可以在登录SAP BTP后查找(如图五)
成功创建的连接可以在右上角启动或断开连接(如图六)
启动后的连接可以在SAP BTP中查看连接状态(如图八)
图四
图五
图六
图七
图八
四
CPI 配置接口
登录SAP BTP,点击Integration Suite地址:
点击Design, Develop, and Operate Integration Scenarios 进入云集成
点击设计菜单进入设计页面
点击创建按钮创建开发包
进入创建好的开发包,点击编辑进入修改模式
在修改模式下创建新的integration flow (iflow)
输入名称,描述等信息后,点击确定
点击一个保存的iflow
点击编辑进入修改模式
在修改模式点击sender.拖动箭头连接 start节点
在弹框中选择SOAP, 继续选择SOAP 1.X
选中SOAP连线, 拖动窗口或点击外部化,可以编辑SOAP的属性,推荐使用外部化的方式, 这样可以为连接属性设置参数.后续可以通过调整参数改变连接属性
connection 标签中设置 SOAP的相关属性
address: 调用CPI的服务的地址片段,用于区分不通的服务,必须唯一
URL to WSDL: 把S4系统发布的wsdl的定义另存为文件, 通过选择按钮,弹窗中从文件系统上传.
service/endpoint: 自动从WSDL文件中获取
备注: 这里附加wsdl 可以让最终生成的CPI的webservice 的WSDL带有业务字段信息.
点击 END节点
拖动箭头连接 receiver,同样选择SOAP, SOAP1.X
选中SOAP箭头,点击外部化,进入SOAP RECEIVER 的属性设置
address : 来自SOAPUI中测试调用S4的WEBSERVICE的调用地址. 需要注意的是,如果S4地址可以在公网直接访问, 这里可以直接使用该地址. 如果公网不能直接访问, 则需要把域名端口部分修改成虚拟地址. 该虚拟地址来自与 CLOUD CONNECT 的配置,同时把https替换成http . (如果https 未替换成http,部署会失败)
Proxy Type : 如果公网可以访问S4,使用internet 否则选择On-premise
Location ID: 配置CLOUD CONNECT 时维护的值
URL to WSDL: 再次选择使用之前上传的文件
Authentication: 验证方式选择Basic(S4发布WEBSERVICE也选择这个)
Credential Name: 验证用户需要使用单独配置好的(后面详细介绍).
保存并部署iflow. 如果保存部署报错. 请检查发出段SOAP 属性中的地址的唯一性.
查看部署状态, 空白出点击,拖动窗口显示部署状态. 已启动, 导航到管理集成内容
这里可以获取调用地址及WSDL定义
五
配置验证账号
进入SAP BTP 云集成,点击监控器. 点击管理安全性的安全材料
创建用户凭据
输入名称 ,登录S4系统的用户名,密码后,点击部署即可.
六
SOAPUI测试
请使用SOAPUI 5.2.1以上版本测试(低版本的会在SOAPUI中报下图的错误)
测试步骤如下
创建一个SOAP测试
输入文档中提到的WSDL定义文件(从CPI的管理集成内容找到Iflow下载).
输入后的界面中,可以调整project Name
创建的项目
展开后双击reques 1节点
把?替换成业务内容, 或者整体使用文档中的传入消息示例替换
添加授权检查
使用基本授权验证
输入文中提到的用户名, 密码信息(来自CPI SERVICE KEY ) .
用户名 clientid
密码 clientsecret
点击执行,可以看接口执行结果. 返回消息中, S表示成功
七
总结
本文只是介绍了CPI的一个最基本的应用:S4发布WEB服务通过CPI让外网系统调用. 这也是企业应用中最常见的一个接口场景. 基本上可以实现所有数据从外围系统传到S4系统的需求.
本文介绍的场景配置的是同步接口. 通过对CPI监控的了解. 发现CPI监控似乎不具备报错消息重新发送的功能. 因此感觉不太适合异步接口使用. 因此推荐配置成同步接口.
因为是同步接口, 因此对S4中的函数性能要求较高. 如果涉及业务处理, 建议通过在同步函数中调用qrfc或者bgrfc启用队列处理真实的业务(或者记录自定义表或者产生IDOC, 后续再处理产生业务单据).
qrfc调用详见链接
无峰,公众号:ABAP 技巧与实战SAP小技巧 关于qRFC调用
bgrfc调用详见链接
无峰,公众号:ABAP 技巧与实战SAP小技巧 使用bgRFC优化TRFC,QRFC
这篇关于CPI系列 透传S4的webservice的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!