Sie sind auf Seite 1von 49

Remote Function Call

in SAP
Präsentation für das
Seminar „Verteilte Systeme“
von Sebastian Reidemeister
Gliederung
 Grundlagen
◦ Aufbau SAP-System
◦ ABAP + Funktionsbausteine
◦ Kommunikationsarten
 RFC
◦ Definition
◦ Kommunikationsszenarien
◦ Arten & deren Funktionsweise
 Programmierung
 Fazit

Sebastian Reidemeister, B. Sc. 2


Grundlagen RFC Programmierung Fazit

Aufbau SAP-System
Application
NetWeaver Application
AS ABAP
Server
Server

Java EE Applikationsserver
SAP NetWeaver

Kommunikationsschnittstellen
SAP

Sebastian Reidemeister, B. Sc. 3


Grundlagen RFC Programmierung Fazit

ABAP
 SAP-eigene Programmiersprache
 „Advanced Business Application Programming“
 Ähnlich zu COBOL
 Sprachumfang nicht genau definiert
 Basis für SAP R/3 Module
 Entwicklung in ABAP-Workbench

Sebastian Reidemeister, B. Sc. 4


Grundlagen RFC Programmierung Fazit

ABAP-Eigenschaften
 OpenSQL: integrierter DB-Zugriff
 Integriertes Konzept des Online Transaction
Processing (OLTP)
 Schnittstelle zu XML
 Schnittstelle zu entfernten Systemen (RFC)
 Vorteil: Abwärtskompatibilität

Sebastian Reidemeister, B. Sc. 5


Grundlagen RFC Programmierung Fazit

Funktionsbausteine
Funktion 1

Funktionsbaustei
n1

Funktion n

Funktionsgruppe

Funktion 1

Funktionsbaustei
nn

Funktion n

Sebastian Reidemeister, B. Sc. 6


Grundlagen RFC Programmierung Fazit

Funktionsbausteine
Elemente Bedeutung
Import-Parameter •Eingabedaten
•Grundlage für Bearbeitung
Export-Parameter •Ausgabedaten
•Ergebnis der Bearbeitung
Changing-Parameter •Beinhaltet interne veränderbare
Tabellen
Tabellen-Parameter •Beinhaltet interne veränderbare
Tabellen
Ausnahmen (Exceptions) •(bausteinspezifische)
Fehlermeldungen
Sebastian Reidemeister, B. Sc. 7
Grundlagen RFC Programmierung Fazit

Kommunikationsarten
 Synchrone Kommunikation

Sender Empfänger
Funktionsaufruf
• Programm setzt • Funktionsaufruf
Aufruf ab wird sofort
• Wartet auf bearbeitet
Antwort
Rückantwort

Sebastian Reidemeister, B. Sc. 8


Grundlagen RFC Programmierung Fazit

Kommunikationsarten
 Asynchrone Kommunikation

Sender Empfänger

• Aufruf wird • Abarbeitung des


wiederholt Funktionsaufrufs,
• Keine wenn verfügbar
Rückantwort
erwartet

Funktionsaufruf
Ausgangsqueue
Rückantwort

Sebastian Reidemeister, B. Sc. 9


Grundlagen RFC Programmierung Fazit

RFC-Definition
 Kommunikation zwischen Anwendungen
verschiedener Systeme
 Standard-Schnittstelle zur Realisierung von
Kommunikation
 Ruft Funktion auf, die in entfernten System
ausgeführt werden soll
 Erweiterung von „CALL FUNCTION“

Sebastian Reidemeister, B. Sc. 10


Grundlagen RFC Programmierung Fazit

RFC-Definition
 Dienste:
◦ Aufruf und Steuerung der Kommunikationsroutinen
◦ An- und Abmeldung an das entfernte System
◦ Berechtigungsprüfungen für die verwendete
Funktionsgruppe
◦ Konvertierung von Aktualparametern
◦ Fehlerbehandlung

Sebastian Reidemeister, B. Sc. 11


Grundlagen RFC Programmierung Fazit

RFC-Schnittstelle
 Aufrufschnittstelle für ABAP-Programme
◦ Aufrufer: jedes beliebige ABAP-Programm
◦ Gerufener: ein als entfernt registrierter
Funktionsbaustein
◦ sRFC: CALL FUNCTION … DESTINATION
◦ aRFC: CALL FUNCTION – STARTING NEW TASK
◦ tRFC: CALL FUNCTION – IN BACKGROUND TASK

Sebastian Reidemeister, B. Sc. 12


Grundlagen RFC Programmierung Fazit

RFC-Schnittstelle
 Aufrufschnittstellen für Nicht-ABAP-Programme
◦ Muss als Kommunikationspartner programmiert
werden
◦ Lösung über Connectoren:
 SAP Java Connector
 SAP Java Resource Adapter
 SAP .NET Connector

Sebastian Reidemeister, B. Sc. 13


Grundlagen RFC Programmierung Fazit

RFC-Kommunikation aus R/3


R/3-Applikationsserver Remote-System

Lokaler Aufruf • Externes Nicht-SAP-System


PROGRAM … • R/2-System
FB • Applikationsserver eines
CALL andren R/3-Systems
FUNCTION… • Applikationsserver des
selben R/3-Systems
Remote Aufruf Remote Aufruf
PROGRAM …
Remote FB
CALL FUNCTION…
DESTINATION

Sebastian Reidemeister, B. Sc. 14


Grundlagen RFC Programmierung Fazit

Szenario 1: ABAP - ABAP

AS ABAP AS ABAP
ABAP ABAP
Programm Programm

RFC-Schnittstelle RFC-Schnittstelle

Sebastian Reidemeister, B. Sc. 15


Grundlagen RFC Programmierung Fazit

Szenario 2: AS ABAP - Fremdsystem

AS ABAP Fremdsystem
ABAP- Nicht-
Programm ABAP-
Programm

RFC-Schnittstelle RFC-API

Sebastian Reidemeister, B. Sc. 16


Grundlagen RFC Programmierung Fazit

Szenario 3: ABAP – SAP Java

AS ABAP AS Java
ABAP- Java-
Programm Programm

RFC-Schnittstelle SAP JCo

Sebastian Reidemeister, B. Sc. 17


Grundlagen RFC Programmierung Fazit

Szenario 4: ABAP – Java extern

AS ABAP Java System


(nicht SAP)
ABAP-
Programm
Java-
Programm

RFC-Schnittstelle SAP JCo

Sebastian Reidemeister, B. Sc. 18


Grundlagen RFC Programmierung Fazit

Szenario 5: ABAP – SAP JRA

AS ABAP AS Java
ABAP- Java-
Programm Client

RFC-Schnittstelle SAP JCo SAP JRA

Sebastian Reidemeister, B. Sc. 19


Grundlagen RFC Programmierung Fazit

RFC-Arten & deren Funktionsweise


 Synchroner RFC (sRFC)
 Asynchroner RFC (aRFC)
 Transaktioneller RFC (tRFC)
 Queued RFC (qRFC)
 Background RFC (bgRFC)

Sebastian Reidemeister, B. Sc. 20


Grundlagen RFC Programmierung Fazit

Synchroner RFC-sRFC
 Ausführung externer Funktion aus AS ABAP auf
Grundlage der synchronen Kommunikation
 Wird höchstens einmal ausgeführt und nicht
wiederholt

Sebastian Reidemeister, B. Sc. 21


Grundlagen RFC Programmierung Fazit

Synchroner RFC-sRFC

PROGRAM … Remote Function


.
.
CALL FUNCTION ‘XYZ‘
DESTINATION ‘A‘ FUNCTION XYZ
EXPORTING … .
. .
. .
. ENDFUNCTION
.
.

Sebastian Reidemeister, B. Sc. 22


Grundlagen RFC Programmierung Fazit

Asynchroner RFC-aRFC
 Eigenständiger RFC-Typ „pseudo-asychron“
 Wartet nicht die erfolgreiche Bearbeitung der
Funktion im aufgerufenen System ab
 Gerufene Server muss zur Verfügung stehen
 Höchstens einmal ausgeführt

Sebastian Reidemeister, B. Sc. 23


Grundlagen RFC Programmierung Fazit

transaktioneller RFC-tRFC
 Führt gerufene Funktion genau einmal aus
 Gerufenes System muss nicht verfügbar sein
 Bei Kommunikationsproblemen:
Speicherung der RFC-Funktion + Daten in
Datenbank
 In jedem Fall:
Statusfortschreibung auf der Datenbank

Sebastian Reidemeister, B. Sc. 24


Grundlagen RFC Programmierung Fazit

transaktioneller RFC-tRFC
PROGRAM … Logische Einheit
.
.
CALL FUNCTION ‘X1‘ FUNCTION X1
IN BACKGROUNDTASK .
DESTINATION ‘A‘ .
… ENDFUNCTION
CALL FUNCTION ‘X2‘
IN BACKGROUNDTASK FUNCTION X2
DESTINATION ‘A‘ .
… .
COMMIT WORK. ENDFUNCTION
.

Sebastian Reidemeister, B. Sc. 25


Grundlagen RFC Programmierung Fazit

queued RFC-qRFC
 Serialisierung des tRFC über Queues
 Eigenschaften:
◦ Ausführung der Aufrufe in Eingangsreihenfolge
des Queue
◦ Verteilung von Ausführungseinheiten in
verschiedene Queues
◦ Aufzeichnung der Queues wie bei tRFC

Sebastian Reidemeister, B. Sc. 26


Grundlagen RFC Programmierung Fazit

queued RFC-qRFC
Queue

Eingang Ausgang

Funktionsbaustein 1 Funktionsbaustein 1

Funktionsbaustein 2 Funktionsbaustein 2

Funktionsbautein 3 Funktionsbautein 3

Sebastian Reidemeister, B. Sc. 27


Grundlagen RFC Programmierung Fazit

qRFC - Einsatzszenarien
Outbound Inbound

• Aufzeichnung der Aufrufe als • Aufzeichnung der Aufrufe als

Ausgangsqueue auf DB des Eingangsqueue auf DB des

Senders Empfängers

• Verwendung: • Empfänger meist kein

• Entkopplung zwischen entferntes System

Sender und Empfänger • Verwendung:

• Anwendungs-

parallelisierung
Sebastian Reidemeister, B. Sc. 28
Grundlagen RFC Programmierung Fazit

qRFC - Einsatzszenarien
Out-in No-Send

• Kombination von Outbound- • Spezialfall

und Inbound-Szenario • Kein Scheduler

 Doppelte Bereitstellung  Pull-Prinzip

der Daten • Verwendung:

• Anbindung mobiler

Endgeräte

Sebastian Reidemeister, B. Sc. 29


Grundlagen RFC Programmierung Fazit

Background RFC-bgRFC
 Aufzeichnung von Daten, für spätere Übertragung
 Daten können genau einmal in:
◦ Beliebiger Reihenfolge,
◦ Reihenfolge der Erzeugung übergeben werden
 Optimierungsmöglichkeiten durch Asynchronität
 Optimierungs-Szenarien auch als Out-In
kombinierbar

Sebastian Reidemeister, B. Sc. 30


Grundlagen RFC Programmierung Fazit

Background RFC-bgRFC
 Organisation verschiedener Aufrufe durch
Queues
◦ Aufruf in mehreren Queues  Abhängigkeiten
◦ Abhängige Queues können bearbeitet werden bis
Eintrag mit Abhängigkeit
 Verarbeitbar wenn Abhängigkeit in allen
Queues an 1. Stelle

Sebastian Reidemeister, B. Sc. 31


Grundlagen RFC Programmierung Fazit

Background RFC-bgRFC
 API:
◦ Definition der Eigenschaften für Übertragung
◦ Datenaufzeichnung
◦ Mehrere Funktionsbausteine als Unit bündelbar
 Unit: Einheit der Übertragung

Sebastian Reidemeister, B. Sc. 32


Grundlagen RFC Programmierung Fazit

Background RFC-bgRFC
 Performance-Effekte:
◦ Bessere Skalierbarkeit
◦ Leistung Hardwareabhängig
◦ Optimierte Vorgehensweise durch API
 Redundante Funktionen entfernt
 Reduzierung des Support-/ Entwicklungsaufwands

Sebastian Reidemeister, B. Sc. 33


Grundlagen RFC Programmierung Fazit

Ablauf
 Destination festlegen
 Remotefähigen Funktionsbaustein suchen/
erstellen
 Programm je nach RFC-Typ gestalten

Sebastian Reidemeister, B. Sc. 34


Grundlagen RFC Programmierung Fazit

Destination festlegen
 Verwaltung aller RFC-Verbindungen
 Notwendig um überhaupt externe Systeme
ansprechen zu können
 Erfolgt im SAP unter:
Werkzeuge  Administration  Verwaltung 
Netzwerk  SM59 RFC-Destinationen

Sebastian Reidemeister, B. Sc. 35


Grundlagen RFC Programmierung Fazit

Destination festlegen

Sebastian Reidemeister, B. Sc. 36


Grundlagen RFC Programmierung Fazit

Destination festlegen

Sebastian Reidemeister, B. Sc. 37


Grundlagen RFC Programmierung Fazit

Funktionsbaustein suchen
 Schon eine Vielzahl an remotefähigen
Funktionsbausteinen vorhanden
 Zu suchen unter:
Werkzeuge  ABAP Workbench  Entwicklung
 SE37 – Function Builder

Sebastian Reidemeister, B. Sc. 38


Grundlagen RFC Programmierung Fazit

Funktionsbaustein suchen

Sebastian Reidemeister, B. Sc. 39


Grundlagen RFC Programmierung Fazit

Funktionsbaustein suchen

Sebastian Reidemeister, B. Sc. 40


Grundlagen RFC Programmierung Fazit

Funktionsbaustein programmieren
 Funktionsgruppe definieren
Werkzeuge  ABAP-Workbench  Übersicht
 SE 80 Object Navigator
 Globale Daten erstellen
 Funktionsbaustein erstellen

Sebastian Reidemeister, B. Sc. 41


Grundlagen RFC Programmierung Fazit

Funktionsbaustein programmieren

Sebastian Reidemeister, B. Sc. 42


Grundlagen RFC Programmierung Fazit

Funktionsbaustein programmieren

Sebastian Reidemeister, B. Sc. 43


Grundlagen RFC Programmierung Fazit

Programm für sRFC

Quelle: Tutotrial von


http://help.sap.com/saphelp_srm40/helpdata/ja/26/64f61dfa8911d386e70000e82011b8/content.htm

Sebastian Reidemeister, B. Sc. 44


Grundlagen RFC Programmierung Fazit

Ergebnis

Sebastian Reidemeister, B. Sc. 45


Grundlagen RFC Programmierung Fazit

Ergebnis

Sebastian Reidemeister, B. Sc. 46


Grundlagen RFC Programmierung Fazit

Fazit
 Standardfunktion bei SAP für die
Kommunikation
 Bietet Lösungen für fast alle Möglichkeiten
 Sehr Komplex
 Verwendung von Java immer mehr unterstützt
 Weitere Entwicklungen basieren auf dem RFC-
Konzept

Sebastian Reidemeister, B. Sc. 47


Quellen
 http://
help.sap.com/printdocu/core/Print46c/de/data/pdf/
BCFESDE2/BCFESDE2.pdf

 http://
help.sap.com/saphelp_47x200/helpdata/en/26/64f6
1dfa8911d386e70000e82011b8/content.htm

 Schulungsunterlagen:
BC415-Kommunikationsschnittstellen in ABAP
 Keller, H.; Krüger, S.: „ABAP Objects – ABAP-
Programmierung mit SAP NetWeaver“, 3. Auflage,
2006, Galileo Press, Bonn Sebastian Reidemeister, B. Sc. 48
Vielen Dank für Ihre
Aufmerksamkeit

Das könnte Ihnen auch gefallen