ABAP程序中设置SM36后台JOB

来源:互联网 发布:追求卓越 知乎 编辑:程序博客网 时间:2024/05/21 09:13

   DATAlv_job_name         LIKE tbtco-jobname,     "作业名
              lv_job_nr           LIKE tbtco-jobcount,          "作业号
              lv_job_released     TYPE c,
              lv_job_start_sofort TYPE c,
              lv_print_parameters TYPE pri_params.
    DATA:lt_rspar TYPE TABLE OF rsparams,
              lw_line  LIKE LINE OF lt_rspar.


    "如果是要传给PARAMETER , lw_line-kind= 'P'. 如果是要传给SELECTION lw_line-kind= 'S
    LOOP AT so_bukrs.
      lw_line-selname 'SO_BUKRS'.
      lw_line-kind    'P'.
      lw_line-sign    so_bukrs-sign.
      lw_line-option  so_bukrs-option.
      lw_line-low     so_bukrs-low.
      lw_line-high    so_bukrs-high.
      APPEND lw_line TO lt_rspar.
    ENDLOOP.

    LOOP AT so_prctr.
      lw_line-selname 'SO_PRCTR'.
      lw_line-kind    'P'.
      lw_line-sign    so_prctr-sign.
      lw_line-option  so_prctr-option.
      lw_line-low     so_prctr-low.
      lw_line-high    so_prctr-high.
      APPEND lw_line TO lt_rspar.
    ENDLOOP.

    LOOP AT so_werks.
      lw_line-selname 'SO_WERKS'.
      lw_line-kind    'P'.
      lw_line-sign    so_werks-sign.
      lw_line-option  so_werks-option.
      lw_line-low     so_werks-low.
      lw_line-high    so_werks-high.
      APPEND lw_line TO lt_rspar.
    ENDLOOP.

    LOOP AT so_gjahr.
      lw_line-selname 'SO_GJAHR'.
      lw_line-kind    'P'.
      lw_line-sign    so_gjahr-sign.
      lw_line-option  so_gjahr-option.
      lw_line-low     so_gjahr-low.
      lw_line-high    so_gjahr-high.
      APPEND lw_line TO lt_rspar.
    ENDLOOP.

    LOOP AT so_monat.
      lw_line-selname 'SO_MONAT'.
      lw_line-kind    'P'.
      lw_line-sign    so_monat-sign.
      lw_line-option  so_monat-option.
      lw_line-low     so_monat-low.
      lw_line-high    so_monat-high.
      APPEND lw_line TO lt_rspar.
    ENDLOOP.

     "JOB 名称
    lv_job_name 'ZCO005'.
    "打开JOB 通过JOB name 获得JOB号
    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 syst-subrc 0.

      "调用需要跑JOB的程序
      SUBMIT zcor010
          WITH SELECTION-TABLE  lt_rspar
          USER syst-uname          " mandatory
         VIA JOB lv_job_name NUMBER lv_job_nr AND RETURN.

      "运行结束  关闭JOB
      IF sy-subrc 0.
        CALL FUNCTION 'JOB_CLOSE'
          EXPORTING
            jobcount             lv_job_nr
            jobname              lv_job_name
            strtimmed            'X'
          IMPORTING
            job_was_released     lv_job_released
          EXCEPTIONS
            cant_start_immediate 1
            invalid_startdate    2
            jobname_missing      3
            job_close_failed     4
            job_nosteps          5
            job_notex            6
            lock_failed          7
            OTHERS               8.
        IF syst-subrc <> 0.
          MESSAGE '关闭后台作业出错' TYPE 'I'.
        ELSE.
          MESSAGE '后台JOB开始运行' TYPE 'I'.
        ENDIF.
      ENDIF.
    ENDIF.

原创粉丝点击