cancel
Showing results for 
Search instead for 
Did you mean: 
Subscribe

Hi,

The *synchronous* scenario is as shown below

SAP CRM - ABAP Proxy -> SAP PI -- webservice-call --> External Partner

The requirement is that, SAP CRM needs to set a time-out in one of the screen incase the synchronous call takes more than 'n' seconds.

1st case: What if the web-service takes 'n' seconds to return a response

Resolution: The external partner has agreed that if the web-service takes 'n' seconds, then they would set a generic status and send a response message back to SAP PI

2nd case: What if the web service URL is not reachable. How do we achieve the time-out requirement at SAP CRM.

In this case, since this is a synchronous scenario, a auto-generated technical error message would be sent back by SAP PI to SAP CRM. Now the question is

- Will SAP CRM be able to read/parse that technical error message in their system (since it is not in the expected response format)?

- Does SAP CRM have the ability to set a time-out parameter at their end itself instead of depending on the web-service response or SAP PI's technical response?

Need you inputs in the 2nd case. And also any suggestion to achieve the requirement is welcome.

Regards,

Prajeet

0 Likes
View Entire Topic
Former Member
0 Likes

The issue was resolved. We did it in 2 steps

Step-1: A time-out parameter was set in the SOAP receiver channel in SAP PI

Parameter Name : XMBWS.Timeout

Step-2: SAP CRM system handled the standard exception message generated by SAP PI using cx_ai_system_fault class. Based on the exception text in the message, CRM proceeded with the next steps of processing

Just to give more information on the scenarios I was looking at

1st case: What if the web-service takes 'n' seconds to return a response

Resolution : Due to the time-out parameter set to 'n' seconds in the SOAP receiver channel, SAP PI would generate a standard exception message after 'n' seconds and sends it to SAP CRM.

SAP PI Standard Exception Message

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

<SAP:Category>XIAdapterFramework</SAP:Category>

<SAP:Code area="MESSAGE">GENERAL</SAP:Code>

<SAP:P1 />

<SAP:P2 />

<SAP:P3 />

<SAP:P4 />

<SAP:AdditionalText>com.sap.aii.af.ra.ms.api.DeliveryException: Read timed out</SAP:AdditionalText>

<SAP:ApplicationFaultMessage namespace="" />

<SAP:Stack />

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

</SAP:Error>

2nd case: What if the web service URL is not reachable. How do we achieve the time-out requirement at SAP CRM.

Resolution: If the web-service is not accessible, SAP PI immediately generates the standard exception message to SAP CRM.

SAP PI Standard Exception Message

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

<SAP:Category>XIAdapterFramework</SAP:Category>

<SAP:Code area="MESSAGE">GENERAL</SAP:Code>

<SAP:P1 />

<SAP:P2 />

<SAP:P3 />

<SAP:P4 />

<SAP:AdditionalText>com.sap.aii.af.ra.ms.api.DeliveryException: Message </SAP:AdditionalText>

<SAP:ApplicationFaultMessage namespace="" />

<SAP:Stack />

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

</SAP:Error>

Thanks for helping me. Rewarded points as well

Regards,

Prajeet

Former Member
0 Likes

Hi Prajeet,

I am facing same problem.

I am able to retrieve node <SAP:Code area="MESSAGE">GENERAL</SAP:Code> from class

    cx_ai_system_fault

But how to retrieve node <SAP:AdditionalText>com.sap.aii.af.ra.ms.api.DeliveryException: Read timed out</SAP:AdditionalText> so that based on error we can resend the data.