RFC-Funktionsbausteine

Aus SAP-Wiki
Wechseln zu: Navigation, Suche

Funktionsbausteine können auch in einem SAP-Fremdsystem aufgerufen werden mit dem Zusatz DESTINATION, sofern der Funktionsbaustein RFC-fähig ist. Import- und Exportparameter können ganz normal wie bei jedem anderen Funktionsbaustein angesprochen werden.

Unterschied normaler Funktionsbaustein und RFC-Funktionsbaustein

Radiobutton "Remote fähiger (Funktions-)Baustein"

  • Setzen des Radiobuttons "Remote fähiger Baustein" statt "Normaler Funktionsbaustein".

RFC1.JPG

Definition Parameter

  • Als Importparameter werden hier nur ein Transaktionsname und eine Batch-Input-Tabelle definiert.
  • Die Parameter müssen bei RFC-Funktionsbausteinen mit der Checkbox "Werteübergabe" definiert werden, da keine Referenz möglich ist bei unterschiedlichen SAP-/IT-Systemen.

RFC2.JPG

Im Coding gibt es lediglich eine Zeile, die den Batch-Input im Zielsystem (X11) ausführt.

RFC3.JPG

Aufruf RFC-Funktionsbaustein mit DESTINATION

Mit dem Funktionsbausteinzusatz DESTINATION wird das Zielsystem angegeben, in dem sich der auszuführende Funktionsbaustein befindet.

Definition Zielsystem in RFC-Einstellungen

  • Das Zielsystem (im Beispiel "X11") wird von der Basis definiert. Hier ist die Basis zu kontaktieren. Es wird in der Transaktion SM59 konfiguriert.

Beispielcoding

  • Hier soll im Fremdsystem X11 ein Batch-Input ausgeführt. Dazu wird dem RFC-Funktionsbaustein ZBBATCH_INPUT ein Transaktionscode LV_TCODE und eine Batch-Input-Tabelle LT_BDCDATA mitgegeben in der Schnittstelle.
  • Der Funktionsbaustein 'ZBBATCH_INPUT' existiert nur im X11.
Data: lv_TCODE type TCODE.

 lv_tcode = 'SE01'.

 ... (Coding zum Füllen der Batch-Input-Tabelle)

 CALL FUNCTION 'ZBBATCH_INPUT'
   DESTINATION 'X11'
   EXPORTING
     IV_TCODE   = lv_TCODE
     it_bdcdata = lt_bdcdata.

RFC-Funktionsbaustein mit Zusatz "starting new Task"

Ein RFC-Funktionsbaustein kann auch im gleichen SAP-System genutzt werden, um eine Funktionalität unabhängig vom laufenden Task in einem neuen Workprozess auszuführen.

Dies kann sinnvoll sein, wenn man in einem Report oder eine Dialoganwendung ist und eine auszuführende Funktionalität eine lange Laufzeit hat und das Ausführen im Vordergrund den User an der Ausführung seines Tagesgeschäftes hindert, bzw. einen Laufzeitfehler durch ein Timeout provozieren könnte. Hier muss beim Aufruf des Funktionsbausteins der Zusatz "starting new Task '1'" mitgegeben werden. Das Coding innerhalb des Funktionsbausteins wird dann in einem neuen Workprozess ausgeführt und das Rahmenprogramm wird sofort wieder aktiv.

Es ist zu beachten, dass hier ein zusätzlicher Modus von dem ausführenden User benötigt wird, wenn im neuen Task ein Dynpro geöffnet wird. Der Benutzer dürfte dann also maximal 5 Modi zum Aufruf des Funktionsbausteins offen haben. Daher sollte bei dieser Variante das öffnen eines Dynpros, wie z. B durch eine Meldung vermieden werden.

Debuggt man das Rahmenprogramm und kommt zur Aufrufstelle des Funktionsbausteins und führt dann einen Einzelschritt (F5) aus, so springt die aktuelle Session des Debuggers über den Funktionsbausteinsbausteinaufruf - aber es öffnet sich ein zweiter Modus des Debuggers und man kann den RFC-Funktionsbaustein debuggen.

call function 'Z_FB_RFC_SCHN' starting new task '1'
  exporting
    ...

RFC-Funktionsbaustein mit Zusatz "in Background Task"

Ein RFC-Funktionsbaustein kann auch im gleichen SAP-System genutzt werden, um eine Funktionalität unabhängig vom laufenden Task in einem neuen Workprozess auszuführen - und dies dann im Hintergrund.

Hier muss beim Aufruf des Funktionsbausteins der Zusatz "in Background Task" mitgegeben werden. Das Coding innerhalb des Funktionsbausteins wird dann in einem neuen Workprozess ausgeführt und das Rahmenprogramm wird sofort wieder aktiv.

Funktionsbausteine in Background-Task können keine Exporting oder Changing-Parameter haben.

Hier kann der User auch 6 Modi offen haben.

call function 'Z_FB_RFC_SCHN' in background task
 exporting
   ...

RFC-Funktionsbaustein mit Zusatz "in Background unit"

SAP empfiehlt statt dem Zusatz "in background task" den Zusatz "in background unit".

Siehe hierzu die SAP-Hilfe.

Web-Links