Remote Function Call (RFC) in SAP Einführung
Was ist RFC?
RFC ist ein Mechanismus, der es Geschäftsanwendungen ermöglicht, mit anderen Systemen zu kommunizieren und Informationen (in vordefinierten Formaten) auszutauschen. RFC steht für „Remote-Funktionsaufruf“
RFC besteht aus zwei Schnittstellen:
- Eine Aufrufschnittstelle für ABAP-Programme
- Eine Anrufschnittstelle für Nicht-SAP Programme.
Jedes ABAP-Programm kann eine Remote-Funktion mit aufrufen AUFRUFFUNKTION…ZIEL Aussage. Das REISEZIEL Parameter gibt an, SAP System, in dem die aufgerufene Funktion in einem anderen System als dem des Anrufers ausgeführt wird.
Syntax-
CALL FUNCTION 'remotefunction' DESTINATION dest EXPORTING f1 = IMPORTING f2 = TABLES t1 = EXCEPTIONS
Logische Ziele werden per Transaktion definiert SM59 und in der Tabelle gespeichert RFCDES
Funktionen der RFC-Schnittstelle
- Konvertieren aller Parameterdaten in die im Remote-System benötigte 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 Handhabung der Kommunikation zwischen Systemen, um die zugehörige Programmierung zu vereinfachen. Dabei handelt es sich um den Vorgang des Aufrufens eines Funktionsmoduls, das sich auf einem anderen Rechner als das aufrufende Programm befindet. RFCs können auch verwendet werden, um ein anderes Programm auf demselben Rechner aufzurufen, werden jedoch normalerweise verwendet, wenn „aufrufende“ und „aufgerufene“ Funktionsmodule/Programme auf unterschiedlichen Rechnern ausgeführt werden.
In SAPDas RFC-Schnittstellensystem dient zum Einrichten von RFC-Verbindungen zwischen verschiedenen SAP Systemeund auch zwischen einem SAP und ein externer (nicht-SAP) System.
Wichtige Details zu RFC
- SAP Verwendet das CPIC-Protokoll (Common Programming Interface for Communication) zur Datenübertragung zwischen Systemen. Es ist 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 RFC-Bibliotheksfunktionen unterstützen die Programmiersprache C und Visual Basic (auf Windows Plattformen)
- RFC-Verbindungen können grundsätzlich systemweit genutzt werden. Das bedeutet, dass eine RFC-Verbindung, die Sie im Mandanten 000 definiert haben, auch vom Mandanten 100 aus genutzt werden kann (ohne Unterschied).
- RFC ist das Protokoll zum Aufruf spezieller Unterprogramme (Funktionsbausteine) über das Netzwerk. Funktionsmodule sind vergleichbar mit C-Funktionen oder PASCAL-Prozeduren. Sie verfügen über eine definierte Schnittstelle, über die Daten, Tabellen und Returncodes ausgetauscht werden können. Funktionsbausteine werden im R/3-System in einer eigenen Funktionsbibliothek, dem Function Builder, verwaltet.
- Der Function Builder (Transaktion SE37) stellt Anwendungsprogrammierern eine nützliche Umgebung zum Programmieren, Dokumentieren und zur Verfügung Testen Funktionsbausteine, 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 Remote-Aufrufe benötigt wird.
- Die Parameter für RFC-Verbindungen pflegen Sie über die Transaktion SM59. Das R/3-System wird außerdem mit einem RFC-SDK (Software Development Kit) ausgeliefert, das mithilfe umfangreicher C-Bibliotheken die Anbindung externer Programme an das R/3-System ermöglicht.
- Der einzige Unterschied zwischen einem Remote-Aufruf eines Funktionsbausteins auf einen anderen Server und einem lokalen Aufruf besteht in einem speziellen Parameter (Destination), der den Zielserver angibt, auf dem das Programm ausgeführt werden soll.
Die RFC-Vorteile
RFC trägt dazu bei, den Aufwand von Programmierern zu reduzieren, indem es ihnen die Neuentwicklung von Modulen und Methoden auf entfernten Systemen erspart. Es ist fähig genug, um:
- Konvertieren Sie die Daten in das für das Remote-(Ziel-)System verständliche Format.
- Konvertieren Sie die Daten in das für das Remote-(Ziel-)System verständliche Format.
- Rufen Sie bestimmte Routinen auf, die notwendig sind, um die Kommunikation mit dem entfernten System zu starten.
- Behandeln Sie Fehler, die im Kommunikationsprozess auftreten können.
Arten von RFC
Synchrone
Erfordert, dass beide Systeme (Client und Server) zum Zeitpunkt der Kommunikation oder Datenübertragung verfügbar sind. Dies ist der häufigste 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 dem Bestätigungen erforderlich sind. Die Ressourcen des Quellsystems warten auf dem Zielsystem und stellen sicher, dass diese die Nachricht/Daten mit ACKD übermitteln. Die Daten sind konsistent und für die Kommunikation zuverlässig.
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 Ruhezustand/RFC/CPIC-Modus wechseln und somit diese Ressourcen blockieren.
Verwendet für
- Für die Kommunikation zwischen Systemen
- Für die Kommunikation zwischen SAP Web Application Server für SAP GUI
asynchrone
Es handelt sich um eine Kommunikation zwischen Systemen, bei der keine Bestätigungen erforderlich sind (ähnlich wie bei der Zustellung per Postkarte). 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 -
- Für die Kommunikation zwischen Systemen
- Zur Parallelverarbeitung
Transactional
Es handelt sich um eine Sonderform von aRFC. Transactional RFC sorgt für eine transaktionsähnliche Abwicklung ursprünglich autonomer Verarbeitungsschritte.
Transaktionaler 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 nicht verfügbar sein, wenn das RFC-Client-Programm einen tRFC ausführt. Die tRFC-Komponente speichert die aufgerufene RFC-Funktion zusammen mit den entsprechenden Daten im SAP Datenbank unter einer eindeutigen Transaktions-ID (TID). tRFC ist aRFC ähnlich, da es nicht auf dem Zielsystem wartet (ähnlich einem Einschreiben). 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 des asynchronen RFC
- Für eine sichere Kommunikation zwischen Systemen
In Warteschlange
Queued RFC ist eine Erweiterung von tRFC. Es stellt außerdem sicher, dass die einzelnen Schritte nacheinander abgearbeitet 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 (Eingangs- und Ausgangswarteschlangen) serialisiert werden. Daher der Name Queued RFC (qRFC). Benutzt für-
- Erweiterung des Transactional RFC
- Für eine definierte Bearbeitungsreihenfolge
- Wenn Sie sicherstellen möchten, dass mehrere Transaktionen in einer vordefinierten Reihenfolge verarbeitet werden, empfiehlt sich die Implementierung von qRFC.
Arten von RFC-Verbindungen
Typ 3 – Einträge geben die Verbindung zwischen an ABAP-Systeme. 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 an ABAP-Systeme
Tippe 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. Beispieleintragsname: ws0015_K18_24
- ws0015=Hostname
- K18=Systemname (Datenbankname)
- 24=TCP-Dienstname
Geben Sie T ein – Ziele sind Verbindungen zu externen Programmen, die die RFC-API zum Empfang 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) Stellen Sie auf der Registerkarte Funktionsmodulattribute (Transaktionscode SE37) den Verarbeitungstyp auf Remote-fähiges Modul ein, um ein Remote-Funktionsmodul zu erstellen.
2) Schreiben Sie den Code für den Funktionsbaustein.
3) Definieren Sie die Destination des RFC-Servers im RFC-Client-System, der die Remote-Funktion aufruft (über die SM59-Transaktion).
4) Parameter deklarieren: Alle Parameterfelder für einen Remote-Funktionsbaustein müssen als Referenzfelder definiert sein, also wie ABAP-Dictionary-Felder.
5) Ausnahmen: Das System löst intern COMMUNICATION_FAILURE und SYSTEM_FAILURE aus. Sie können in einer Remote-Funktion genau wie in einer lokal aufgerufenen Funktion Ausnahmen auslösen.
Debuggen von Remote-Funktionsaufrufen
- Debuggen nicht möglich ein Remote-Funktionsaufruf an ein anderes System.
- 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 läuft der ABAP-Debugger (inkl. Debugging-Schnittstelle) auf dem lokalen System. Datenwerte und andere Ausführungsinformationen für die Remote-Funktion werden vom Remote-System übergeben.