RFC in SAP Vortrag

Preview:

Citation preview

Remote Function Call in SAPPräsentation für das

Seminar „Verteilte Systeme“von Sebastian Reidemeister

2

Grundlagen◦ Aufbau SAP-System◦ ABAP + Funktionsbausteine◦ Kommunikationsarten

RFC◦ Definition◦ Kommunikationsszenarien◦ Arten & deren Funktionsweise

Programmierung Fazit

Sebastian Reidemeister, B. Sc.

Gliederung

Sebastian Reidemeister, B. Sc. 3

SA

P N

etW

eaver

Ap

plicati

on

Serv

er

AS ABAP

Java EE Applikationsserver

Kommunikationsschnittstellen

Aufbau SAP-System

Programmierung FazitRFCGrundlagen

Sebastian Reidemeister, B. Sc. 4

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

ABAP

Programmierung FazitRFCGrundlagen

Sebastian Reidemeister, B. Sc. 5

OpenSQL: integrierter DB-Zugriff

Integriertes Konzept des Online Transaction

Processing (OLTP)

Schnittstelle zu XML

Schnittstelle zu entfernten Systemen (RFC)

Vorteil: Abwärtskompatibilität

ABAP-Eigenschaften

Programmierung FazitRFCGrundlagen

Sebastian Reidemeister, B. Sc. 6

Funktionsbausteine

Funktionsgruppe

Funktionsbaustein 1

Funktion 1

Funktion n

Funktionsbaustein n

Funktion 1

Funktion n

Programmierung FazitRFCGrundlagen

Sebastian Reidemeister, B. Sc. 7

FunktionsbausteineElemente 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

Programmierung FazitRFCGrundlagen

Sebastian Reidemeister, B. Sc. 8

Kommunikationsarten Synchrone Kommunikation

Sender

• Programm setzt Aufruf ab

• Wartet auf Antwort

Empfänger

• Funktionsaufruf wird sofort bearbeitet

Funktionsaufruf

Rückantwort

Programmierung FazitRFCGrundlagen

Sebastian Reidemeister, B. Sc. 9

Kommunikationsarten Asynchrone Kommunikation

Sender

• Aufruf wird wiederholt

• Keine Rückantwort erwartet

Empfänger

• Abarbeitung des Funktionsaufrufs, wenn verfügbar

FunktionsaufrufAusgangsqueue

Rückantwort

Programmierung FazitRFCGrundlagen

Sebastian Reidemeister, B. Sc. 10

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“

RFC-Definition

Programmierung FazitRFCGrundlagen

Sebastian Reidemeister, B. Sc. 11

Dienste:

◦ Aufruf und Steuerung der

Kommunikationsroutinen

◦ An- und Abmeldung an das entfernte System

◦ Berechtigungsprüfungen für die verwendete

Funktionsgruppe

◦ Konvertierung von Aktualparametern

◦ Fehlerbehandlung

RFC-Definition

Programmierung FazitRFCGrundlagen

Sebastian Reidemeister, B. Sc. 12

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

RFC-Schnittstelle

Programmierung FazitRFCGrundlagen

Sebastian Reidemeister, B. Sc. 13

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

RFC-Schnittstelle

Programmierung FazitRFCGrundlagen

14Sebastian Reidemeister, B. Sc.

RFC-Kommunikation aus R/3R/3-Applikationsserver Remote-System

• Externes Nicht-SAP-System• R/2-System• Applikationsserver eines

andren R/3-Systems• Applikationsserver des

selben R/3-Systems

Lokaler AufrufPROGRAM …

CALL FUNCTION…

FB

Remote AufrufPROGRAM …

CALL FUNCTION…DESTINATION

Remote Aufruf

FBRemote

Programmierung FazitRFCGrundlagen

15Sebastian Reidemeister, B. Sc.

Szenario 1: ABAP - ABAP

AS ABAP

RFC-Schnittstelle

ABAPProgramm

AS ABAP

ABAPProgramm

RFC-Schnittstelle

Programmierung FazitRFCGrundlagen

16Sebastian Reidemeister, B. Sc.

Szenario 2: AS ABAP - Fremdsystem

AS ABAP

RFC-Schnittstelle

ABAP-Programm

Fremdsystem

Nicht-ABAP-

Programm

RFC-API

Programmierung FazitRFCGrundlagen

17Sebastian Reidemeister, B. Sc.

Szenario 3: ABAP – SAP Java

AS ABAP

RFC-Schnittstelle

ABAP-Programm

AS Java

Java-Programm

SAP JCo

Programmierung FazitRFCGrundlagen

18Sebastian Reidemeister, B. Sc.

Szenario 4: ABAP – Java extern

AS ABAP

RFC-Schnittstelle

ABAP-Programm

Java System (nicht SAP)

Java-Programm

SAP JCo

Programmierung FazitRFCGrundlagen

19Sebastian Reidemeister, B. Sc.

Szenario 5: ABAP – SAP JRA

AS ABAP

RFC-Schnittstelle

ABAP-Programm

AS Java

Java-Client

SAP JCo SAP JRA

Programmierung FazitRFCGrundlagen

Sebastian Reidemeister, B. Sc. 20

Synchroner RFC (sRFC)

Asynchroner RFC (aRFC)

Transaktioneller RFC (tRFC)

Queued RFC (qRFC)

Background RFC (bgRFC)

RFC-Arten & deren Funktionsweise

Programmierung FazitRFCGrundlagen

Sebastian Reidemeister, B. Sc. 21

Ausführung externer Funktion aus AS ABAP

auf Grundlage der synchronen

Kommunikation

Wird höchstens einmal ausgeführt und nicht

wiederholt

Synchroner RFC-sRFC

Programmierung FazitRFCGrundlagen

Sebastian Reidemeister, B. Sc. 22

Synchroner RFC-sRFC

Programmierung FazitRFCGrundlagen

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

Remote Function

FUNCTION XYZ...ENDFUNCTION

Sebastian Reidemeister, B. Sc. 23

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

Asynchroner RFC-aRFC

Programmierung FazitRFCGrundlagen

Sebastian Reidemeister, B. Sc. 24

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

transaktioneller RFC-tRFC

Programmierung FazitRFCGrundlagen

Sebastian Reidemeister, B. Sc. 25

transaktioneller RFC-tRFC

Programmierung FazitRFCGrundlagen

PROGRAM …..CALL FUNCTION ‘X1‘IN BACKGROUNDTASKDESTINATION ‘A‘…CALL FUNCTION ‘X2‘IN BACKGROUNDTASKDESTINATION ‘A‘…COMMIT WORK..

Logische Einheit

FUNCTION X1..ENDFUNCTION

FUNCTION X2..ENDFUNCTION

Sebastian Reidemeister, B. Sc. 26

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

queued RFC-qRFC

Programmierung FazitRFCGrundlagen

Sebastian Reidemeister, B. Sc. 27

Queue

queued RFC-qRFC

Programmierung FazitRFCGrundlagen

Eingang

Funktionsbaustein 1

Funktionsbaustein 2

Funktionsbautein 3

Ausgang

Funktionsbaustein 1

Funktionsbaustein 2

Funktionsbautein 3

Sebastian Reidemeister, B. Sc. 28

Outbound Inbound

• Aufzeichnung der Aufrufe

als Ausgangsqueue auf DB

des Senders

• Verwendung:

• Entkopplung zwischen

Sender und Empfänger

• Aufzeichnung der Aufrufe

als Eingangsqueue auf DB

des Empfängers

• Empfänger meist kein

entferntes System

• Verwendung:

• Anwendungs-

parallelisierung

• Lastverteilung

qRFC - Einsatzszenarien

Programmierung FazitRFCGrundlagen

Sebastian Reidemeister, B. Sc. 29

Out-in No-Send

• Kombination von Outbound-

und Inbound-Szenario

Doppelte Bereitstellung

der Daten

• Spezialfall

• Kein Scheduler

Pull-Prinzip

• Verwendung:

• Anbindung mobiler

Endgeräte

qRFC - Einsatzszenarien

Programmierung FazitRFCGrundlagen

Sebastian Reidemeister, B. Sc. 30

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

Background RFC-bgRFC

Programmierung FazitRFCGrundlagen

Sebastian Reidemeister, B. Sc. 31

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

Background RFC-bgRFC

Programmierung FazitRFCGrundlagen

Sebastian Reidemeister, B. Sc. 32

API:

◦ Definition der Eigenschaften für Übertragung

◦ Datenaufzeichnung

◦ Mehrere Funktionsbausteine als Unit bündelbar

Unit: Einheit der Übertragung

Background RFC-bgRFC

Programmierung FazitRFCGrundlagen

Sebastian Reidemeister, B. Sc. 33

Performance-Effekte:

◦ Bessere Skalierbarkeit

◦ Leistung Hardwareabhängig

◦ Optimierte Vorgehensweise durch API

Redundante Funktionen entfernt

Reduzierung des Support-/ Entwicklungsaufwands

Background RFC-bgRFC

Programmierung FazitRFCGrundlagen

Sebastian Reidemeister, B. Sc. 34

Destination festlegen

Remotefähigen Funktionsbaustein suchen/

erstellen

Programm je nach RFC-Typ gestalten

Ablauf

Programmierung FazitRFCGrundlagen

Sebastian Reidemeister, B. Sc. 35

Verwaltung aller RFC-Verbindungen

Notwendig um überhaupt externe Systeme

ansprechen zu können

Erfolgt im SAP unter:

Werkzeuge Administration Verwaltung

Netzwerk SM59 RFC-Destinationen

Destination festlegen

Programmierung FazitRFCGrundlagen

Sebastian Reidemeister, B. Sc. 36

Destination festlegen

Programmierung FazitRFCGrundlagen

Sebastian Reidemeister, B. Sc. 37

Destination festlegen

Programmierung FazitRFCGrundlagen

Sebastian Reidemeister, B. Sc. 38

Schon eine Vielzahl an remotefähigen

Funktionsbausteinen vorhanden

Zu suchen unter:

Werkzeuge ABAP Workbench Entwicklung

SE37 – Function Builder

Funktionsbaustein suchen

Programmierung FazitRFCGrundlagen

Sebastian Reidemeister, B. Sc. 39

Funktionsbaustein suchen

Programmierung FazitRFCGrundlagen

Sebastian Reidemeister, B. Sc. 40

Funktionsbaustein suchen

Programmierung FazitRFCGrundlagen

Sebastian Reidemeister, B. Sc. 41

Funktionsgruppe definieren

Werkzeuge ABAP-Workbench Übersicht

SE 80 Object Navigator

Globale Daten erstellen

Funktionsbaustein erstellen

Funktionsbaustein programmieren

Programmierung FazitRFCGrundlagen

Sebastian Reidemeister, B. Sc. 42

Funktionsbaustein programmieren

Programmierung FazitRFCGrundlagen

Sebastian Reidemeister, B. Sc. 43

Funktionsbaustein programmieren

Programmierung FazitRFCGrundlagen

Sebastian Reidemeister, B. Sc. 44

Programm für sRFC

Programmierung FazitRFCGrundlagen

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

Sebastian Reidemeister, B. Sc. 45

Ergebnis

Programmierung FazitRFCGrundlagen

Sebastian Reidemeister, B. Sc. 46

Ergebnis

Programmierung FazitRFCGrundlagen

Sebastian Reidemeister, B. Sc. 47

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

Fazit

Programmierung FazitRFCGrundlagen

Sebastian Reidemeister, B. Sc. 48

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

http://help.sap.com/saphelp_47x200/helpdata/en/26/64f61dfa8911d386e70000e82011b8/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

Quellen

Vielen Dank für Ihre Aufmerksamkeit

Recommended