Skip to Content

Best method to replace RFC between to SAP ECC and SAP CRM system

Hi Team,

Currently I am trying to update transnational data between SAP ECC and SAP CRM system using RFC function modules. I have observed that it is failing in some cases ( Example if the order in CRM is in edit mode and by the same time if we are trying to update it , it is getting failed) and even we couldn't able to see the detailed log why it was failed to updated. Can you please suggest is there any best way to communicate between these two system?

Greatly appreciate for best suggestions .


Siva Krishna

Add a comment
10|10000 characters needed characters exceeded

Related questions

2 Answers

  • author's profile photo Former Member
    Former Member
    Posted on Jul 19, 2016 at 04:33 AM

    Hi Siva

    Have you looked at using the Middleware layer - Bdocs / Idocs

    I don't believe that you should be developing custom applications to meet your requirement unless the business process is not standard.

    Take a look at this link as a starting point

    Defining ERP as Leading System (Data Exchange Scenarios X, Y, Z) - Data Exchange for Business Transactions - SAP Library



    Add a comment
    10|10000 characters needed characters exceeded

    • Hi Arden,

      BUS_TRANS_MSG - CRM Sales Orders is related to Sales Order process . where in my cases I am working with Custom filed in Service Order. By the time of saving CRM Service order the data which is in CRM Service order has to flow to ECC-Sales order ( Here also added new fields in VBAK table using append structure ) . if you don't mine can you please explain in more detail.


      Siva Krishna

  • Posted on Jul 19, 2016 at 08:32 AM

    You should be more explicit, because RFC is not the cause of not being able of retrieving the failure messages in the remote system, of course.

    Add a comment
    10|10000 characters needed characters exceeded

    • I meant RFC is the major protocol for all communications in SAP (also HTTP of course, and few others). So the solution will be RFC, you just need a "framework" around to store the errors and play them later.

      There are frameworks for RFC like tRFC, qRFC, bgRFC, and the BDocs being based on these ones, but with a much better but complex framework for handling errors and replay.

      If you're not comfortable with BDocs, you can still do your own custom solution, if you use sRFC (synchronous), you may store the exception in a custom database table, and create a program to restart them...

      You may also use tRFC, which stores exceptions (the function module must fail with RAISE) and you may see the erroneous calls in transaction SM58, but they won't be automatically played again, there's a need of an administrator (or you may create a program with a strategy for some errors, based on RSARFCEX program for instance).

      With qRFC, you can do whatever you want, but it's a little bit more complex...

      Of course, you must carefully think to the solution (imagine that you run an old failed RFC, which is obsolete because there were other intermittent updates...)

Before answering

You should only submit an answer when you are proposing a solution to the poster's problem. If you want the poster to clarify the question or provide more information, please leave a comment instead, requesting additional details. When answering, please include specifics, such as step-by-step instructions, context for the solution, and links to useful resources. Also, please make sure that you answer complies with our Rules of Engagement.
You must be Logged in to submit an answer.

Up to 10 attachments (including images) can be used with a maximum of 1.0 MB each and 10.5 MB total.