cancel
Showing results for 
Search instead for 
Did you mean: 

Soap Fault mapping issue

Former Member
0 Kudos

Hi,

I have a synchronous scenario of (request) Proxy --> XI --> SOAP and (response) SOAP --> XI --> Proxy. I am having an issue returning the application soap faults back to the sender system. When I enter invalid data while testing this webservice call with a soap client directly without XI I get a soap fault response:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<soapenv:Body>

<soapenv:Fault>

<faultcode>soapenv:Server.generalException</faultcode>

<faultstring>Login failed</faultstring>

<detail>

<LoginFault xmlns="NAMESPACE">

<exceptionCode>710</exceptionCode>

<exceptionMessage>Login failed</exceptionMessage>

</LoginFault>

<ns1:exceptionName xmlns:ns1="http://xml.apache.org/axis/">NAMESPACE</ns1:exceptionName>

</detail>

</soapenv:Fault>

</soapenv:Body>

</soapenv:Envelope>

When testing this through XI, the response message after the Soap call is returning the following soap fault in XI payload:

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

<!-- XML Validation Inbound Channel Response -->

<LoginFault xmlns="NAMESPACE">

<exceptionCode>710</exceptionCode>

<exceptionMessage>Login failed</exceptionMessage>

</LoginFault>

Notice just the detail body exists in the payload instead of the soap evelope and body, which I read is stripped off within XI in the case of application errors. I have setup a fault message mapping to tie the wsdl login fault with the standard fault message type and included this in the service interfaces and operations mapping. When the soap fault happens within XI I am getting the following mapping error:

NO_MAPPINGPROGRAM_FOUND: Mapping program is not available in runtime cache:

I am expecting the fault mapping to be executed in this case but doesn't seem to be found. Any ideas why this mapping error is occuring and not being directed to my fault message mapping? Is the mapping expecting the soap envelope and body to be included in the payload?

Any suggestions would be appreciated.

Thanks,

Nate

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

Prateek,

Thanks for the response. Yes, I've gone through that. I have setup my process in a similar way with mapping etc. although this goes through calling an RFC where as i need to raise it through a proxy.

Nate

Former Member
0 Kudos

Hi Nathan,

Create the fault message and import the default SOAP fault message and do the mapping, thats it nothing you have to do extra.

I already configured in the same way and I am getting the fault messages also.

Regards

Ramesh

Former Member
0 Kudos

Hi Ramesh,

I have previously imported the soap fault from the wsdl (looks identical to the soap fault in the payload) and I have it mapped to the standard fault message type. I am stil getting this mapping not found error though. When testing the fault payload in the fault message mapping, it is executed correctly within XI test mode so im not sure the mapping is the issue but config potentially. We are on PI 7.1.

Nate

Former Member
0 Kudos

Hi Nathan,

Me also done in PI 7.1. Are you mentioned the fault message mapping in the operational mapping?

I haven't done any thing other than this in the configuration also I didn't do any thing still I am getting.

Regards

Ramesh

Former Member
0 Kudos

I have tested this in both the individual fault message mapping and the operational mapping and both test out sucessfully.

Former Member
0 Kudos

Then that should be fine.

any where you are getting error?

Former Member
0 Kudos

Here are the errors I am seeing within the sxmb_moni transaction:

Call adapter exception:

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

- <!-- Call Adapter

-->

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

<SAP:Category>XIServer</SAP:Category>

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

<SAP:P1>Object ID 35F8008AA0A830FC93FC221572A15ABD Software Component DC6FB8300EDE11DC8E05DB6DA3E77028</SAP:P1>

<SAP:P2 />

<SAP:P3 />

<SAP:P4 />

<SAP:AdditionalText />

<SAP:Stack>Mapping program is not available in runtime cache: Object ID 35F8008AA0A830FC93FC221572A15ABD Software Component DC6FB8300EDE11DC8E05DB6DA3E77028</SAP:Stack>

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

</SAP:Error>

Response Message Error:

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

- <!-- XML Validation Inbound Channel Response

-->

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

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

<SAP:Code area="UNKNOWN">APPLICATION_ERROR</SAP:Code>

<SAP:P1 />

<SAP:P2 />

<SAP:P3 />

<SAP:P4 />

<SAP:AdditionalText>application fault</SAP:AdditionalText>

<SAP:ApplicationFaultMessage namespace="NAMESPACE REMOVED">LoginFault</SAP:ApplicationFaultMessage>

<SAP:Stack />

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

</SAP:Error>

and response message payload:

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

- <!-- XML Validation Inbound Channel Response

-->

- <LoginFault xmlns="NAMESPACE REMOVED">

<exceptionCode>710</exceptionCode>

<exceptionMessage>Login failed</exceptionMessage>

</LoginFault>

former_member200962
Active Contributor
0 Kudos
I have tested this in both the individual fault message mapping and the operational mapping and both test out sucessfully.

Have you used the payload from SXMB_MONI to do the above testing? If no then use the runtime payload and check your mapping. Also the error says no mapping program found in runtime cache...so have you confirmed that your cache contents are up-to-date?

Regards,

Abhishek.

Former Member
0 Kudos

Abhishek,

Thank you for your reply, yes I have tested with the payload from SXMB_MONI and that executes sucessfully. I have checked the runtime cache and that is also up to date.

Regards,

Nate

Former Member
0 Kudos

Was this question ever answered?

I have a similar situation

I have a

PROXY -> XI -> SOAP

SOAP-> XI -> XI adapter

The XI to SOAP piece is Sync

The process uses a BPM as there is three scenarios and send to 3 different SOAP webservices.

One tree of the BPM looks like this

Start -> Receive Step -> Trans1 -> Send (sync to webservice) -> Tran2 (for valid messages, not fault messages) -> Send Step

Questions

To handle the fault message do I have to add another transformation step? If so where?

Thanks

Chirag

prateek
Active Contributor
0 Kudos

Have you followed this?

/people/jin.shin/blog/2007/05/21/handling-web-service-soap-fault-responses-in-sap-netweaver-xi

Regards,

Prateek