Varianten & Job-Planung
Selektionsvarianten, dynamische Datumsfelder und Job-Planung in SM36.
Übersicht
Damit der Extractor-Report automatisiert laufen kann, werden zwei Dinge benötigt:
Selektionsvariante – speichert die Selektionsparameter (welche Datentypen, welcher Zeitraum, welche Buchungskreise)
Hintergrundjob (SM36) – startet den Report periodisch mit der hinterlegten Variante
1. Selektionsvariante anlegen
Schritt-für-Schritt
SE38 → Report
ZFI_BILENDO_EXPORT_V2aufrufen → F8 (Ausführen)Selektionsmaske befüllen:
P_KNA1 = X (Kundenstamm)
P_BSID = X (Offene Posten)
P_BSAD = X (Ausgeglichene Posten)
P_DELTA = X (Deltaladung)
S_BUKRS = gewünschte Buchungskreise
Datumsfelder: → dynamisch (siehe nächster Abschnitt)
Menü:
Springen → Varianten → Als Variante sichernVariantenname: z. B.
BILENDO_DAILY_DELTABeschreibung: z. B.
Bilendo Täglicher Delta-ExportSichern
Empfohlene Selektionswerte
| Parameter | Wert | Anmerkung |
|---|---|---|
| P_KNA1 | X | Kundenstamm extrahieren |
| P_BSEG | – | Normalerweise nicht benötigt |
| P_BSID | X | Offene Posten |
| P_BSAD | X | Ausgeglichene Posten |
| P_ALL | – | Nur für einmaligen Vollladen |
| P_DELTA | X | Standard: Delta |
| S_BUKRS | Alle relevanten BUKRS | Einschränkung auf aktive Buchungskreise |
2. Dynamische Datumsfelder konfigurieren
Fixe Datumswerte in der Variante führen zu veralteten Selektionen. Stattdessen müssen Selektionsvariablen verwendet werden, die bei jedem Lauf das aktuelle Datum berechnen.
Welche Felder dynamisch setzen?
| Feld | Select-Option | Empfohlene Variable | Bedeutung |
|---|---|---|---|
| Erfassungsdatum | S_CPUDT | D: Tagesdatum, Offset -7 bis 0 | Letzte 7 Tage |
| Ausgleichsdatum | S_AUGDT | D: Tagesdatum, Offset -7 bis 0 | Letzte 7 Tage |
| Erfassungsuhrzeit | S_CPUTM | (fix, z. B. 00:00:00 bis 23:59:59) | Optional: Einschränkung |
Anleitung: Dynamisches Datum in Variante hinterlegen
Variante im Änderungsmodus öffnen
Button "Attribute" klicken (oder Menü:
Springen → Varianten → Attribute)In der Spalte "Selektionsvariable" den Cursor auf das Feld
S_CPUDT(Low-Wert) setzenF4-Wertehilfe aufrufen
Variable auswählen:
D = Aktuelles Datum (für den "Bis"-Wert)
D mit Offset -7 = Aktuelles Datum minus 7 Tage (für den "Von"-Wert)
Gleiches Vorgehen für
S_AUGDTFelder werden danach als nicht editierbar (grau hinterlegt) dargestellt – das ist korrekt
Variante sichern
Typische Konfiguration
S_CPUDT (Erfassungsdatum):
Von: D (aktuelles Datum) - 7 Tage
Bis: D (aktuelles Datum)
S_AUGDT (Ausgleichsdatum):
Von: D (aktuelles Datum) - 7 Tage
Bis: D (aktuelles Datum)Empfehlung: Mindestens 7 Tage Überlappung verwenden. In SAP können Buchungen rückwirkend erfasst werden – zu enge Zeitfenster führen zu Datenlücken in Bilendo.
3. Selektionslogik im Detail
Offene Posten (BSID)
Die Klasse ZCL_FI_BILENDO_ASSIST_V2 (Methode get_bsid) selektiert wie folgt:
Wenn CPU-Datum (S_CPUDT) gefüllt und nur 1 Tag abdeckt (wegen Uhrzeit):
Selektion aller Belege mit
CPUDT IN S_CPUDTUND (falls angegeben:CPUTM IN S_CPUTM)ODER
Änderungsdatum (AEDAT) IN S_CPUDT(Änderungen ohne Uhrzeit)
Wenn Buchungsdatum (S_BUDAT) gefüllt:
Selektion aller Belege mit
BUDAT IN S_BUDATODER
Änderungsdatum (AEDAT) IN S_BUDAT
Ausgeglichene Posten (BSAD)
Wenn CPU-Datum (S_CPUDT) gefüllt:
Selektion via
CPUDT IN S_CPUDT(+ optional CPUTM)ODER
Änderungsdatum (AEDAT) IN S_CPUDT
Wenn Ausgleichsdatum (S_AUGDT) gefüllt:
Selektion via
AUGDT IN S_AUGDTODER
Änderungsdatum (AEDAT) IN S_AUGDT
Wenn Ausgleichsbeleg (S_AUGBL) gefüllt:
Selektion über mehrere Ausgleichsbelege möglich (für Nachselektion)
Kundenstamm (KNA1)
Generell über CPU-Datum (S_CUSDT) selektiert
Berücksichtigt Uhrzeit bei der Selektion → Variante mit genau 1 Tag pflegen
Änderungshistorie wird nicht explizit geprüft (KNA1 hat kein AEDAT auf Feldebene)
4. Job einplanen (SM36)
Schritt-für-Schritt
Transaktion SM36 aufrufen
Jobname vergeben:
BILENDO_EXPORT_DAILYJobklasse: A (höchste Priorität) oder B (normal)
Step definieren
Button "Schritte" → "ABAP/4-Programm"
Eintragen:
Programmname:
ZFI_BILENDO_EXPORT_V2Variante:
BILENDO_DAILY_DELTA
"Übernehmen" → Step wird angelegt
Mehrere Steps für verschiedene Buchungskreise oder verschiedene Reports (z. B. erst Export, dann Import) können in einem Job hintereinander geschaltet werden.
Startbedingung
Button "Startbedingung" → "Datum/Uhrzeit"
Startdatum: Heutiges Datum (oder nächster gewünschter Tag)
Startuhrzeit: z. B.
03:00:00(vor dem Bilendo-Import-Fenster)Häkchen "Periodisch" setzen
Periode: "Täglich" → "Sichern"
Job freigeben
Zurück im Hauptbild: Button "Sichern"
Job erscheint mit Status "Freigegeben" in SM37
Jobüberwachung (SM37)
| Status | Bedeutung | Aktion |
|---|---|---|
| Geplant | Job wartet auf Startbedingung | – |
| Aktiv | Job läuft gerade | – |
| Beendet | Erfolgreich abgeschlossen | Log prüfen |
| Abgebrochen | Fehler aufgetreten | Joblog analysieren (SM37 → Joblog) |
5. Job-Konfigurationsvarianten
Variante A: Ein Job für alle Buchungskreise
Job: BILENDO_EXPORT_DAILY
Step 1: ZFI_BILENDO_EXPORT_V2 / Variante: BILENDO_DAILY_DELTA
(S_BUKRS enthält alle Buchungskreise)
Startbedingung: Täglich 03:00Variante B: Separate Jobs je Buchungskreis
Job: BILENDO_EXPORT_BK1001
Step 1: ZFI_BILENDO_EXPORT_V2 / Variante: BILENDO_DELTA_1001
Startbedingung: Täglich 03:00
Job: BILENDO_EXPORT_BK2001
Step 1: ZFI_BILENDO_EXPORT_V2 / Variante: BILENDO_DELTA_2001
Startbedingung: Täglich 03:15Variante C: Export + Import in einem Job
Job: BILENDO_SYNC_DAILY
Step 1: ZFI_BILENDO_EXPORT_V2 / Variante: BILENDO_DAILY_DELTA
Step 2: ZFI_BILENDO_IMPORT_V2 / Variante: BILENDO_IMPORT_DAILY
Startbedingung: Täglich 03:00Hinweis: Variante C ist nur sinnvoll wenn die Bilendo-seitigen Rückschreibedateien zum Zeitpunkt des Joblaufs bereits auf dem Applikationsserver liegen. Andernfalls sollte der Import-Job zeitversetzt laufen.
6. Variante für Zwei-Stufen-Delta (6-stündlich)
Bei Verwendung der verbesserten Zwei-Stufen-Delta-Logik (→ 04 - Extractor Report#Verbesserte Delta-Logik Zwei-Stufen-Selektion) wird der Job alle 6 Stunden eingeplant. Die Delta-Fenster werden programmatisch in den Methoden get_open_delta() und get_cleared_delta() berechnet – dynamische Datumsfelder in der Variante sind daher nicht mehr erforderlich.
Variante: BILENDO_DELTA_6H
| Parameter | Wert | Anmerkung |
|---|---|---|
| P_KNA1 | X | Kundenstamm (optional bei jedem Lauf) |
| P_BSID | X | Offene Posten via get_open_delta() |
| P_BSAD | X | Ausgeglichene Posten via get_cleared_delta() |
| P_DELTA | X | Aktiviert Zwei-Stufen-Methoden |
| S_BUKRS | Alle relevanten BUKRS | |
| S_CPUDT | leer | Wird intern berechnet (6h-Fenster) |
| S_AUGDT | leer | Wird intern berechnet (24h-Fenster) |
SM36-Einplanung (periodisch alle 6 Stunden)
SM36 → Jobname:
BILENDO_EXPORT_6HStep:
ZFI_BILENDO_EXPORT_V2/ VarianteBILENDO_DELTA_6HStartbedingung → Datum/Uhrzeit → Startzeit
00:00:00Häkchen "Periodisch" → Periode: "Stündlich" → Stundenwert: 6
Sichern
| Laufzeit | BSID-Fenster | BSAD-Fenster |
|---|---|---|
| 00:00 | BKPF: CPUDT/CPUTM ≥ Vortag 18:00 | BSAD: AUGDT ≥ Vortag |
| 06:00 | BKPF: CPUDT/CPUTM ≥ 00:00 | BSAD: AUGDT ≥ Vortag |
| 12:00 | BKPF: CPUDT/CPUTM ≥ 06:00 | BSAD: AUGDT ≥ Vortag |
| 18:00 | BKPF: CPUDT/CPUTM ≥ 12:00 | BSAD: AUGDT ≥ Vortag |
Die BSAD-Selektion verwendet immer ein 24h-Fenster (AUGDT ≥ gestern), unabhängig von der Lauffrequenz. Dadurch entsteht ein vierfacher Overlap, der Robustheit bei Fehlern garantiert.
7. Variante für Initial-/Vollladen
Für die initiale Erstbefüllung oder einen vollständigen Neuladen wird eine separate Variante benötigt:
| Parameter | Wert | Anmerkung |
|---|---|---|
| P_ALL | X | Vollladenmodus |
| P_DELTA | – | |
| S_CPUDT | leer | Kein Zeitfilter |
| S_AUGDT | leer | Kein Zeitfilter |
| S_BUKRS | Alle BUKRS |
Variantenname: z. B. BILENDO_INITIAL_FULL
⚠️ Achtung: Ein Vollladen kann je nach Datenmenge erhebliche Laufzeit und Systemlast erzeugen. Vor der Ausführung in PRD mit SAP-Basis abstimmen.