作者希望通过这篇博文跟大家分享,如何将MES系统和S/4HANA Cloud 系统通过中间件CPI进行集成。本文包括以下几个部分:

1. 集成需求介绍

2. 新集成方案

3. S/4HANA Cloud 配置

4. CPI开发

5. 测试

SAP CPI(Cloud Platform Integration)SAP推出的基于SAP云平台(SAP Cloud Platform)的最新一代云端集成解决方案,可以更好地做到Cloud和On-premise应用,SAP和非SAP应用的数据、流程的集成。


1.集成需求介绍

1.1 核心诉求:

客户已经在使用SAP PI + SAP Cloud Connector + S/4HANA Cloud BAPI的方式来集成MES和S/4HANA Cloud系统。为了将来可以持续使用S/4HANA Cloud的新功能,避免系统更新后的新功能不被BAPI支持,客户希望切换到使用ODATA接口的集成方式。

1.2 当前方案:

目前客户MES系统会异步调用PI SOAP接口,来请求更新Production Order的日期字段。PI会同步调用S/4HANA Cloud相关的BAPI接口。如果调用成功,PI会将成功消息返送给MES系统。如果调用失败,PI会每隔5分钟,再次调用BAPI接口,持续3次。在持续调用不成功的情况下,PI会发送电邮给相关IT管理员,进行错误反馈。


2.新集成方案

2.1方案概览:

Scope item: 3W4

接口:API_PRODUCTION_ORDER_2_SRV

通信安排: SAP_COM_0522

(图1, 系统集成接口概览)

 2.2 安全性概览:

接口的安全认证是通过User + Password的Basic Authentication方式来进行。相关的权限用户见图1。MES系统作为Sender System时,需要携带相关的Certification才能成功调用CPI,详细信息参照下图。

2.jpg


3.S/4HANA Cloud 配置

3.1创建通信系统

如果仅是外部系统要调用S/4HANA CloudHost Name可以是Localhost。当S/4HANA Cloud需要主动向外部发送数据时,Host Name则需要配置外部系统地址。

3.png

3.2创建通信用户

本此案例中,Inbound User至关重要。CPI在调用S/4HANA Cloud接口时,需要使用它来进行权限认证。

4.png

3.3创建通信安排

通信安排是将通信系统和通信案例进行绑定的一个对象。

5.png


4. CPI开发

4.1 异步处理机制:

下图中,第一部分展示了如何利用Datastore将从MES系统接受到的消息进行临时存储。 第二部分展示如何利用定时器将临时存储的消息进行读取和拆分。相关详细信息,可参照:

Datastore: https://help.sap.com/viewer/368c481cd6954bdfa5d0435479fd4eaf/Cloud/en-US/cd48445baf3946409211148a83e4cbbb.html

Timer: https://help.sap.com/viewer/368c481cd6954bdfa5d0435479fd4eaf/Cloud/en-US/ae14ad7916c04ecbaba3d26e2404410a.html?q=Timer 

下图中,Sender是指MES系统,其适配器类型为SOAP Adapter。如何使用SOAP Adapter, 可参照: https://help.sap.com/viewer/368c481cd6954bdfa5d0435479fd4eaf/Cloud/en-US/b84796844ede46d582058f42b47fe2f8.html?q=soap%20adapter

6.png

4.2 消息映射:

我们需要将消息处理成ODATA API所需要的内容和格式。我们可以在iFlow中加入Message Mapping组件来完成这项任务。如何使用Message Mapping,可参照:

https://help.sap.com/viewer/368c481cd6954bdfa5d0435479fd4eaf/Cloud/en-US/459ccdf98a7542d897c1e802d0be800a.html?q=message%20mapping

7.png

8.png

4.3 调用S/4HANA Cloud OData API:

使用OData APIProduction OrderDate字段进行更新。对于更新数据类型的API,我们需要在调用之前,先通过调用GET方法来获取x-csrf-tokene-tagx-csrf-token是用来保证数据更新的安全性,e-tag是用来保证数据更新的一致性。

在这里特别强调,调用GET方法时,请不要尝试去获取任何业务数据。可以通过在API地址后加入/$metadata的方式,来读取OData API的主数据。这样可以减少GET方法对网络资的源消耗。如何调用OData API, 可参照https://help.sap.com/viewer/368c481cd6954bdfa5d0435479fd4eaf/Cloud/en-US/dc39fdd4a44d4b9a9eabb56f49434250.html?q=request%20and%20reply

9.png

4.4异常处理

创建异常处理流来捕获和处理异常消息。对于发送失败的消息,我们会将其临时存储起来。然后再利用定时器,每隔5分钟,进行重新处理。

10.png

4.5返回消息给MES系统

OData API返回的消息将会通过Receiver适配器发送给MES系统。对于3次处理失败的消息,相关IT技术人员会收到接口错误邮件。

11.png


5. 测试

可以用SOAPUI来模拟MES系统通过SOAP API发送消息给CPI

12.png

临时存储消息队列

13.png

临时存储重发消息队列

14.png


结论:

在本篇博文中,我们详细地介绍了如何将一个MESS/4HANA Cloud系统的集成需求,通过CPI中间件进行落地。如果有更多的集成需求需要讨论,可以请联系:

Vincent Zhu, Vincent.zhu@sap.com

Hongbo Wang, hongbo.wang01@sap.com