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
Request clarification before answering.
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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.
| User | Count |
|---|---|
| 5 | |
| 4 | |
| 4 | |
| 3 | |
| 2 | |
| 2 | |
| 2 | |
| 2 | |
| 2 | |
| 2 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.