首页 > 解决方案 > WSO2 SAP 适配器:无法在 BAPI RFC 调用中发送表数据

问题描述

我正在尝试使用 WSO2 6.2 EI 进行 SAP BAPI RFC 调用(我也尝试了 WSO2 ESB 5.0.0,结果相同)。请求 xml 包含输入结构的数据和一些表数据。输入结构数据发送成功并在 SAP 端接收。WSO2 未发送表数据(在 SAP 调用的跟踪文件中观察到)。我查看了源代码,似乎已经报告并修复了该问题(https://wso2.org/jira/browse/ESBJAVA-3011),但令人惊讶的是,即使是最新版本的 WSO2 仍然具有旧代码仍然有问题(除非我在错误的地方寻找) - org.wso2.carbon.transports.sap_1.0.0.jar(存在于插件目录中)。

下面是一个示例请求:

<body>
<bapirfc xmlns="" name="ZTEMP_CREATE">
<import>
<structure name="LS_ORDER_HEADER_IN">
<field name="DOC_TYPE">ZZZ</field>
<field name="SALES_ORG">1111</field>
</structure>
</import>
<tables> 
<table name="LT_PARTNERS">
<row id="0">
<field name="PARTN_ROLE">DG</field>
<field name="PARTN_NUMB">0000000075</field>
</row>
</table>
</tables>
</bapirfc>
</body>

结构“LS_ORDER_HEADER_IN”的导入结构数据发送和接收成功。但是表数据“LT_PARTNERS”从 WSO2 发送为空白。SAP 适配器是否有可用的补丁或升级来解决此问题,如果有,我如何更新我的 wso2 ei 安装以使用它?

标签: wso2wso2esb

解决方案


我正在使用 ESB 4.8.1 和 org.wso2.carbon.transports.sap_1.0.0.jar 来毫无问题地进行 BAPI RFC 调用。

您可以尝试以下测试代理,看看它是否正常工作?

    <?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="SAPProxy"
       transports="https,http"
       statistics="disable"
       trace="disable"
       startOnLoad="true">
   <target>
      <inSequence>
         <payloadFactory media-type="xml" description="BAPIPayload">
            <format>
               <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
                  <soap:Body>
                     <bapirfc xmlns="" name="Z_CONVERT_IBAN_2_BANK_ACCOUNT">
                        <import>
                           <field name="I_IBAN">123456789</field>
                        </import>
                     </bapirfc>
                  </soap:Body>
               </soap:Envelope>
            </format>
            <args/>
         </payloadFactory>
         <send>
            <endpoint name="sap-endpoint">
               <address uri="bapi:/yourconf"/>
            </endpoint>
         </send>
         <log level="full">
            <property name="step" value="--- AFTER SEND TO SAP 2 --"/>
         </log>
      </inSequence>
      <outSequence>
         <log level="full">
            <property name="step" value="--- RESULT FROM SAP --"/>
         </log>
         <send/>
      </outSequence>
      <faultSequence>
         <log level="full">
            <property name="step" value="--- FAULT --"/>
         </log>
         <drop/>
      </faultSequence>
   </target>
   <description/>
</proxy>

推荐阅读