Rsbpcoll
Rsbpcoll
* RSBPCOLL *
*----------------------------------------------------------------------*
* *
* SAP AG Walldorf *
* Systeme, Anwendungen und Produkte in der Datenverarbeitung *
* *
* (C) Copyright SAP AG 1993 *
*----------------------------------------------------------------------*
* *
* Projekt: R/3 RZ-Leitstand - Background Processing *
* - Collector fuer Laufzeitstatistik der Jobs *
* *
* *
************************************************************************
REPORT rsbpcoll .
TABLES: btcjstat.
* Arbeitsfelder
DATA: savname LIKE tbtco-jobname,
savdate LIKE tbtco-lastchdate,
savtime LIKE tbtco-lastchtime,
jobnum LIKE btcjstat-cntofjobs,
comparedat TYPE p,
startsec TYPE p,
endsec TYPE p,
duration TYPE p,
dursum TYPE p,
oldsum TYPE p.
*-------------------------------------------------------------------*
** note 2624832 check parameter for collecting all or only periodic jobs
IF onlypjob = space.
SELECT * FROM tbtco INTO TABLE jobtab WHERE status = 'F'
AND strtdate >= tbtco_select_date.
** note 2624832 check parameter for collecting all or only periodic jobs
IF onlypjob = space.
SELECT * FROM tbtco INTO TABLE jobtab WHERE status = 'F'.
ENDIF.
ENDIF.
SORT jobtab BY jobname lastchdate lastchtime.
*---------------------------------------------------------------------*
* FORM UPDATE_BTCJSTAT *
*---------------------------------------------------------------------*
* Ermittelte Laufzeit in die Statisktikdatei BTCJSTAT ausgeben.
* - Wenn schon ein Satz vorhanden ist, werden die Daten
* Aktualisiert, sonst wird ein neuer Satz ausgegeben.
*
*---------------------------------------------------------------------*
FORM update_btcjstat.
IF savname = space.
EXIT.
ENDIF.
IF jobnum = 0.
EXIT.
ENDIF.
SELECT SINGLE * FROM btcjstat WHERE jobname = savname
AND lastchdate = savdate
AND lastchtime = savtime.
IF sy-subrc = 0.
CATCH SYSTEM-EXCEPTIONS arithmetic_errors = 4
OTHERS = 99.
IF jobnum > 100.
btcjstat-cntofjobs = jobnum.
btcjstat-avgtimsec = dursum / jobnum.
ELSE.
oldsum = btcjstat-cntofjobs * btcjstat-avgtimsec.
dursum = dursum + oldsum.
btcjstat-cntofjobs = btcjstat-cntofjobs + jobnum.
btcjstat-avgtimsec = dursum / btcjstat-cntofjobs.
ENDIF.
ENDCATCH.
IF sy-subrc <> 0.
EXIT.
ENDIF.
IF btcjstat-avgtimsec < 0.
btcjstat-avgtimsec = 0.
ENDIF.
btcjstat-statdate = sy-datum.
btcjstat-stattime = sy-uzeit.
UPDATE btcjstat.
IF sy-subrc = 0.
COMMIT WORK.
ENDIF.
ELSE.
CLEAR btcjstat.
btcjstat-jobname = savname.
btcjstat-lastchdate = savdate.
btcjstat-lastchtime = savtime.
btcjstat-cntofjobs = jobnum.
CATCH SYSTEM-EXCEPTIONS arithmetic_errors = 4
OTHERS = 99.
btcjstat-avgtimsec = dursum / jobnum.
ENDCATCH.
IF sy-subrc <> 0.
EXIT.
ENDIF.
btcjstat-statdate = sy-datum.
btcjstat-stattime = sy-uzeit.
INSERT btcjstat.
IF sy-subrc = 0.
COMMIT WORK.
ENDIF.
ENDIF.
ENDFORM.