cancel
Showing results for 
Search instead for 
Did you mean: 

IDOCS and RFC question

Former Member
0 Kudos

I have a question about RFC mechanism in SAP R/3. I created an RFC and using this RFC destination I created a port for IDOC processing, and partner profiles. These IDOCs will be delivered to a third party sub-system SUN's Identitiy Manager. Sometimes these IDOCs show status 3 ( delivered to the port) and in SM58 they show in the queue with error "cannot register the RFC program on target system" something like that. When the adapter on the sub-system is started this queue will be cleared.

My question is whether the IDOCs are being pushed by SAP to the sub-system or the programs in the sub-system pull the IDOCs from SAP? When the sub-system is started sometimes the IDOCs that are created later are delivered and earlier IDOCs will be still in the queue.

How the RFC works? Is it works on UDP protocol?

Is there any status flag for IDOCs to indicate that they have been processed in SAP? Whether SAP sends only the processed IDOCs to the target system?

Please help.

Thanks in advance

Accepted Solutions (0)

Answers (3)

Answers (3)

Former Member
0 Kudos

You are right we use RBDAPP01 for inbound processing. To process IDOCs that haven't been sent and are waiting as tRFCs in SM58, we use program RSARFCEX. You can also schedule this job periodically to send any waiting IDOCs. See note 161527 for information on running the program as a batch job.

As for monitoring for waiting IDOCs, you can use CCMS monitoring. There is already a monitor for IDOC monitoring. Do the following to get to the monitor.

1. Go to tcode RZ20.

2. Expand node "SAP CCMS Monitors for Optional Components"

3. Open monitor set "ALE/EDI" by double clicking on it.

4. You will see client specific nodes. Expand the client you are interested in.

5. Expand node "SAP: All/ 1 hour waited"

6. Expand node "tRFC Queue SAP: All/ 1 hour waited"

Also node "Outbound IDoc SAP: All/ 1 hour waited" has usefull monitoring attributes.

If CCMS has already been configured for sending alerts, you can have alerts sent if the number of waiting IDOCs exceeds a certain value. To configure this choose the a node and click on the properties button.

Please award points if helpful.

Tarkesh

Former Member
0 Kudos

Sam,

When a RFC destination is based on a registered program, it means that the external program has to establish the connection to the SAP gateway. In the external application there will be some configuration describing the program name to use, the hostname of the SAP gateway, TCP port number, etc. Using this information the application can establish the connection to the SAP gateway. The "program name" in the RFC destination is used to identify the connection at the gateway.

The IDOCs will be sent by the SAP system to the external application via the port configured in WE21. If the connection to the external application is available the IDOCS will be sent else they will wait. These waiting IDOCs can be processes in batch using program RBDAPP01.

Former Member
0 Kudos

Tarkesh,

The program RBDAPP01 looks like for Inbound IDOCs. Is there a program for Outbound IDOCs? And how to monitor tRFC (SM58) ( programatically) for IDOCs not sent, so that it can send us an alert.

Thanks

sam

Former Member
0 Kudos

RFC works on protocal called RFC protocol , comming to error "program not registered" means while defining the RFC destination we specify a register program ( it comes under TCP/IP connections in SM59) that program must be running somewhere, examples like services in windows. then That RFC will be successful

Regards

sunny

Former Member
0 Kudos

hey there,

in general, IDOCs are pushed never pulled. There are examples (BW) where the asking system sends an IDOC which makes the targetsystem sending information back. But usually they are pushed.

The error seems to indicated, that the external system is not available at that moment. Could it be that its busy in that moment?

Greez Oliver

if helpful.. reward..

Former Member
0 Kudos

I know it comes under TCP/IP connections. But inherently I believe the RFC works on UDP. Because, when we create RFC we do not specify the target server name, we only specify the registered program name. There should be route discovery mechanism to find where the program is running.