cancel
Showing results for 
Search instead for 
Did you mean: 

SOAP Fault Header Missing after SOAP Adapter

hai_long3
Explorer
0 Kudos

Hello,

we use SOAP Adapter to connect some external Web Services in our integration sceanrio (One Sync Interface: Sender System A -> SAPPI -> External WS), unfortunately in case of application error the soap fault header is missing.

For Exmaple we get following SOAP Fault from external Service:

I find this original SOAP Fault Message form External WS in PI defaulttrace file.

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

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

<SOAP-ENV:Body>

<SOAP-ENV:Fault>

<faultcode xmlns:xxx="http://xxx.de/interfaces/business-error">xxx:UnknownSSS</faultcode>

<faultstring>The XXX is unknown on MyServer</faultstring> <faultactor/>

<detail>

<xxx-msg:errorDetail xmlns:xxx-msg="http://xxx.de/interfaces/msg/1.0">

<xxx-msg:errormessages>

<xxx-msg:message language=""/>

</xxx-msg:errormessages>

<xxx-msg:errorparameter>

<xxx-msg:parameter>

<xxx-msg:key/>

<xxx-msg:value/>

</xxx-msg:parameter>

</xxx-msg:errorparameter>

</xxx-msg:errorDetail>

</detail>

</SOAP-ENV:Fault>

</SOAP-ENV:Body>

</SOAP-ENV:Envelope>

The Info from SOAP Header is missing in SAP PI after SOAP Adapter, this cause huge problem for Sender System. Is there any easy way to fix this problem? How could I pass the original soap fault back to the Sender System. At least to get the info back to sender system for further analyse in case of error.

best regards,

Hai

Accepted Solutions (0)

Answers (1)

Answers (1)

baskar_gopalakrishnan2
Active Contributor
0 Kudos

This is the rule. You are consuming third party webservice using soap receiver adapter. That means you use the third party wsdl. Check in WSDL whether you have fault message inaddition to request and response for that service operation. If you see it, use that fault message as target system's response and create your own fault message at the source. This way you can map the third party(target) fault message response(WSDL) to your sender response at the time of application error or exception situation. If the third party does not support fault message you cannot retrieve their response for sending back to sender system for sure.

Hope that helps.

hai_long3
Explorer
0 Kudos

The problem is SAP PI SOAP Adapter does not pass all information from the soap fault for further processing. The SOAP Fault Header is somehow overwritten by SAP. Instead of meanful message in the SOAP Fault Header, you will always get something like:

<faultcode>SOAP:Server</faultcode>

<faultstring>Server Error</faultstring>

We do need the original SOAP Fault from Server.

markangelo_dihiansan
Active Contributor
0 Kudos

Hello,

What happens when you tick the Do Not Use SOAP Envelope option and add this in your module configuration?


ModuleKey  ParameterName               Value
soap      XMBWS.NoSOAPIgnoreStatusCode  true

This would also mean that you need to provide the whole SOAP Envelope in your request and remove it in your response though.

Hope this helps,

Mark

Edited by: Mark Dihiansan on Feb 10, 2012 3:55 AM