Was ist RFC?
RFC ist ein Mechanismus, mit dem Geschäftsanwendungen Informationen (in vordefinierten Formaten) mit anderen Systemen kommunizieren und austauschen können. RFC steht für 'Remote Function Call'
RFC besteht aus zwei Schnittstellen:
- Eine aufrufende Schnittstelle für ABAP-Programme
- Eine aufrufende Schnittstelle für Nicht-SAP-Programme.
Jedes ABAP-Programm kann eine Remote-Funktion mit der Anweisung CALL FUNCTION… DESTINATION aufrufen . Der Parameter DESTINATION teilt dem SAP-System mit, dass die aufgerufene Funktion in einem anderen System als den Aufrufern ausgeführt wird.Syntax-
CALL FUNCTION 'Fernfunktion'ZIEL destEXPORTIEREN f1 =IMPORTIEREN f2 =TABELLEN t1 =AUSNAHMEN
Logische Ziele werden über die Transaktion SM59 definiert und in der Tabelle RFCDES- Funktionen der RFC-Schnittstelle gespeichert
- Konvertieren aller Parameterdaten in die im Remote-System erforderliche Darstellung
- Aufrufen der Kommunikationsroutinen, die für die Kommunikation mit dem Remote-System erforderlich sind.
- Behandeln von Kommunikationsfehlern und Benachrichtigen des Anrufers, falls gewünscht (mithilfe des Parameters EXCEPTIONS der CALL FUNCTION).
RFC ist ein SAP-Protokoll zur Kommunikation zwischen Systemen, um die zugehörige Programmierung zu vereinfachen. Hierbei wird ein Funktionsbaustein aufgerufen, der sich auf einem anderen Computer als das Aufruferprogramm befindet. RFCs können auch verwendet werden, um ein anderes Programm auf demselben Computer aufzurufen. In der Regel wird es jedoch verwendet, wenn Funktionsbausteine / -programme "aufrufen" und "aufgerufen" auf separaten Computern ausgeführt werden.
In SAP wird das RFC-Schnittstellensystem zum Einrichten von RFC-Verbindungen zwischen verschiedenen SAP-Systemen sowie zwischen einem SAP und einem externen (Nicht-SAP-) System verwendet.
Details zu RFC müssen bekannt sein
- SAP verwendet das CPIC-Protokoll (Common Programming Interface for Communication) zum Übertragen von Daten zwischen Systemen. Es ist ein SAP-spezifisches Protokoll. Remote Function Call (RFC) ist eine Kommunikationsschnittstelle, die auf CPI-C basiert, jedoch mehr Funktionen bietet und für Anwendungsprogrammierer einfacher zu verwenden ist
- Die Funktionen der RFC-Bibliothek unterstützen die Programmiersprache C und Visual Basic (auf Windows-Plattformen).
- RFC-Verbindungen können immer systemweit verwendet werden. Dies bedeutet, dass eine in Client 000 definierte RFC-Verbindung auch von Client 100 aus verwendet werden kann (ohne Unterschied).
- RFC ist das Protokoll zum Aufrufen spezieller Unterprogramme (Funktionsbausteine) über das Netzwerk. Funktionsbausteine sind vergleichbar mit C-Funktionen oder PASCAL-Prozeduren. Sie haben eine definierte Schnittstelle, über die Daten, Tabellen und Rückkehrcodes ausgetauscht werden können. Funktionsbausteine werden im R / 3-System in einer eigenen Funktionsbibliothek verwaltet, die als Function Builder bezeichnet wird.
- Der Function Builder (Transaktion SE37) bietet Anwendungsprogrammierern eine nützliche Umgebung zum Programmieren, Dokumentieren und Testen von Funktionsbausteinen, die sowohl lokal als auch remote aufgerufen werden können. Das R / 3-System generiert automatisch den zusätzlichen Code (RFC-Stub), der für Fernaufrufe benötigt wird.
- Sie pflegen die Parameter für RFC-Verbindungen mit der Transaktion SM59. Das R / 3-System wird außerdem mit einem RFC-SDK (Software Development Kit) geliefert, das umfangreiche C-Bibliotheken verwendet, um die Verbindung externer Programme mit dem R / 3-System zu ermöglichen.
- Der einzige Unterschied zwischen einem Remote-Aufruf eines Funktionsbausteins an einen anderen Server und einem lokalen Aufruf besteht in einem speziellen Parameter (Ziel), der den Zielserver angibt, auf dem das Programm ausgeführt werden soll.
Die RFC-Vorteile:
RFC hilft, den Aufwand von Programmierern zu reduzieren, indem es ihnen ermöglicht, die Neuentwicklung von Modulen und Methoden auf Remote-Systemen zu vermeiden. Es ist fähig genug:
- Konvertieren Sie die Daten in das Format, das für das Remote- (Ziel-) System verständlich ist.
- Konvertieren Sie die Daten in das Format, das für das Remote- (Ziel-) System verständlich ist.
- Rufen Sie bestimmte Routinen auf, die zum Starten der Kommunikation mit dem Remote-System erforderlich sind.
- Behandeln Sie Fehler, die während des Kommunikationsprozesses auftreten können.
Arten von RFC:
Synchron
Erfordert, dass beide Systeme (Client und Server) zum Zeitpunkt der Kommunikation oder Datenübertragung verfügbar sind. Dies ist der am häufigsten verwendete Typ und wird benötigt, wenn das Ergebnis unmittelbar nach der Ausführung von sRFC benötigt wird.
sRFC ist ein Kommunikationsmittel zwischen Systemen, bei denen Bestätigungen erforderlich sind. Die Ressourcen des Quellsystems warten auf dem Zielsystem und stellen sicher, dass sie die Nachricht / Daten mit ACKD übermitteln. Die Daten sind konsistent und zuverlässig für die Kommunikation.
Das Problem besteht darin, dass die Ressourcen des Quellsystems warten, bis das Zielsystem verfügbar ist, wenn das Zielsystem nicht verfügbar ist. Dies kann dazu führen, dass die Prozesse des Quellsystems auf Zielsystemen in den Sleep / RFC / CPIC-Modus wechseln und diese Ressourcen blockieren.
Benutzt für
- Zur Kommunikation zwischen Systemen
- Zur Kommunikation zwischen SAP Web Application Server und SAP GUI
Asynchron
Es handelt sich um eine Kommunikation zwischen Systemen, bei denen keine Bestätigungen erforderlich sind (ähnlich wie bei der Postkartenzustellung). Es ist nicht erforderlich, dass beide Systeme zum Zeitpunkt der Ausführung verfügbar sind und das Ergebnis nicht sofort an das aufrufende System zurückgesendet werden muss .Die Quellsystemressource wartet nicht auf das Zielsystem, da sie die Nachricht / Daten übermittelt, ohne auf eine Bestätigung zu warten. Es ist nicht zuverlässig für die Kommunikation, da Daten verloren gehen können, wenn das Zielsystem nicht verfügbar ist. Benutzt für -
- Zur Kommunikation zwischen Systemen
- Zur Parallelverarbeitung
Transaktion
Es ist eine spezielle Form von aRFC. Transaktions-RFC stellt die transaktionsähnliche Behandlung von Verarbeitungsschritten sicher, die ursprünglich autonom waren.Transaktions-RFC ist eine asynchrone Kommunikationsmethode, die den aufgerufenen Funktionsbaustein im RFC-Server nur einmal ausführt, selbst wenn die Daten aufgrund eines Netzwerkproblems mehrmals gesendet werden. Das Remote-System muss zum Zeitpunkt der Ausführung eines tRFC durch das RFC-Client-Programm nicht verfügbar sein. Die tRFC-Komponente speichert die aufgerufene RFC-Funktion zusammen mit den entsprechenden Daten in der SAP-Datenbank unter einer eindeutigen Transaktions-ID (TID). tRFC ähnelt aRFC, da es nicht auf dem Zielsystem wartet (ähnlich wie bei einem registrierten Beitrag). Wenn das System nicht verfügbar ist, schreibt es die Daten in aRFC-Tabellen mit einer Transaktions-ID (SM58), die vom Scheduler RSARFCSE (der alle 60 Sekunden ausgeführt wird) ausgewählt wird. Benutzt für-
- Erweiterung von Asynchronous RFC
- Für eine sichere Kommunikation zwischen Systemen
In Warteschlange
Queued RFC ist eine Erweiterung von tRFC. Außerdem wird sichergestellt, dass einzelne Schritte nacheinander verarbeitet werden.Um sicherzustellen, dass mehrere LUWs (Logical Unit of Work / Transaction) in der von der Anwendung angegebenen Reihenfolge verarbeitet werden. tRFC kann mithilfe von Warteschlangen (eingehende und ausgehende Warteschlangen) serialisiert werden. Daher der Name in der Warteschlange RFC (qRFC). Benutzt für-
- Erweiterung des Transaktions-RFC
- Für eine definierte Verarbeitungssequenz
- Die Implementierung von qRFC wird empfohlen, wenn Sie sicherstellen möchten, dass mehrere Transaktionen in einer vordefinierten Reihenfolge verarbeitet werden.
Arten von RFC-Verbindungen
Typ 3 - Einträge geben die Verbindung zwischen ABAP-Systemen an. Hier müssen wir den Hostnamen / die IP-Adresse angeben. Sie können jedoch bei Bedarf Anmeldeinformationen angeben. Dies gilt für beide Arten von RFCs zwischen ABAP-Systemen und externen Aufrufen von ABAP-Systemen.Typ I - Einträge geben ABAP-Systeme an, die mit derselben Datenbank wie das aktuelle System verbunden sind. Diese Einträge sind vordefiniert und können nicht geändert werden. Beispiel für einen Eintragsnamen: ws0015_K18_24
- ws0015 = Hostname
- K18 = Systemname (Datenbankname)
- 24 = TCP-Dienstname
Typ T - Ziele sind Verbindungen zu externen Programmen, die die RFC-API zum Empfangen von RFCs verwenden. Der Aktivierungstyp kann entweder Start oder Registrierung sein. Wenn es Start ist, müssen Sie den Hostnamen und den Pfadnamen des zu startenden Programms angeben.
Wie codiere ich einen RFC?
1. Legen Sie auf der Registerkarte Funktionsbausteinattribute (Transaktionscode SE37) den Verarbeitungstyp als Remote-fähiges Modul fest, um einen Remote-Funktionsbaustein zu erstellen.
2. Schreiben Sie den Code für den Funktionsbaustein.
3. Definieren Sie das Ziel des RFC-Servers im RFC-Client-System, das die Remote-Funktion aufruft (über die SM59-Transaktion).
4. Parameter deklarieren : Alle Parameterfelder für einen Remote-Funktionsbaustein müssen als Referenzfelder definiert sein, dh wie ABAP Dictionary-Felder.5. Ausnahmen: Das System löst intern COMMUNICATION_FAILURE und SYSTEM_FAILURE aus. Sie können Ausnahmen in einer Remote-Funktion genauso auslösen wie in einer lokal aufgerufenen Funktion.
Debuggen von Remote-Funktionsaufrufen
- Es ist nicht möglich, einen Remote-Funktionsaufruf an ein anderes System zu debuggen .
- Beim Testen von ABAP-zu-ABAP-RFC-Aufrufen können Sie jedoch den ABAP-Debugger verwenden, um die Ausführung der RFC-Funktion im Remote-System zu überwachen.
- Bei Remote-Aufrufen wird der ABAP-Debugger (einschließlich der Debugging-Schnittstelle) auf dem lokalen System ausgeführt. Datenwerte und andere Laufinformationen für die Remote-Funktion werden vom Remote-System übergeben.