cancel
Showing results for 
Search instead for 
Did you mean: 

problems with namespace XML Parsing of ABAP PI 7.0 Integration Engine

Former Member
0 Kudos

Hi,

I discovered the following problem.

The customer sends a SOAP message with is forwarded through a SOAP Adapter in the integration engine.

The structure of the message is very simple:

<Envelope>
<Body>
<ORDERS05>...</ORDERS05>
</Body>
</Envelope>

The customer adds the namespace information a special way:

<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope">
<Body>
<orders05 xmlns="">...</orders05>
</Body>
<Envelope>

Here the namespaces is declared in the first element. It should be inherited into all child elements. The 'orders05' should not have the namespace ' xmlns="http://schemas.xmlsoap.org/soap/envelope" ', therefore the namespace is overwritten with ' xmlns="" '. However I don't know if this is a correct xml statement, the SAP system did not understand this.

The integration throws an error which is stated in the message in the adapter engine:

2008-11-06 17:31:44 Fehler SOAPFault empfangen vom Integration Server. ErrorCode/Category: XIProtocol/ITEM_MISSING; Params: /@mustUnderstand, ST: ST_XMS_MSGHDR30_RM; AdditionalText: Attribut 'mustUnderstand' erwartet; ApplicationFaultMessage: ; ErrorStack: Das XML-Element /@mustUnderstand fehlt im SOAP-Message Header (SAP XI Extension) Attribut 'mustUnderstand' erwartet

2008-11-06 17:31:44 Fehler Fehler beim Übertragen der Message zum Endpunkt http://kas052.hauni.koerber.de:8036/sap/xi/engine?type=entry über die Verbindung SOAP_http://sap.com/xi/XI/System. Grund: com.sap.aii.af.ra.ms.api.RecoverableException: Received HTTP response code 500 : Error during parsing of SOAP header

If I changed the SOAP message to the common format, it is accepted by the integration engine.


<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope">
<SOAP:Body>
<orders05>...</orders05>
</SOAP:Body>
</SOAP:Envelope>

Here the namespace ' xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope" ' is defined with a prefix and assigned to the elements 'envelope' and 'body'. The 'orders05' element has no namespace.

However due to the xml syntax both messages are the same, so why the integration engine handle the messages different?

Best regards,

Nils Kloth

Accepted Solutions (1)

Accepted Solutions (1)

stefan_grube
Active Contributor
0 Kudos

The error message states in internal problem.

So in principe you are right but due to a bug you cannot use this kind of prefix-less soap message.

Regards

Stefan

Answers (1)

Answers (1)

prateek
Active Contributor
0 Kudos

The valid SOAP format supported by XI is as follows

<SOAP:Envelope
  xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
  <SOAP:Body>
    <m:MessageTypeName xmlns:m="Some-URI">
      <Price>34.5</Price>
    </m:MessageTypeName>
  </SOAP:Body>
</SOAP:Envelope>

Ur sender system is not sending the data in correct Soap format and thats the cause of message rejection. The option you have to use the Soap adapter in "no soap" mode.

Regards,

Prateek

Former Member
0 Kudos

Hi Prateek,

are you sure that it is not correct. It is just a other way to declare the namespace, isn't it? Namespaces are inherited in xml.

Regards,

Nils