cancel
Showing results for 
Search instead for 
Did you mean: 

Issue with external WSDL in own Outbound interface using SOAP UI

Former Member
0 Kudos

Hello,

this is the issue:

a) Imported an external WSDL to PI as external definition

b) Added external definition to a sync. Service interface

c) Completed configuration and created a WSDL from the sender agreement in Directory (this is PI 7.1)

d) imported the WSDL from c) to soap UI which we are using for testing interfaces

(already successful with other sync interface where the WSDL from c) contains a message type created in PI

e) testing this interface results in an error:

Error message in MONI:

SAP:Error SOAP:mustUnderstand="1" xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">

<SAP:Category>Application</SAP:Category>

<SAP:Code area="MAPPING">EXCEPTION_DURING_EXECUTE</SAP:Code>

<SAP:P1>com/sap/xi/tf/_MM_TestTrigger_Testm~</SAP:P1>

<SAP:P2>com.sap.aii.mappingtool.tf7.IllegalInstanceExcepti</SAP:P2>

<SAP:P3>on: Cannot create target element /ns0:props. Value</SAP:P3>

<SAP:P4>s missing in queue context. Target XSD requires a~</SAP:P4>

<SAP:AdditionalText />

<SAP:Stack>Runtime exception occurred during application mapping com/sap/xi/tf/_MM_Test_Testm; com.sap.aii.mappingtool.tf7.IllegalInstanceException: Cannot create target element /ns0:props. Values missing in queue context. Target XSD requires a</SAP:Stack>

<SAP:Retry>M</SAP:Retry>

</SAP:Error>

-


This is the message as it looks like in soapUI:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:com="http://jusit.hp.com/sys/common/">

<soapenv:Header/>

<soapenv:Body>

<props>

<com:Property>

<com:PropertyName>A</com:PropertyName>

<com:PropertyValue>1</com:PropertyValue>

</com:Property>

</props>

</soapenv:Body>

</soapenv:Envelope>

-


This is the payload in MONI as it comes from SOAP UI (using http connection):

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><!-- Mapping der Request-Message -->

<props xmlns:com='http://jusit.hp.com/sys/common/' xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'>

<com:Property>

<com:PropertyName>A</com:PropertyName>

<com:PropertyValue>1</com:PropertyValue>

</com:Property>

</props>

-


This is the payload as it looks like in Mapping Test in Enterprise Repos. from implemented ext.def.:

<?xml version="1.0" encoding="UTF-8"?>

<ns0:props xmlns:ns0="http://jusit.hp.com/sys/common/">

<ns0:Property>

<ns0:PropertyName>A</ns0:PropertyName>

<ns0:PropertyValue>1</ns0:PropertyValue>

</ns0:Property>

</ns0:props>

-


Is there any restriction with external definitions to be used in PI which could be the reason for this strange behaviour?

The implementation contained a message type created in PI earlier which was running successful!

The problem came up with the external definition!

Thank you for your help!

Best regards

Dirk

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

Seems to be important to know more about creation of WSDL to check what you will receive.

The WSDL provider made a mistake...

As part of a message an u201Eelementu201C has to be named as type and not a u201EcomplexTypeu201C.

After changing that PI was able to handle the WSDL as expected!

Former Member
0 Kudos

HI,

The problem is with your mapping. If you run the map in the ESR with the same input does it work correctly ?

here is the reson

*<SAP:P2>com.sap.aii.mappingtool.tf7.IllegalInstanceExcepti</SAP:P2>

<SAP:P3>on: Cannot create target element /ns0:props. Value</SAP:P3>

<SAP:P4>s missing in queue context. Target XSD requires a~</SAP:P4>*

try sending this message


<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:com="http://jusit.hp.com/sys/common/">
<soapenv:Header/>
<soapenv:Body>
<com:props>
<com:Property>
<com:PropertyName>A</com:PropertyName>
<com:PropertyValue>1</com:PropertyValue>
</com:Property>
</com:props>
</soapenv:Body>
</soapenv:Envelope>

Former Member
0 Kudos

Hi,

the problem is not the mapping as it is 1:1 with the same message on both sides.

But when I replace the "com"s with "ns0" and "props" with "ns0:props" in the request in soap UI

the payload will be accepted and mapping is successful!

So the issue is about the modification soap UI is doing on the imported WSDL.

a) Generated request in soap UI from imported WSDL: FAILS in PI!!!!

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:com="http://test.ap.com/sys/common/">

<soapenv:Header/>

<soapenv:Body>

<props>

<com:Property>

<!You may enter the following 2 items in any order>

<com:PropertyName>?</com:PropertyName>

<com:PropertyValue>?</com:PropertyValue>

</com:Property>

</props>

</soapenv:Body>

</soapenv:Envelope>

b) Modified request in soap UI from imported WSDL: WILL BE PROCESSED IN PI

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://test.ap.com/sys/common/">

<soapenv:Header/>

<soapenv:Body>

<ns0:props>

<ns0:Property>

<!You may enter the following 2 items in any order>

<ns0:PropertyName>B</ns0:PropertyName>

<ns0:PropertyValue>5</ns0:PropertyValue>

</ns0:Property>

</ns0:props>

</soapenv:Body>

</soapenv:Envelope>

-


But is there any possibility to avoid this effect in soap UI?

Regards

Dirk