cancel
Showing results for 
Search instead for 
Did you mean: 

SOAP - PI - RFC synchronous

Former Member
0 Kudos

Dear Forumers,

I'm looking for the best way to have following scenario working:

Call of SOAP Web services - PI - RFC

In fact it's the same as exposing the BAPI's and functions as Web Service but through PI for internal political reasons.

So PI would just act as the "exposer" of the BAPI / Function web services.

I created

in ESR:

- RFC: imported bapi / function

- External definition: based on the WSDL I could export from the RFC I just imported.

- Service Interface outbound synchronous

-- based on the external definition

- Service Interface inbound synchronous

-- based on the RFC

Then operation mapping with 2 message mappings: 1 for request and 1 for responses where I map every field 1 on 1.

in ID

- 1 communication channel for SOAP Sender

- 1 communication channel for RFC Receiver

- An Integrated Configuration

Is this the best way to go?

Besides that I get an error on this scenario as shown in attachment

Accepted Solutions (1)

Accepted Solutions (1)

hasan_celebi
Participant
0 Kudos

Hi Thomas;

Could you share RFC channel error log(nwa or rwb) and if present erp abap runtime error(st22).

Regards

Hasan

Former Member
0 Kudos

Hi Hasan,

I don't have any RFC Channel error and no st22. So I have a problem for reaching the RFC. Maybe in the mapping, but I tested with the payload I see in the message content and it executes without trouble.
And processing time should not be an error as I'm only sending 3 input fields( and the processing time on the back-end is some milli-seconds).

My problem is to understand where the problem is or where to find more info about it.

Regards,

Thomas

Snavi
Active Participant
0 Kudos

Hi Thomas,

If you see the logs screenshot that you provided, your message has been put into the call queue,

but after that it has not retrieved from call queue. So it has not even reached the mapping step and the RFC channel.

  • check if there is a backlog of queue (rwb -> component monitoring -> engine status)
  • either there are more incoming messages than the number of messages RFC queue can process (you may need to fine tune the number of threads based on your requirements)
  • try to find out what is the cause of backlog and fix that

in your case, the soap channel has timed out before the message gets retrieved from the queue and processed to the target system

hope this helps

Former Member
0 Kudos

Hi Navdeep,

Your indeed correct.
I chekded the queues, no backlog.
Here is the last errors I get:

I just discovered that the basis team didn't configure the HTTP destination needed in ECC. Maybe this could have an impact too?

What is needed in PI to correctly contact the RFC receiver besides:

- the SLD business system and technical system for ECC

- RFC Receiver channel well configured

Thanks

Thomas

Snavi
Active Participant
0 Kudos

Hi Thomas,

Can you screenshot the queue status rwb-> component monitoring -> engine status -> queues

for SOAP and RFC

Former Member
0 Kudos

Hi Navdeep,

It was indeed linked to the Thread Assigned / Working = 10/10.
Do you know the best way to :

- resolve this issue?

- Clear that 10 Thread assigned as it is blocking us again.

Best regards,

Thomas

Snavi
Active Participant
0 Kudos

Hi Thomas,

Could you please indicate the queue where you see the thread assigned/working = 10/10.

a full screenshot would be useful.

this would help to understand if the bottleneck is from sender adapter to integration engine or from integration engine to the receiver adapter.

it may be your receiver adapter taking time to process the message and in result other message are kept waiting in the queue.

you can also try to put timeout as in the answer given by Sreenivas

Answers (5)

Answers (5)

former_member191435
Contributor
Former Member
0 Kudos

Hello,

I configured the SLD so that the Logical System Name is filled in.
But we discovered that we have an issue we 2 systems having the same Logical System Name.
What is not 100% clear for me is how this Logical System Name is used in the case of an RFC Receiver Channel.

Former Member
0 Kudos

Hi Thomas,

Logical System Name is not needed for RFC lookup Channel. But you cannot have same LS assigned to 2 systems in SLD.

- Service Interface inbound synchronous

-- based on the RFC

Inbound interface is also not needed. You can directly use the imported RFC in you operation mapping.

-1 communication channel for RFC Receiver

Also makes sure your receiver CC is populated with respect to your back-end system

Former Member
0 Kudos

Hi Sanjali,

Yes I corrected 2 days ago the Service interface inbound which I deleted and directly used the Imported RFC in the operation mapping.

Good to know that the Logical System Name is not needed.


For the CC RFC Receiver, I cross checked the parameters and they are correct.

I just tried changing the CC SOAP Sender Qualitity of Service (just for testing purpose) and this is what happened :

When I set the breakpoint with QoS to BE I have nothing entering ECC. When I change QoS from BE to EO then I have my request entering ECC and reaching my breakpoint.



Any idea is that can help resolve the issue I have as Synchronous timeout reached.

Best regards,

Thomas

Former Member
0 Kudos

According to this thread

PI 7.1 MessageExpiredException in SOAP to RFC s... | SCN

You could check the 'XPI Adapter : XI' values in Java System Properties for

'xiadapter.inbound.timeout.default' default is 180000 ms

and modify it to 300000 ms

Hope this helps.

Kind Regards

Sanjali

Former Member
0 Kudos

Hi all,

To give you an update:

I discovered that in the Integration Directory on my Business System the Adapter-Specific Identifiers are empty so I had a look in the SLD and noticed that the Business System was not well defined on the technical SAP System. I asked the basis team to adapt the SLD, hopefully that solves the problem.

Keep you updated,

Regards,

Thomas

iaki_vila
Active Contributor
0 Kudos

Hi Thomas,

Check in the ECC endpoint system that you have not any dump in st22. Also you can set an external breapoint in the RFC with the same user that you have defined in the RFC channel and to check if the processing time is excessive.

Regards.

Former Member
0 Kudos

Hi Inaki,

It's not going to the ECC back-end. The error is between the SOAP call and when it needs to reach the ECC.

iaki_vila
Active Contributor
0 Kudos

Hi Thomas,

Pay attention, even if the exception is in the SOAP adapter the problem could be in the RFC adapter or in the response mapping, because the exception is flowing to the components of PI and the message flow defined. Try to check if in the RFC channel there is any problem.

Regards.

Former Member
0 Kudos

Hi Thomas,

Check Pg. 14 and 15 of the following How-To guide for your specific error and a proposed solution.

http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/c059d583-a551-2c10-e095-eb5d95e03...

Also ping your receiver RFC communication channel to see if the backend system is available.

Timeout may be caused due to delayed/ no response from backend.

Hope this helps.