[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 适配器接收器。感谢您的阅读,如有任何疑问,请在下方留言。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于