[SAP CPI] – SCENARIO FOR RFC RECEIVER ADAPTER WITH CLOUD CONNECTOR
[SAP CPI] – 带有云连接器的 RFC 接收器适配器场景
大家好,本文将讨论如何使用 RFC 适配器接收器、SAP Cloud Connector 和 SAP CPI 将 XML 消息从第三方系统发送到 SAP 后端。此场景适用于通过 RFC 连接与 SAP 后端系统集成的情况。为了更清晰地理解,请参考此图。

A. SAP云连接配置
步骤 1:添加虚拟到内部系统的映射
- 点击云到本地
- 单击“添加”







步骤 2:为该映射添加资源。在 SAP 后端选择函数名称
- 选择虚拟主机
- 单击“添加资源”(如下)
- 输入功能名称(功能模块或 SAP 上的 Webservice Define)
- 如果有多个函数名,我们可以添加多次
如果在集成流程中,我们选中选项发送确认交易,我们必须添加以下2个函数名称:
– BAPI_TRANSACTION_COMMIT
– BAPI_TRANSACTION_ROLLBACK

一切看起来都像完成后一样

B. SAP CPI 配置
步骤 1:添加新目的地
- 转至 SAP BTP
- 点击左侧菜单上的“目的地”。在“连接”下
- 点击按钮“新目的地”


- (1):名称。此名称将用作集成流的 RFC 接收器适配器中的连接名称

- (2):类型:RFC
- (3):本地部署
- (4)(5):SAP ERP 的用户/密码。此用户必须拥有相应的角色
步骤 2:添加目的地属性
现在,我们必须添加在步骤 1 中创建的目标的一些属性。添加以下属性
| jco.client.ashost | SCC 上的虚拟主机 |
|---|---|
| jco.client.客户端 | SAP ERP 的客户。EX : 190 |
| jco.client.lang | 语言。例如:EN |
| jco.client.sysnr | SAP ERP.EX 的系统编号:00 |
步骤3:CPI集成流程设计

C. 问题
问题 1:如果主体发送请求功能模块的无效结构 XML,我们将收到此消息。


当遇到这个问题时,我们必须检查功能模块的结构 XML 并修复它。
D. 测试用例
为了测试目的,我们使用标准功能模块:SXIDEMO_AIRL_FLIGHT_CHECKAVAIL
该功能模块的结构 XML 为
<?xml version="1.0" encoding="UTF-8"?>
<ns0:SXIDEMO_AIRL_FLIGHT_CHECKAVAIL
xmlns:ns0="urn:sap-com:document:sap:rfc:functions">
<FLIGHT_KEY>
<AIRLINEID/>
<CONNECTID/>
<FLIGHTDATE/>
</FLIGHT_KEY>
</ns0:SXIDEMO_AIRL_FLIGHT_CHECKAVAIL>
案例 1:SAP Cloud Connector 中没有此功能模块的资源
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<rfc:SXIDEMO_AIRL_FLIGHT_CHECKAVAIL.Exception
xmlns:rfc="urn:sap-com:document:sap:rfc:functions">
<Name>Partner signaled an error for conversation ID [69507688] : Access denied for SXIDEMO_AIRL_FLIGHT_CHECKAVAIL on sap-ecd-app:sapgw00. Expose the function module in your Cloud Connector in case it was a valid request.</Name>
<Text>Partner signaled an error for conversation ID [69507688] : Access denied for SXIDEMO_AIRL_FLIGHT_CHECKAVAIL on sap-ecd-app:sapgw00. Expose the function module in your Cloud Connector in case it was a valid request.</Text>
<Message>
<ID/>
<Number/>
</Message>
<Attributes></Attributes>
</rfc:SXIDEMO_AIRL_FLIGHT_CHECKAVAIL.Exception>
情况 2:无效日期
com.sap.it.rt.adapter.http.api.exception.HttpResponseException: An internal server error occured:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<rfc:SXIDEMO_AIRL_FLIGHT_CHECKAVAIL.Exception
xmlns:rfc="urn:sap-com:document:sap:rfc:functions">
<Name>FLIGHT_NOT_FOUND</Name>
<Text>FLIGHT_NOT_FOUND</Text>
<Message>
<ID>BC_IBF</ID>
<Number>055</Number>
</Message>
<Attributes>
<V1> 0000 20220202</V1>
</Attributes>
</rfc:SXIDEMO_AIRL_FLIGHT_CHECKAVAIL.Exception>.
案例 3:Body 请求中的 XML 结构无效
com.sap.it.rt.adapter.http.api.exception.HttpResponseException: An internal server error occured: <?xml version="1.0" encoding="UTF-8" standalone="no"?><rfc:SXIDEMO_AIRL_FLIGHT_CHECKAVAILs.Exception xmlns:rfc="urn:sap-com:document:sap:rfc:functions"><Exceptions>
<E1>Error Getting Function</E1>
</Exceptions></rfc:SXIDEMO_AIRL_FLIGHT_CHECKAVAILs.Exception>.
The MPL ID for the failed message is : AGI7Xs4vl3zVENgi_6XYmcdoSr6E
案例 4:OK
<?xml version="1.0" encoding="UTF-8"?>
<ns0:SXIDEMO_AIRL_FLIGHT_CHECKAVAIL
xmlns:ns0="urn:sap-com:document:sap:rfc:functions">
<FLIGHT_KEY>
<AIRLINEID>LH</AIRLINEID>
<CONNECTID>9981</CONNECTID>
<FLIGHTDATE>20021221</FLIGHTDATE>
</FLIGHT_KEY>
</ns0:SXIDEMO_AIRL_FLIGHT_CHECKAVAIL>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<rfc:SXIDEMO_AIRL_FLIGHT_CHECKAVAIL.Response xmlns:rfc="urn:sap-com:document:sap:rfc:functions">
<FLIGHT_AVAILABILITY>
<ECONOMAX>320</ECONOMAX>
<ECONOFREE>308</ECONOFREE>
<BUSINMAX>20</BUSINMAX>
<BUSINFREE>19</BUSINFREE>
<FIRSTMAX>0</FIRSTMAX>
<FIRSTFREE>0</FIRSTFREE>
</FLIGHT_AVAILABILITY>
</rfc:SXIDEMO_AIRL_FLIGHT_CHECKAVAIL.Response>
概括
本文将探讨 SAP CPI 中的 RFC 适配器接收器。感谢您的阅读,如有任何疑问,请在下方留言。