Asynchrone FuBas: IN BACKGROUND vs. STARTING NEW TASK
Wenn Programme eine zu lange Laufzeit für die Dialogverarbeitung benötigen, bietet es sich an, die Ausführung asynchron im Hintergrund zu starten und den Anwender nach Abschluss zu benachrichtigen.
Dafür bietet die SAP mehrere Möglichkeiten. Eine davon ist der RFC-Aufruf von Funktionsbausteinen mit entsprechendem Zusatz. Dieser Artikel beschreibt grundlegend die Funktionsweise von den Zusätzen IN BACKGROUND TASK und STARTING NEW TASK und erläutert deren Gemeinsamkeiten und Unterschiede.
Die Hintergrundverarbeitung – Welche Möglichkeiten gibt es?
Batch-Jobs
Ein Job führt einen Report zu einem bestimmten, definierbaren Zeitpunkt aus. Der Report wird dann in einem eigenen Batch-Workprozess ausgeführt und behindert die anderen Nutzer, die im Dialog arbeiten, nicht.
Allerdings ist eine Report-Ausführung nicht immer zielführend: Es können beispielsweise nur Parameter des Selektionsbildschirms vorbelegt werden, ein Übergeben von z.B. einer internen Tabelle ist nicht möglich. Auch fehlt die Möglichkeit, die Ausführung auf entfernten Systemen via RFC zu starten.
Asynchrone FuBas
Ist ein Funktionsbaustein als “RFC-fähig” gekennzeichnet, kann er mit den Zusätzen IN BACKGROUND TASK bzw. STARTING NEW TASK gestartet werden. Die Syntax ist der SAP-Help bzw. F1-Hilfe zu entnehmen. Ist das Ziel nur die asynchrone Verbuchung, wird keine RFC-Destination angegeben und der FuBa wird auf demselben System ausgeführt.
Sie erhalten die Komplettlösung – Ihr Projekt machen wir zu unserem Projekt. Mit professionellem Projektmanagement sicheren wir den Projekterfolg.
Gerne spreche ich mit Ihnen über Ihre Ausgangslage und zeige Lösungsmöglichkeiten auf. Auf Wunsch unterbreite ich Ihnen im Anschluss ein unverbindliches Angebot.
Kontaktieren Sie mich: Telefon 0211.9462 8572-16 oder per E-Mail info@erlebe-software.de
Ingo Biermann, Fachbereichsleiter
IN BACKGROUND TASK
Hierbei handelt es sich um eine transaktionale Verbuchung: Der Aufruf des Funktionsbausteins und seine Daten werden (in den Datenbanktabellen ARFCSSTATE und ARFCSDATA) zwischengespeichert und erst abgearbeitet, wenn im Rahmenprogramm ein COMMIT WORK ausgeführt wird.
Zwischen zwei Commits liegt eine “Logical Unit of Work” (LUW). Achtung: Das Ausführen von Commits (oder Rollbacks) INNERHALB eines solchen asynchronen FuBas ist nicht erlaubt! Auch implizite Datenbank-Commits müssen vermieden werden.
Ist die RFC-Destination nicht erreichbar, bleiben die Daten in den Tabellen gepuffert und die Ausführung wird ein regelmäßigen Abständen wiederholt. Standardmäßig passiert dies alle 15 Minuten bis zu einer Anzahl von 30 Versuchen.
STARTING NEW TASK
Bei dieser Version des Aufrufs ist kein COMMIT WORK nötig, die Ausführung geschieht sofort. Ein Puffern wie bei IN BACKGROUND TASK entfällt. Beim Aufruf wird ein zweiter Modus gestartet, in den man bei Bedarf sogar hineinspringen kann.
Für diesen Aufruf muss die Destination erreichbar sein, sonst wird eine Exception ausgelöst.
Es gibt noch weitere Varianten, wie RFC-Funktionsbausteine aufgerufen werden können. Für eine asynchrone Programmausführung sind diese ausreichend. Der Preisimporter von erlebe-software ist ein Tool, welches eine Massenpflege von Konditionen in SAP MM und SD via Excel-Upload ermöglicht. Die Verbuchung der Konditionssätze erfolgt dabei mithilfe eines solchen asynchronen RFC-Funktionsbausteins.
4 Kommentare zu "Asynchrone FuBas: IN BACKGROUND vs. STARTING NEW TASK"
Hallo Herr Pfeil,
für die Hintergrundverarbeitung in Batch-Jobs haben wir eine Tabelle mittels Export … To Database ausgeführt und im Batchjob dann mittels Import … wieder geholt.
Probleme haben wir dabei eigentlich nie gehabt.
Ist vielleicht eine Anregung für andere Anwender.
Gruß und Danke für die Blogs auf erlebe-software.de
Hallo Herr Reichelt,
vielen Dank für Ihren Kommentar.
Das ist eine sehr gute Anmerkung, danke dafür! In der Tat ist dies ein hilfreicher Tipp für Anwender, die einen solchen Anwendungsfall haben.
Eine ähnliche Alternative ist, die Daten in eine eigens dafür angelegte transparente Tabelle zu schreiben.
Vorteil: Ich kann die Daten einsehen.
Nachteil: Bei mehreren (womöglich sogar parallelen) Zugriffen muss eine “Versionierung” der Daten erfolgen, damit zugeordnet werden kann, welche Einträge zu welcher Programmausführung gehören.
Viele Grüße
Lukas Pfeil
Eine Frage zu dem trfc:
Wir haben über 14.000 Einträge in der Tabelle arfcsstate seit 2010??!! Ich habe diese Arbeitsgebiet geerbt und habe heute wieder 2 Fehler aus dem fuba ARCHIV_CREATE_TABLE..
Wie soll man damit umgehen? Muß man die beiden Sätze nun nacharchivieren?
Vielen dank schon einmal
Andreas Mann
Hallo Herr Mann,
hier ohne nähere Analyse eine Handlungsempfehlung auszusprechen halte ich für nicht sinnvoll.
Ich empfehle Ihnen die SAP Note 375566, die diesen Zustand beschreibt, Gründe und Vorgehensweisen aufzeigt.
Sollten Sie Unterstützung bei dem Thema benötigen, kann ich gerne einen Kontakt zu unseren SAP-Basis-Experten vermitteln.
Viel Erfolg!
Lukas Pfeil