Asynchrone Funktionsbausteine: IN BACKGROUND vs. STARTING NEW TASK

Asynchrone Funktionsbausteine

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 gibt es im SAP mehrere Möglichkeiten. Eine davon ist der RFC-Aufruf von Funktionsbausteinen (FuBa) mit entsprechendem Zusatz. Dieser Artikel beschreibt grundlegend die Funktionsweise der Zusätze IN BACKGROUND TASK und STARTING NEW TASK und erläutert deren Gemeinsamkeiten und Unterschiede.

Das Wichtigste im Überblick

  • Langlaufende SAP-Programme sollten asynchron im Hintergrund ausgeführt werden, um Dialoganwender nicht zu blockieren.
  • Batch-Jobs eignen sich für einfache Szenarien, sind aber bei komplexer Datenübergabe oder RFC-Aufrufen eingeschränkt.
  • Asynchrone RFC-Funktionsbausteine ermöglichen eine flexiblere Hintergrundverarbeitung mit IN BACKGROUND TASK oder STARTING NEW TASK.
  • Beide Varianten unterscheiden sich wesentlich in Startzeitpunkt, Transaktionsverhalten und Fehlerbehandlung und müssen gezielt eingesetzt werden.

Hintergrundverarbeitung mit Batch-Jobs

Batch-Jobs sind eine klassische Form der Hintergrundverarbeitung in SAP. Dabei führt die Software einen Report zu einem festgelegten Zeitpunkt im Hintergrund aus. Er läuft in einem eigenen Batch-Workprozess und beeinträchtigt somit keine Anwender, die parallel im System arbeiten.

Wir setzten das S/4HANA Einführungsprojekt für Sie erfolgreich um. Unverzichtbar sind dabei unsere Prinzipien für diese Projekte. Erfahren Sie mehr dazu.

Diese Variante ist jedoch nicht immer geeignet. So können Sie lediglich einfache Parameter des Selektionsbildschirms übergeben. Komplexere Daten, etwa interne Tabellen, lassen sich nicht mitgeben. Außerdem ist es nicht möglich, einen Batch-Job direkt über RFC auf einem entfernten System zu starten.

Asynchrone Funktionsbausteine

Eine flexiblere Möglichkeit bieten asynchrone Funktionsbausteine. Ist ein Funktionsbaustein als RFC-fähig gekennzeichnet, können Sie ihn mit den Zusätzen IN BACKGROUND TASK oder STARTING NEW TASK asynchron ausführen. Die genaue Syntax ist in der SAP-Hilfe dokumentiert.

Soll der Funktionsbaustein lediglich im Hintergrund verarbeitet werden, ohne ein anderes System einzubinden, kann auf die Angabe einer RFC-Destination verzichtet werden. Die Ausführung erfolgt dann im gleichen SAP-System.

In unserem Webinar zeigen wir Ihnen, welche Prinzipien erfüllt sein müssen, um einen Clean Core im SAP-Umfeld zu erreichen.

IN BACKGROUND TASK

Der Aufruf mit IN BACKGROUND TASK ist transaktional aufgebaut. Das bedeutet: Die Ausführung des Funktionsbausteins startet nicht sofort. Stattdessen speichert SAP den Aufruf und die zugehörigen Daten zunächst in speziellen Datenbanktabellen (ARFCSSTATE und ARFCSDATA). Erst wenn Sie im aufrufenden Programm ein COMMIT WORK ausführen, startet die eigentliche Verarbeitung.

Der Zeitraum zwischen zwei Commits wird als Logical Unit of Work (LUW) bezeichnet. Innerhalb eines asynchronen Funktionsbausteins dürfen weder explizite Commits oder Rollbacks noch indirekte Datenbank-Commits ausgeführt werden, da dies zu inkonsistenten Daten führen kann.

Ist die angegebene RFC-Destination vorübergehend nicht erreichbar, bleiben die Daten zwischengespeichert. SAP versucht dann automatisch, die Verarbeitung in regelmäßigen Abständen erneut zu starten. Standardmäßig geschieht dies alle 15 Minuten mit bis zu 30 Wiederholungen.

Asynchrone FuBas: IN BACKGROUND TASK

Asynchrone FuBas: IN BACKGROUND TASK

STARTING NEW TASK

Beim Aufruf mit STARTING NEW TASK startet die Verarbeitung sofort. Ein COMMIT WORK ist hierfür nicht erforderlich. Anders als bei IN BACKGROUND TASK findet keine Zwischenspeicherung der Daten statt.

Technisch öffnen Sie einen zusätzlichen Modus, in den Sie bei Bedarf sogar direkt wechseln können. Voraussetzung für diese Variante ist jedoch, dass die angegebene RFC-Destination erreichbar ist. Ist dies nicht der Fall, bricht der Aufruf mit einer Exception ab.

Asynchrone FuBas: STARTING NEW TASK

Asynchrone FuBas: STARTING NEW TASK

Top 3 Programmierfehler in ABAP für SAP HANA

Whitepaper: Top 3 Programmierfehler in ABAP für SAP HANA

Vermeiden Sie diese Top 3 Fehler bei der Programmierung in ABAP für HANA.

Fazit

Asynchrone Funktionsbausteine sind ein bewährtes Mittel, um langlaufende Prozesse aus dem Dialog zu entkoppeln und die Systemnutzung stabil zu halten. Neben den beschriebenen Varianten existieren weitere Möglichkeiten, RFC-fähige Funktionsbausteine aufzurufen. Für die meisten Anwendungsfälle, in denen Sie Programme asynchron im Hintergrund ausführen möchten, sind IN BACKGROUND TASK und STARTING NEW TASK jedoch ausreichend. Entscheidend ist, die jeweilige Funktionsweise zu verstehen und die passende Variante gezielt einzusetzen, um unerwünschte Seiteneffekte in der Verarbeitung zu vermeiden.

Websession: Asynchrone Funktionsbausteine

Lordieck

Haben Sie noch Fragen zu diesem Thema? Vereinbaren Sie eine unverbindliche Websession mit unseren Experten.

Dieser Artikel erschien bereits im April 2015. Der Artikel wurde am 11.02.2026 erneut geprüft und mit leichten Anpassungen aktualisiert.

FAQ

Was ist der Unterschied zwischen Batch-Jobs und asynchronen Funktionsbausteinen?

Batch-Jobs führen Reports zeitgesteuert im Hintergrund aus, während asynchrone Funktionsbausteine flexibler sind und direkt aus Programmen per RFC gestartet werden können.

Wann sollte IN BACKGROUND TASK verwendet werden?

Wenn eine transaktionale Verarbeitung mit COMMIT WORK erforderlich ist und eine automatische Wiederholung bei temporären Fehlern gewünscht wird.

Wann ist STARTING NEW TASK die bessere Wahl?

Wenn die Verarbeitung sofort starten soll und eine erreichbare RFC-Destination vorhanden ist.

Können bei asynchronen Funktionsbausteinen Commits ausgeführt werden?

Bei IN BACKGROUND TASK sind Commits und Rollbacks innerhalb des Funktionsbausteins nicht erlaubt, bei STARTING NEW TASK gelten diese Einschränkungen nicht.

Christoph Lordieck

Christoph Lordieck

Als Bereichsleiter SAP Entwicklung berate ich Unternehmen rund um das Thema SAP Individualentwicklung. Einige Jahre Projekt- und Umsetzungserfahrung haben meinen Wissenshunger noch nicht gestillt und ich suche ständig nach neuen Themen und Entwicklungen im ABAP-Umfeld.

Sie haben Fragen? Kontaktieren Sie mich!




4 Kommentare zu "Asynchrone Funktionsbausteine: IN BACKGROUND vs. STARTING NEW TASK"

Wolfgang Reichelt - 6. April 2015 | 12:06

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

Antworten

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

Antworten

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

Antworten

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

Antworten

Schreiben Sie einen Kommentar

Bitte füllen Sie alle mit * gekennzeichneten Felder aus. Ihre E-Mail Adresse wird nicht veröffentlicht.





Kontaktieren Sie uns!
Alexander Koessner-Maier
Alexander Kössner-Maier Kundenservice