ABAP 后台JOB自动执行

    "启用后台JOB
    PERFORM FRM_SET_JOB .
    
    
*&---------------------------------------------------------------------*
*& Form frm_set_job
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FRM_SET_JOB .

  DATA: LS_PROG_LOCK LIKE ZDST_PROG_LOCK .
  DATA: LV_PROG_NAME TYPE C LENGTH 20,
        LV_JOB_NAME  LIKE TBTCO-JOBNAME,     "作业名
        LV_JOB_NR    LIKE TBTCO-JOBCOUNT.    "作业号
  LV_PROG_NAME = '程序名' .
  SELECT SINGLE * INTO LS_PROG_LOCK FROM ZDST_PROG_LOCK WHERE
  PROGNAME = LV_PROG_NAME AND ZJOB_FLG = 'X'.
*------------------------------------------------------启用JOB
  IF SY-SUBRC = 0.
    WAIT UP TO LS_PROG_LOCK-WTIME SECONDS.

    LV_JOB_NAME = `程序名及描述` && SY-DATUM  &&  SY-UZEIT .

    CALL FUNCTION 'JOB_OPEN'
      EXPORTING
        JOBNAME          = LV_JOB_NAME
      IMPORTING
        JOBCOUNT         = LV_JOB_NR
      EXCEPTIONS
        CANT_CREATE_JOB  = 1
        INVALID_JOB_DATA = 2
        JOBNAME_MISSING  = 3
        OTHERS           = 4.

    IF SY-SUBRC = 0.

      "调用需要跑JOB的程序
      SUBMIT 程序名
      USER SY-UNAME          " mandatory
      VIA JOB LV_JOB_NAME NUMBER LV_JOB_NR
      TO SAP-SPOOL
      DESTINATION   'LP01'
      IMMEDIATELY   ''
      KEEP IN SPOOL 'X'
      WITHOUT SPOOL DYNPRO
      AND RETURN.
      IF SY-SUBRC = 0.
        CALL FUNCTION 'JOB_CLOSE'
          EXPORTING
            JOBCOUNT  = LV_JOB_NR
            JOBNAME   = LV_JOB_NAME
            STRTIMMED = 'X'.
      ENDIF.
    ENDIF.
  ENDIF.
*---------------------------------------------------关闭JOB
ENDFORM.

 

你可能感兴趣的:(SAP,ABAP)