WSO2 SAP Adapter:无法在BAPI RFC调用中发送表数据

时间:2018-06-05 06:53:41

标签: wso2 wso2esb

我正在尝试使用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安装以使用它?

1 个答案:

答案 0 :(得分:0)

我使用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>