A database commit is performed in every call that uses
synchronous and asynchronous RFC. For this reason, synchronous or asynchronous RFC must not be used between ABAP SQL statements that open or close a
database cursor. An exception to this are
updates. When updates are running,
aRFC do not cause work processes to be switched or database commits to be executed.
In a remotely called function module, no statements can be called that close the current
RFC session and hence the
connection. An example of this is the statement LEAVE PROGRAM, or SUBMIT without the addition RETURN.
As only pass by value is used for the RFC, when exceptions do occur, you can never access interim
results when a synchronous RFC is made. TABLES parameters are an exception
to this. When the exception SYSTEM_FAILURE is raised, these parameters
behave in the same way as when the function module is executed locally, in which case they are passed by reference. The data held by a parameter of this type before the exception is passed to the client.