Hello,
I'm having a ploblem with a PI interface with the scenario below (synchronous):
ECC (proxy) <-> PI <-> 3rdParty (soap)
The WSDL provided has a kind of envelope (soapenc:arrayType). Here's the structure declaration:
<xs:complexType name="TTUDResultArray">
<xs:sequence>
<xs:element name="Success" type="xs:boolean" />
<xs:element name="ErrorDescription" type="xs:string" />
<xs:element name="Count" type="xs:int" />
<xs:element name="Accounts" type="ns1:TTUDInquiryResultArray" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="TTUDInquiryResultArray">
<xs:complexContent>
<xs:restriction base="soapenc:Array">
<xs:sequence />
http://schemas.xmlsoap.org/wsdl/" ref="soapenc:arrayType" n1:arrayType="ns1:TTUDInquiryResult[]" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
When I import this WSDL as a External Definition, the field Accounts is displayed with error (in red), as the PI was incapable to read this kind of type definition.
Testing in SoapUI, the response message is displayed with a different structure than it's possible to see in the PI Operation Mapping:
http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd=" http://www.w3.org/2001/XMLSchema" xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC=" http://schemas.xmlsoap.org/soap/encoding/">
http://schemas.xmlsoap.org/soap/encoding/" xmlns:NS2="urn:TUDIntf">
<NS1:InquireDateRangeResponse xmlns:NS1="urn:TUDIntf-ITUD">
<return href="#1"/>
</NS1:InquireDateRangeResponse>
<NS2:TTUDResultArray id="1" xsi:type="NS2:TTUDResultArray">
<Success xsi:type="xsd:boolean">true</Success>
<ErrorDescription xsi:type="xsd:string"/>
<Count xsi:type="xsd:int">2</Count>
<Accounts xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="NS2:TTUDInquiryResult[2]">
<item href="#2"/>
<item href="#3"/>
</Accounts>
</NS2:TTUDResultArray>
<NS2:TTUDInquiryResult id="2" xsi:type="NS2:TTUDInquiryResult">
<AvailableAmount xsi:type="xsd:double">49</AvailableAmount>
<PaymentAmount xsi:type="xsd:double">49</PaymentAmount>
<PaymentStatus xsi:type="xsd:string">AC</PaymentStatus>
<PaymentNbr xsi:type="xsd:string">110201</PaymentNbr>
<Success xsi:type="xsd:boolean">false</Success>
</NS2:TTUDInquiryResult>
<NS2:TTUDInquiryResult id="3" xsi:type="NS2:TTUDInquiryResult">
<AvailableAmount xsi:type="xsd:double">50</AvailableAmount>
<PaymentAmount xsi:type="xsd:double">50</PaymentAmount>
<PaymentStatus xsi:type="xsd:string">AC</PaymentStatus>
<PaymentNbr xsi:type="xsd:string">123456</PaymentNbr>
<Success xsi:type="xsd:boolean">false</Success>
</NS2:TTUDInquiryResult>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
I`ve tried to map the WSDL inside my interface, but always I test (on SPROXY or Runtime Workbench) an error message is displayed:
Error While Sending Message: Error stack from response: Runtime exception occurred during application mapping com/sap/xi/tf/_mmInquireEZCashtoEcc_; com.sap.aii.mappingtool.tf7.IllegalInstanceException: Cannot create target element /ns1:mtInquireEcc_response. Values missing in queue context. Targe~
Someone knows if that's some tip of how to use this kind of WSDL?