限制后台进程的个数
应用背景:
通常我们会限制后台进程的执行个数
实现方法:
DATA: l_jobcount LIKE tbtcm-jobcount,
l_jobname LIKE tbtcm-jobname,
l_stepcount LIKE tbtcm-stepcount.
DATA: l_tbtco LIKE tbtco.
IF sy-batch = 'X'. “如果是后台执行
******************获取当前系统job信息
CALL FUNCTION 'GET_JOB_RUNTIME_INFO' ”用来抓取当前后台JOB
IMPORTING
jobcount = l_jobcount
jobname = l_jobname
stepcount = l_stepcount
EXCEPTIONS
no_runtime_info = 1
OTHERS = 2.
IF sy-subrc <> 0.
STOP.
ENDIF.
SELECT SINGLE * “用来检查当前系统是否还有其他未处理完的JOB
FROM tbtco
INNER JOIN tbtcp ON tbtcp~jobname = tbtco~jobname AND tbtcp~jobcount = tbtco~jobcount
INTO CORRESPONDING FIELDS OF l_tbtco
WHERE tbtco~status = 'R'
AND tbtcp~progname EQ sy-cprog
AND tbtco~jobcount NE l_jobcount.
IF sy-subrc = 0.
WRITE: / '有其他Job未处理完'.
STOP.
ENDIF.
ENDIF.
*********************************备注*****************
'GET_JOB_RUNTIME_INFO' 此接口只能用在后台,方能生效;
即就是说,调用该接口的程序必须是后台job,才能起作用