Im Unterschied zum normalen Funktionsbausteinaufruf gelten beim RFC folgende Einschränkungen:
Für die IMPORTING-, EXPORTING- und CHANGING-Parameter eines
remote-fähigen Funktionsbausteins muss die
Wertübergabe ausgewählt
sein. Bei TABLES-Parametern kann diese nicht explizit angegeben werden, sie wird beim RFC aber implizit verwendet.
Die Formalparameter eines remote-fähigen
Funktionsbausteins müssen mit Datentypen aus dem ABAP Dictionary oder mit eingebauten ABAP-Typen typisiert sein. Die Angabe von Datentypen aus
Typgruppen ist nicht möglich.
Bei einem Aufruf via synchronem und asynchronem RFC wird in der Regel
Datenbank-Commit abgesetzt. Aus diesem Grund darf ein synchroner oder asynchroner RFC nicht zwischen Open-SQL-Anweisungen verwendet werden, die einen
Datenbank-Cursor öffnen oder schließen. Ausgenommen hiervon ist die
Verbuchung. Während der Verbuchung führen
sRFC und
aRFC zu keinem Workprozesswechsel und zu keinem Datenbank-Commit.
In einem remote aufgerufenen Funktionsbaustein dürfen keine Anweisungen verwendet werden, welche die aktuelle
RFC-Sitzung und damit die
Verbindung schließen. Dazu gehören zum Beispiel die Anweisungen LEAVE PROGRAM oder SUBMIT ohne den RETURN-Zusatz.
Da beim RFC ausschließlich Wertübergabe stattfindet, kann beim Auftreten von Ausnahmen
auch beim synchronen RFC nie auf Zwischenergebnisse zugegriffen werden. Ausgenommen davon sind
TABLES-Parameter. Diese verhalten sich bei einer Ausnahme SYSTEM_FAILURE wie bei der lokalen
Ausführung des Funktionsbausteins, wo sie per Referenz übergeben werden. Die bis zum Auftreten der Ausnahme in einem solchen Parameter enthaltenen Daten werden an den Client übermittelt.
Bei der Übergabe von zeichenartigen Daten wird in der Regel zwischen den beteiligten
Codepages konvertiert. Bei der Übergabe zwischen
MDMP-Systemen und
Unicode-Systemen ist
die Zuordnung eventuell nicht eindeutig. Bei im ABAP Dictionary definierten Strukturen wird hierfür bei Verwendung des binären
RFC-Protokolls die Textsprache ausgewertet.
Bei Background RFC-Aufrufen (bgRFC und die obsoleten
tRFC,
qRFC) dürfen die Anweisungen
COMMIT WORK und ROLLBACK WORK nicht innerhalb einer Unit/LUW ausgeführt werden. Ebenso darf dort kein impliziter
Datenbank-Commit ausgelöst werden.