Hallo zusammen,
ich habe einen bestehenden Report geändert, der über einen Sklaven-Report viele Hintergrund-Jobs aufruft, die verschiedene Z-Tabellen mit einer Menge Daten befüllt (ca. 2 Mio. Datensätze insgesamt). Dieser Report (und sein Sklave, dr ja nur die Jobs startet) bzw. seine Jobs sind die einzigen, die diese Z-Tabellen verändern.
Jetzt kriege ich den Report von der Qualitätssicherung um die Ohren gehauen, weil vor den Änderungen in der Datenbank kein "Lock" durchgeführt wird.
Das Tabellensperren wollte ich nach einem Beispiel aus diesem Forum durchführen, etwa so:
Code: Alles auswählen.
data sptab type rstable.
sptab-TABNAME = 'ZTAB'. "Deine Tabelle
sptab-VARKEY = SY-MANDT.
CALL FUNCTION 'ENQUEUE_E_TABLE'
EXPORTING
TABNAME = sptab-TABNAME
VARKEY = sptab-VARKEY
EXCEPTIONS
FOREIGN_LOCK = 1
SYSTEM_FAILURE = 2
OTHERS = 3.
Es sind 6 Z-Tabellen gleichzeitig zu befüllen. Der Report erzeugt über seinen Sklavenreport die Hintergrundjobs, die alle gleichzeitig in diese Tabellen schreiben.
Mal doof gefragt: Muss ich im Report das o.g. ENQEUE_E_TABLE für jede einzelne Tabelle hintereinander aufrufen und kann dann die Jobs starten? Oder gibt es etwas Eleganteres?
Es gibt noch einen Überwachungsjob, der mit den Datenschaufeljobs gleichzeitig gestartet wird. Der wartet, bis der letzte Datenschaufeljob durchgelaufen ist und macht dann ein Update auf eine Protokolltabelle. Kann ich diesen Job dann benutzen, um die zuvor gesetzten Sperren der 6 Tabellen aufheben?
Vielen Dank für jeden Tipp!
Gruß
K.