SAP liefert die Standardreports
- BTCTRNS1: Jobs in Status ‚ausgeplant wegen Upgrade‘ versetzen
- BTCTRNS2: Jobs in Status ‚ausgeplant wegen Upgrade‘ freigeben
Dies beiden Jobs sind nützlich, um z.B. vor Upgrades oder dem Einspielen von Supportpackages alle freigegebenen Jobs in einen Status „suspended“ zu versetzen und danach wieder freizugeben.
Der Report BTCTRNS1 suspendiert alls Jobs mit Ausnahme der Jobs RDDIMPDP_CLIENT_*, die als Tranport-Dispatcher die Durchführung der Transporte koordinieren.
Mit dem Report BTCTRNS2 können nach den Systemarbeiten die Jobs wieder freigegeben werden. Der Report ermöglicht es aber nicht gezielt einen oder mehrere Jobs wieder freizugeben, sondern es können immer nur alle suspendierten Jobs zusammen released werden. Dies ist aber oft unerwünscht oder führt sofort danach zu Performanceproblemen im System.
Abhilfe schafft der Report ZZZOF_JOB_UNSUSPEND, der über einen Selektionsscreen die gezielte Freigabe einzelner Jobs ermöglicht. Zusätzlich können im Testmodus zur Überprüfung erst einmal die Jobs aufgelistet werden, die freigegeben werden würden.
REPORT ZZZOF_JOB_UNSUSPEND MESSAGE-ID bt. ********************************************************* * Gibt Jobs im Status "suspendiert" wieder frei. * ---------------------------------------------- * * Beginn : 21.08.2007 OF * Stand : 21.08.2007 * * 21.08.2007: Das Ursprungsprogramm, das nur einen Job * wieder freigeben konnte wurde auf Mehr- * fachselektion erweitert und Testmodus * eingeführt. ********************************************************* tables: tbtco. Select-options jobnam for tbtco-jobname default 'Jobname'. Selection-Screen skip 1. Parameter test as checkbox default 'X'. DATA: SCHEDULED_JOBS_NO LIKE SY-DBCNT. DATA: BEGIN OF JOBLIST OCCURS 100. INCLUDE STRUCTURE TBTCO. DATA: END OF JOBLIST. DATA: btc_running LIKE tbtco-status VALUE 'R', btc_ready LIKE tbtco-status VALUE 'Y', btc_scheduled LIKE tbtco-status VALUE 'P', btc_released LIKE tbtco-status VALUE 'S', btc_aborted LIKE tbtco-status VALUE 'A', btc_finished LIKE tbtco-status VALUE 'F', btc_put_active LIKE tbtco-status VALUE 'Z', btc_unknown_state LIKE tbtco-status VALUE 'X'. DATA: answer type c. INCLUDE <ICON>. if test = ' ' and sy-batch <> 'X'. CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' EXPORTING DEFAULTOPTION = 'J' TEXTLINE1 = 'Wollen Sie die Jobs wirklich wieder freigeben ?' * TEXTLINE2 = ' ' TITEL = 'Jobs wieder freigeben' * START_COLUMN = 25 * START_ROW = 6 * CANCEL_DISPLAY = 'X' IMPORTING ANSWER = answer. if answer <> 'J'. write: / ICON_INFORMATION as ICON, 'Abbruch: Es wurden keine Jobs freigegeben.'. exit. endif. endif. SCHEDULED_JOBS_NO = 0. SELECT * FROM TBTCO INTO TABLE JOBLIST WHERE STATUS EQ btc_put_active and jobname in jobnam. CASE SY-SUBRC. WHEN 0. "Gefunden WHEN 4. "Keinen gefunden write: /'Job nicht gefunden oder nicht im Status Suspendiert'. EXIT. WHEN OTHERS. write: / 'Fehler -- Stopp'. EXIT. ENDCASE. if test <> ' '. write: / ICON_INFORMATION as ICON, 'Nur Testlauf, Jobs bleiben suspendiert !'. write: /. endif. sort joblist by jobname. LOOP AT JOBLIST. TBTCO = JOBLIST. TBTCO-STATUS = BTC_RELEASED. CALL FUNCTION 'ENQUEUE_ESTBTCO' EXPORTING JOBNAME = TBTCO-JOBNAME JOBCOUNT = TBTCO-JOBCOUNT _WAIT = 'X' _SCOPE = '1' EXCEPTIONS FOREIGN_LOCK = 1 SYSTEM_FAILURE = 2 OTHERS = 99. CASE SY-SUBRC. WHEN 0. " Sperre erfolgreich gesetzt write:/ joblist-jobname, joblist-status, '-->'. WHEN 1. " Sperre schon belegt MESSAGE A339 WITH TBTCO-JOBNAME RAISING JOB_ALREADY_LOCKED. WHEN OTHERS. " Enqueue-Problem aufgetreten MESSAGE A111 WITH 'TBTCO' RAISING JOB_LOCK_PROBLEM. ENDCASE. if test = ' '. " Es wird ernst UPDATE TBTCO. endif. IF SY-SUBRC = 0. SCHEDULED_JOBS_NO = SCHEDULED_JOBS_NO + 1. ELSE. CALL FUNCTION 'DEQUEUE_ESTBTCO' EXPORTING JOBNAME = TBTCO-JOBNAME JOBCOUNT = TBTCO-JOBCOUNT EXCEPTIONS OTHERS = 99. MESSAGE A342 WITH TBTCO-JOBNAME RAISING JOB_SCHEDULING_FAILED. ENDIF. CALL FUNCTION 'DEQUEUE_ESTBTCO' EXPORTING JOBNAME = TBTCO-JOBNAME JOBCOUNT = TBTCO-JOBCOUNT EXCEPTIONS OTHERS = 99. CASE SY-SUBRC. WHEN 0. " Sperre erfolgreich freigegeben if test = ' '. write: 'wieder freigegeben'. else. write: 'wäre wieder freigegeben'. endif. WHEN OTHERS. " Enqueue-Problem aufgetreten MESSAGE A343 WITH 'TBTCO' RAISING JOB_LOCK_PROBLEM. ENDCASE. ENDLOOP. WRITE: /. if test = ' '. IF SCHEDULED_JOBS_NO > 0. WRITE: / ICON_INFORMATION as ICON, TEXT-SJB. ELSE. WRITE: / ICON_INFORMATION as ICON, TEXT-NJB. EXIT. ENDIF. endif.
[of_autor]