CPI系列 透传S4的webservice

2024-03-05 07:48
文章标签 系列 webservice s4 透传 cpi

本文主要是介绍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

330544a4a85a64f3adcd6864e1fe843c.png

图一

选用错误可能导致SOAPUI测试WEBSERVICE时报错 如图二是WEBSERVICE 选择了http,测试执行时报错.

这个错误很有迷惑性 . 看起来是服务器接收到的参数 content-type 的内容 text/html 不正确.

错误原因: 客户端实际发送的参数是text/xml . 由于WEBSERVICE服务是http ,S4系统配置了HSTS((HTTP Strict Transport Security)https.系统自动转换http为https时,调整了content-type参数内容. 导致这个报错.

b44bb76c63249941fc00731afa34b428.png

图二

通过SOAPUI测试通过S4/CAR系统发布的WEBSERVICE.如图三是测试的发出消息及成功后接收的消息

7db24b7f8fc5f49b0aa8c10645daa9e0.png

图三

导出WSDL并调整

WSDL定义调整基于NOTES 2573685 ,如果未调整, CPI接口调用将会在消息监控中看到报错信息

63081520b267886203926ce5f9b7255f.png

修改wsdl定义文件 删除第一个找到的串 HttpsToken 的节点.

SOAMANAGER配置S4的WEBSERVICE 时最好设置无认证.

933cdb30e7e66b545a7cfe32fda8bdb9.png

用火狐浏览器(可以另存文件的浏览器都可以)打开S4 WSDL定义

84ff4b48ad03c83725164219e254dfac.png

推荐使用XMLSPY软件 打开WSDL定义文件.可以找到httpstoken 节点(只需要找到并删除第一个). 删除这个节点(红框中的内容)

dd3c8cbc40696353eb126be8d04a6cff.png

如果S4的SOAMAGER中配置了基本验证. 这里的信息会有点差异, 需要把 两个串删除,

e58bc6edad688a076724f3efb0542da6.png

联通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中查看连接状态(如图八)

f29e119e4b8ea11eb8e2b38c779ff043.png

图四

5a8df16b89ffbbeb8319e1de993e273e.png

图五

8d064dc2031f2e7fdadfa3825deb4469.png

图六

b62fec7c6e2feccd0eebc9d5cad31a91.png

图七

7580aa1ef4c93adc8beba5daf1a689ea.png

图八

CPI 配置接口

登录SAP BTP,点击Integration Suite地址:

b097a0cfeec07392eedd17d894a1b7ea.png

点击Design, Develop, and Operate Integration Scenarios 进入云集成

fc5102b84f83988a75993cc466ee6616.png

点击设计菜单进入设计页面

d4fc76ecaf1a49db10357e26e859cfcb.png

点击创建按钮创建开发包

facfec2a39dc71202b43383a407f92d8.png

进入创建好的开发包,点击编辑进入修改模式

db9dfc49338cf1660ea177ecd1f37bf4.png

在修改模式下创建新的integration flow (iflow)

b80a43c318ef3a2a648586494e13a010.png

输入名称,描述等信息后,点击确定

fd7da00f60d27bce79293b3c77d7868c.png

点击一个保存的iflow

54d3c29b4eab97b30c1008b45cb1bbf8.png

点击编辑进入修改模式

50c5c51193253f8104368aba06fd74e7.png

在修改模式点击sender.拖动箭头连接 start节点

38352be37a4e75cf4ef63d7b89fe4f0b.png

在弹框中选择SOAP, 继续选择SOAP 1.X

d4dd9f6726545e80d0731c44932cfa7b.png

6cb80e54b4eefff9cdc1650d04d6bf53.png

选中SOAP连线, 拖动窗口或点击外部化,可以编辑SOAP的属性,推荐使用外部化的方式, 这样可以为连接属性设置参数.后续可以通过调整参数改变连接属性

8df7e8ab221a4ac88f55698032ff9a77.png

connection 标签中设置 SOAP的相关属性

address:  调用CPI的服务的地址片段,用于区分不通的服务,必须唯一

URL to WSDL: 把S4系统发布的wsdl的定义另存为文件, 通过选择按钮,弹窗中从文件系统上传.

service/endpoint: 自动从WSDL文件中获取

备注: 这里附加wsdl 可以让最终生成的CPI的webservice 的WSDL带有业务字段信息.

2dad1f5b040e84ef4d95c1ee20ac87cc.png

点击 END节点

d0d132cc0769fb7a6dfefe80aa1f82b9.png

拖动箭头连接 receiver,同样选择SOAP, SOAP1.X

659e7cb68da5505967ce5eeb61a51d0d.png

选中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: 验证用户需要使用单独配置好的(后面详细介绍).

ef8670bfe3d858a0a5454222746081cc.png

f4cc9c93d8c6736a866c96235048f9d6.png

保存并部署iflow. 如果保存部署报错. 请检查发出段SOAP 属性中的地址的唯一性.

4a4a474b021566eb3905c6294c96c936.png

查看部署状态, 空白出点击,拖动窗口显示部署状态. 已启动, 导航到管理集成内容

a0a444648fb39bece18d0832676deaa4.png

这里可以获取调用地址及WSDL定义

200d56ff39f9492fab4199d2284bc38b.png

配置验证账号

进入SAP BTP 云集成,点击监控器. 点击管理安全性的安全材料

0f44c1039e22bb880a94eda8777e6475.png

创建用户凭据

2030e6ad4d8c74532503e894b70609f5.png

输入名称 ,登录S4系统的用户名,密码后,点击部署即可.

162f606a6fbaedd57ec955a2abb94861.png

SOAPUI测试

请使用SOAPUI 5.2.1以上版本测试(低版本的会在SOAPUI中报下图的错误)

12156dfc8909b8b4a65539eaacc46466.png

测试步骤如下

创建一个SOAP测试

341aabe51fe60144a9dec67a223c74f9.png

输入文档中提到的WSDL定义文件(从CPI的管理集成内容找到Iflow下载).

55bb2b810a9775cab84b6068146c3f1d.png

输入后的界面中,可以调整project Name

664dc3a098d28543379f01415f2a26c6.png

创建的项目

ce9898cf31cd6626c64e35efab15aa1c.png

展开后双击reques 1节点

把?替换成业务内容, 或者整体使用文档中的传入消息示例替换

e228952f777ea6b26da8523c697e4121.png

添加授权检查

9b851d227e0844f869e370ad2648de2e.png

使用基本授权验证

13f1ffa078ce5f0bebc1ca696203a2d6.png

输入文中提到的用户名, 密码信息(来自CPI SERVICE KEY ) .

用户名 clientid

密码   clientsecret

817cdb451849b2f1f12b98893e475e15.png

24318fb68c2d6c631ed9fed68c1983e9.png

点击执行,可以看接口执行结果. 返回消息中, S表示成功

176ab2e4e324cdb628414c55675bf09b.png

总结

本文只是介绍了CPI的一个最基本的应用:S4发布WEB服务通过CPI让外网系统调用. 这也是企业应用中最常见的一个接口场景. 基本上可以实现所有数据从外围系统传到S4系统的需求.

本文介绍的场景配置的是同步接口. 通过对CPI监控的了解. 发现CPI监控似乎不具备报错消息重新发送的功能. 因此感觉不太适合异步接口使用. 因此推荐配置成同步接口.

因为是同步接口, 因此对S4中的函数性能要求较高. 如果涉及业务处理, 建议通过在同步函数中调用qrfc或者bgrfc启用队列处理真实的业务(或者记录自定义表或者产生IDOC, 后续再处理产生业务单据).

qrfc调用详见链接

无峰,公众号:ABAP 技巧与实战SAP小技巧 关于qRFC调用

bgrfc调用详见链接

无峰,公众号:ABAP 技巧与实战SAP小技巧 使用bgRFC优化TRFC,QRFC

这篇关于CPI系列 透传S4的webservice的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/775782

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0

GPT系列之:GPT-1,GPT-2,GPT-3详细解读

一、GPT1 论文:Improving Language Understanding by Generative Pre-Training 链接:https://cdn.openai.com/research-covers/languageunsupervised/language_understanding_paper.pdf 启发点:生成loss和微调loss同时作用,让下游任务来适应预训

Java基础回顾系列-第七天-高级编程之IO

Java基础回顾系列-第七天-高级编程之IO 文件操作字节流与字符流OutputStream字节输出流FileOutputStream InputStream字节输入流FileInputStream Writer字符输出流FileWriter Reader字符输入流字节流与字符流的区别转换流InputStreamReaderOutputStreamWriter 文件复制 字符编码内存操作流(

Java基础回顾系列-第五天-高级编程之API类库

Java基础回顾系列-第五天-高级编程之API类库 Java基础类库StringBufferStringBuilderStringCharSequence接口AutoCloseable接口RuntimeSystemCleaner对象克隆 数字操作类Math数学计算类Random随机数生成类BigInteger/BigDecimal大数字操作类 日期操作类DateSimpleDateForma

Java基础回顾系列-第三天-Lambda表达式

Java基础回顾系列-第三天-Lambda表达式 Lambda表达式方法引用引用静态方法引用实例化对象的方法引用特定类型的方法引用构造方法 内建函数式接口Function基础接口DoubleToIntFunction 类型转换接口Consumer消费型函数式接口Supplier供给型函数式接口Predicate断言型函数式接口 Stream API 该篇博文需重点了解:内建函数式

Java基础回顾系列-第二天-面向对象编程

面向对象编程 Java类核心开发结构面向对象封装继承多态 抽象类abstract接口interface抽象类与接口的区别深入分析类与对象内存分析 继承extends重写(Override)与重载(Overload)重写(Override)重载(Overload)重写与重载之间的区别总结 this关键字static关键字static变量static方法static代码块 代码块String类特

Java基础回顾系列-第六天-Java集合

Java基础回顾系列-第六天-Java集合 集合概述数组的弊端集合框架的优点Java集合关系图集合框架体系图java.util.Collection接口 List集合java.util.List接口java.util.ArrayListjava.util.LinkedListjava.util.Vector Set集合java.util.Set接口java.util.HashSetjava