很多時(shí)候一個(gè)程序設(shè)定的JOB的時(shí)間范圍很小,一兩分鐘跑一次程序,一個(gè)程序又拆分N個(gè)進(jìn)程。一天下來(lái)已完成的量將無(wú)法估量,占用的內(nèi)存也很大。這時(shí)候就可以在程序中加入刪除后臺(tái)JOB的代碼。
先根據(jù)程序名查詢JOB名稱(chēng)以及JOB編號(hào)等信息
SELECT *
FROM tbtcp
INTO CORRESPONDING FIELDS OF TABLE lt_joblist
WHERE (progname = 'XXX1' OR
progname = 'XXX2' ) AND
sdldate <= sy-datum AND
sdldate >= lv_date.
再循壞查詢出來(lái)的JOB,進(jìn)行狀態(tài)的獲取,滿足已完成的狀態(tài)的JOB就刪除掉。
LOOP AT lt_joblist INTO lw_job.
CLEAR lv_status.
CALL FUNCTION 'BDL_READ_JOB_STATUS'
EXPORTING
jobname = lw_job-jobname
jobnumber = lw_job-jobcount
IMPORTING
jobstatus = lv_status
EXCEPTIONS
job_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0. "#EC NEEDED
ENDIF.
IF lv_status EQ 'F' .
CALL FUNCTION 'BP_JOB_DELETE' "delete job
EXPORTING
jobcount = lw_job-jobcount
jobname = lw_job-jobname
forcedmode = 'X'
EXCEPTIONS
cant_delete_event_entry = 1
cant_delete_job = 2
cant_delete_joblog = 3
cant_delete_steps = 4
cant_delete_time_entry = 5
cant_derelease_successor = 6
cant_enq_predecessor = 7
cant_enq_successor = 8
cant_enq_tbtco_entry = 9
cant_update_predecessor = 10
cant_update_successor = 11
commit_failed = 12
jobcount_missing = 13
jobname_missing = 14
job_does_not_exist = 15
job_is_already_running = 16
no_delete_authority = 17
OTHERS = 18.
IF sy-subrc <> 0. "#EC NEEDED
ENDIF.
ENDIF.
ENDLOOP.
有疑問(wèn)可以留言哈·