Remote Function Call (RFC) im SAP-Tutorial

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:

  1. Eine Aufrufschnittstelle für ABAP-Programme
  2. Eine Aufrufschnittstelle für Nicht-SAP-Programme.

Jedes ABAP-Programm kann eine Remote-Funktion mit aufrufen AUFRUFFUNKTION…ZIEL Aussage. Das REISEZIEL Der Parameter teilt dem SAP-System mit, dass die aufgerufene Funktion in einem anderen System als den Aufrufern läuft.

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).

Funktionen der RFC-Schnittstelle

RFC ist ein SAP-Protokoll zur Abwicklung der Kommunikation zwischen Systemen zur Vereinfachung der zugehörigen Programmierung. Dabei handelt es sich um den Vorgang des Aufrufs eines Funktionsmoduls, das sich auf einem anderen Computer als das aufrufende Programm befindet. RFCs können auch verwendet werden, um ein anderes Programm auf demselben Computer aufzurufen. Normalerweise wird es jedoch verwendet, wenn „aufrufende“ und „aufgerufene“ Funktionsmodule/Programme auf separaten Computern ausgeführt werden.

Funktionen der RFC-Schnittstelle

In SAPDas RFC-Schnittstellensystem dient zum Einrichten von RFC-Verbindungen zwischen verschiedenen SAP-Systeme, und auch zwischen einem SAP- und einem externen (Nicht-SAP-)System.

Muss De kennentails Über RFC

  • SAP verwendet das CPIC-Protokoll (Common Programming Interface for Communication) zur Datenübertragung zwischen Systemen. Es handelt sich um ein SAP-spezifisches Protokoll. Remote Function Call (RFC) ist eine auf CPI-C basierende Kommunikationsschnittstelle, die jedoch mehr Funktionen bietet und für Anwendungsprogrammierer einfacher zu verwenden ist
  • Die RFC-Bibliotheksfunktionen unterstützen die C programming language 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

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 und 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 ein asyncZeitgesteuerte Kommunikationsmethode, die den aufgerufenen Funktionsbaustein im RFC-Server nur einmal ausführt, auch wenn die Daten aufgrund eines Netzwerkproblems mehrmals gesendet werden. Das Remote-System muss zu dem Zeitpunkt, zu dem das RFC-Client-Programm einen tRFC ausführt, 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 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 ausgewählt wird (der alle 60 Sekunden ausgeführt wird). Benutzt für-

  • Erweiterung von Asyncchronischer 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

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.

So codieren Sie einen RFC

2) Schreiben Sie den Code für den Funktionsbaustein.

So codieren Sie einen RFC

3) Definieren Sie die Destination des RFC-Servers im RFC-Client-System, der die Remote-Funktion aufruft (über die SM59-Transaktion).

So codieren Sie einen RFC

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.