cancel
Showing results for 
Search instead for 
Did you mean: 

How to capture SOAPFault in an Async/Sync Scenario without BPM

pi_consultant1
Participant
0 Kudos

Hello friends,

My scenario is ECC (async) to SOAP (sync) and back to ECC (async = ALEAUD). I'm using aync/sync bridge is receiver SOAP adapter.

My scenario works fine with a normal response but when I get a SOAPFault as a response I get the following error in de receiver SOAP adapter:

Message processing failed. Cause:
com.sap.engine.interfaces.messaging.api.exception.ConfigException: No sender agreement configured that matches the message's header fields (sender party: "", sender service: "NONSAP", interface: "urn:test,  SII_Test_Sync", receiver party: "", receiver service: "BS_ECC")

The configuration of my receiver SOAP adapter looks like this:

Did I use parameters interfaceOnFault and interfaceNamespaceOnFault correctly?

Your help is greatly appreciated,

Kind regards,

John

Accepted Solutions (1)

Accepted Solutions (1)

roger_alluivall
Participant
0 Kudos

Hi,

have you tried to configure a Sender Agreement (or ICO) with the following information?

sender party: ""

sender service: "NONSAP",

interface: "urn:test,  SII_Test_Sync"

receiver party: "", receiver service: "BS_ECC"



If i'm not wrong, to configure the bridge you should have two configurations as below:


1.- BS_ECC --> Idoc (XXXXX) --> PI --> Soap(SII_Test_Sync) --> NONSAP

2.- NONSAP --> Soap(SII_Test_Sync) --> PI --> Idoc (ALEAUD) --> BS_ECC


What I suggest you to do is a third configuration as below:


3.- NONSAP --> SoapFault --> PI --> Idoc (ALEAUD) --> BS_ECC


Regards!

pi_consultant1
Participant
0 Kudos

Hi Roger,

Thank you for your reply...

I have already made those three configurations, the request and normal response works fine but I get that error in the SOAP receiver adapter when I get a SOAPFault back...

Did I use parameters interfaceOnFault and interfaceNamespaceOnFault correctly? Do I have to use these parameters?

Regards,

John

roger_alluivall
Participant
0 Kudos

Hi John,

If you are configuring a Receiver Communication Channel, try setting parameter replaceInterfaceOnFault = true.

Check "Add Parameters in the Module Configuration for the Receiver Adapter" section of the following ling, please.

Adding ResponseOnewayBean in the Module Processor - Adding Modules to the Module Processor - SAP Lib...

Regards!

Roger

pi_consultant1
Participant
0 Kudos

Its working fine now!

Thank you very much Roger. I forgot the parameter replaceInterfaceOnFault = true.

Kind regards,

John

former_member181928
Participant
0 Kudos


HI Roger ,

I am also using the Async/Sync Scenario with the Response One Way Bean , but I have checked the parameter "DO NOT Use SOAP Envelope" in the receiver SOAP Adapter. (My Scenairo is Async ECC Proxy --> Sync Web Service --> Async ECC Proxy).

I have made all the Configurations in the Receiver SOAP adapter but am unable to get the fault response back .

Please find below the Screenshot of the Receiver SOAP Adapter.

Im my case I am able to receive the successfull response in my Response Mappping (I have created a diff ICO for Response Message and a diff ICO for Fault Message). When a fault is received even the Fault message goes to the response mapping and it fails in the response mapping as the fault structure & the response structure do not match .

Do we need to make some additional configuration  for the handing  faults, whn the option "DO NOT use SOAP envlope is checked" as it removed the Env from the messgaes.

Am I missing something, could you please help.

Thanks

Regards

Nilesh Taunk.

roger_alluivall
Participant
0 Kudos

Hi Nilesh,

sorry for the delay. What I found every time i used the option "DO NOT use SOAP envelope is checked" is that the envelope is removed from request and response/fault messages as well. To solve those kind of errors I developed a module called ReplaceString. What this module does is to replace a string with another one passed as parameter. What do I archive with this? Well I sometimes use this module to include some parts in the xml message before it gets in PI. For example, lets say you receive something like this:

<FaultMessage>

<standard>

     <faultText>

     <faultUrl>

     <faultDetail>

          <severity>High</severity>

          <text>This is an error</text>

          <url></url>

          <id></id>

     </faultDetail>

</standard>

</FaultMessage>

and you are expecting something like this:

<soap:Envelope

xmlns:soap="http://www.w3.org/2001/12/soap-envelope"

soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

<FaultMessage>

<standard>

     <faultText>

     <faultUrl>

     <faultDetail>

          <severity>High</severity>

          <text>This is an error</text>

          <url></url>

          <id></id>

     </faultDetail>

</standard>

</FaultMessage>

</soap:Envelope>

You could use this module to replace the following strings:

<FaultMessage>

by

<soap:Envelope

xmlns:soap="http://www.w3.org/2001/12/soap-envelope"

soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"><FaultMessage>



And


</FaultMessage>


by


</FaultMessage></soap:Envelope>

If you find it useful, I can paste the code of the module here.

Regards!

roger_alluivall
Participant
0 Kudos

Hi Nilesh,

check my blog to find an example of the code of the module I mentioned above,

Regards!

Answers (0)