**SAP后台作业避免重复作业的现象
1、先创建一个程序,程序代码如下:
REPORT ZOF_I_JOB_PRECHECK.
*TABLES: ZTOFORDCHGIT.
DATA: ZBTCSELECT LIKE BTCSELECT .
*{ INSERT EGDK941902 1
data LP_X(10).
*} INSERT
DATA: ZTBTCJOB LIKE TBTCJOB_BK OCCURS 0 WITH HEADER LINE.
DATA DDIC1 LIKE ZTOF_CH OCCURS 0 WITH HEADER LINE.
PARAMETERS : JOBNAME LIKE ZBTCSELECT-JOBNAME OBLIGATORY. " CR
PARAMETERS : USERNAME LIKE ZBTCSELECT-USERNAME DEFAULT '’ OBLIGATORY. " CR
PARAMETERS : DAYS(4) DEFAULT ‘1’ OBLIGATORY. " CR
PARAMETERS : FROMDATE LIKE ZBTCSELECT-FROM_DATE DEFAULT SY-DATUM no-display . " CR
PARAMETERS : TO_DATE LIKE BTCSELECT-TO_DATE DEFAULT SY-DATUM no-display. " CR
PARAMETERS RUNNING LIKE BTCSELECT-RUNNING DEFAULT ‘X’ .
CLEAR ZBTCSELECT.
TO_DATE = sy-datum.
FROMDATE = sy-datum - days.
MOVE JOBNAME TO ZBTCSELECT-JOBNAME.
MOVE USERNAME TO ZBTCSELECT-USERNAME.
MOVE FROMDATE TO ZBTCSELECT-FROM_DATE.
MOVE TO_DATE TO ZBTCSELECT-TO_DATE.
MOVE RUNNING TO ZBTCSELECT-RUNNING.
- Get a list of all running occurances of this job
REFRESH ZTBTCJOB.
CALL FUNCTION ‘BP_JOB_SELECT_SM37B’
EXPORTING
JOBSELECT_DIALOG = ‘N’
JOBSEL_PARAM_IN = ZBTCSELECT
TABLES
JOBSELECT_JOBLIST_B = ZTBTCJOB
EXCEPTIONS
INVALID_DIALOG_TYPE = 1
JOBNAME_MISSING = 2
NO_JOBS_FOUND = 3
SELECTION_CANCELED = 4
USERNAME_MISSING = 5
OTHERS = 6.
*IF SY-SUBRC <> 0 and sy-subrc <> 3.
- MESSAGE ID ‘ZX’ TYPE ‘A’ NUMBER ‘002’ WITH TEXT-003 SY-SUBRC.
*ENDIF.
SORT ZTBTCJOB BY JOBNAME JOBCOUNT PROGNAME.
DELETE ADJACENT DUPLICATES FROM ZTBTCJOB COMPARING JOBNAME JOBCOUNT.
*{ INSERT EGDK941902 4
LP_X = 0.
*} INSERT
LOOP AT ZTBTCJOB WHERE JOBNAME = JOBNAME.
*{ INSERT EGDK941902 2
LP_X = LP_X + 1.
*} INSERT
ENDLOOP.
*{ REPLACE EGDK941902 3
*\IF SY-SUBRC EQ 0.
*\ MESSAGE ‘Duplicate active System Job detected.’ TYPE ‘E’.
*\ENDIF.
IF LP_X > 1.
MESSAGE ‘Duplicate active System Job detected.’ TYPE ‘E’.
ENDIF.
2、在此程序的选择屏幕下创建变式:
2.1、在选择屏幕处,点击菜单栏 转到 →变式→另存为变式
2.2、输入相关参数:红框里面的值为后台定义的作业名称
2.3、SM36创建后台作业时,步骤阶段,优先执行此程序,参数设为刚创建的变式,在执行您所要后台跑的程序。