cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Fault Message : Mapping error

Former Member
0 Likes
2,038

Hi experts,

Here is my scenario : SProxy => PI => SoapUI

It's a Synchrone interface.

I have some difficulty with Fault Message.

com.sap.engine.interfaces.messaging.api.exception.MessagingException: com.sap.engine.interfaces.messaging.api.exception.MessagingException: SOAP: Response message contains an errorXIAdapter/PARSING/ADAPTER.SOAP_EXCEPTION - soap fault: Fault String here ... at com.sap.aii.adapter.soap.web.SOAPHandler.processSOAPtoXMB(SOAPHandler.java:772) at ...

Response from SoapUI (Fault Message) :

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

   <soapenv:Header/>

   <soapenv:Body>

      <soapenv:Fault>

         <faultcode>Fault Code here ...</faultcode>

         <faultstring>Fault String here ...</faultstring>

      </soapenv:Fault>

   </soapenv:Body>

</soapenv:Envelope>

I created a MT for my Outbound interface fault message (SProxy - ECC) :

.

It's a standard Fault Message.

For SoapUI response i tried to create an External Definition with a custom XSD :

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

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"

xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"

targetNamespace="http://schemas.xmlsoap.org/soap/envelope/">

    <xs:complexType name="BodyType">

        <xs:sequence>

            <xs:element name="Fault" type="SOAP-ENV:FaultType"/>

        </xs:sequence>

    </xs:complexType>

    <xs:element name="Envelope">

        <xs:complexType>

            <xs:sequence>

                <xs:element name="Body" type="SOAP-ENV:BodyType"/>

            </xs:sequence>

        </xs:complexType>

    </xs:element>

    <xs:complexType name="FaultType">

        <xs:sequence>

            <xs:element name="faultcode" type="xs:string"/>

            <xs:element name="faultstring" type="xs:string"/>

        </xs:sequence>

    </xs:complexType>

</xs:schema>

But i have always this error :

<SAP:Category>XIProtocol</SAP:Category>
<SAP:Code area="PARSING">GENERAL</SAP:Code>
<SAP:Stack>com.sap.engine.interfaces.messaging.api.exception.MessagingException: com.sap.engine.interfaces.messaging.api.exception.MessagingException: SOAP: Response message contains an errorXIAdapter/PARSING/ADAPTER.SOAP_EXCEPTION - soap fault: Fault String here ... at com.sap.aii.adapter.soap.web.SOAPHandler.processSOAPtoXMB(SOAPHandler.java:772) at ...

I tried to use http://schemas.xmlsoap.org/soap/envelope/ in external definition but same problem.

Soap Envelope in External Definition :

Here is my mapping :

I don't understand why i always have this error ...

Maybe my External Definition doesn't match with SoapUI response ?

Regards,
Youri

View Entire Topic
Former Member
0 Likes

Hi Youri,

Only for testing purpose you can try to set as well Do Not Use SOAP Envelope, in this way you could check in the monitoring what is the exact response . Have you tried with SOAPui?. It is interesting to know what is the exact response and with this response to find out if there is a data issue or web error and so on.

Regards.

Former Member
0 Likes

I use SOAPUI with MockService.

I see the response :

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

   <soapenv:Header/>

   <soapenv:Body>

      <soapenv:Fault>

         <faultcode>Fault Code here ...</faultcode>

         <faultstring>Fault String here ...</faultstring>

      </soapenv:Fault>

   </soapenv:Body>

</soapenv:Envelope>


If i use "Do Not Use Soap Envelop" i can't use WSDL Definition (Message structure).

Former Member
0 Likes

Hi Youri,

If i use "Do Not Use Soap Envelop" i can't use WSDL Definition (Message structure).

You can use the wsdl. You only need to do an extra mapping, with XSLT for example to wrap (request, XSLT will be the last mapping) and to unwrap (response, XSLT will be the first mapping). The XSLT is really easy to do it, if you have problems, we can help you.


Regards.

Former Member
0 Likes

Ok i used XSLT mapping with

  • my Request (Wrap Soap Envelope)
  • my Response (Unwrap Soap Envelope)
  • my Fault message (Unwrap Soap Envelope)

For Request and Response no-problem, it's ok.

But with Fault message i have an error :

SOAP: Response message contains an errorXIAdapter/HTTP/ADAPTER.HTTP_EXCEPTION - HTTP 500 Internal

If i use XMBWS.NoSOAPIgnoreStatusCode = true

I have an other error :

Error encountered while executing mapping: com.sap.aii.af.service.mapping.MappingException: Mapping failed in runtimeRuntime Exception when executing application mapping program com/sap/xi/tf/_mm_eprior_2_ecc_inboxreq_; Details: com.sap.aii.mappingtool.tf7.IllegalInstanceException; Cannot create target element /ns3:mt_einv_inboxreq_resp. Values missing in queue context. Target XSD requires a value for this element, but the target-field mapping does not create one. Check whether the XML instance is valid for the source XSD, and whether the target-field mapping fulfils the requirement of the target XSD at com.sap.aii.adapter.soap.web.SOAPHandler.processSOAPtoXMB(SOAPHandler.java:772) at ...


MT_EINV_INBOXREQ_RESP = Good response, not fault message ...

For PI if i unwrap SOAP Envelope in Fault message he doesn't see that's a Fault message ? strange no ?