In contrast to the normal function module call, the following restrictions apply to an RFC:
Pass-by value must
be selected for the IMPORTING, EXPORTING, and CHANGING parameters of a
remote-enabled function
module. This cannot be specified explicitly for TABLES parameters, but are used implicitly for RFC.
The formal parameter of a
remote-enabled function module must be typed using data types from ABAP Dictionary or using built-in ABAP types. Data types from
type pools cannot be specified.
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,
sRFC and
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.
When passing character-like data, there is usually a conversion between the participating
code pages. When data is passed between
MDMP systems and
Unicode systems, the mapping might not be unique. For structures defined in ABAP Dictionary, the
text language is evaluated when the binary RFC protocol is used.
In background RFC calls (bgRFC and the obsolete
tRFC and
qRFC), the statements COMMIT WORK and ROLLBACK WORK must not be executed within a Unit/LUW. In addition, no implicit
database commit can be triggered there.