zoukankan      html  css  js  c++  java
  • ABAP-Background Job

    ABAP后台作业设置过程:

    1.变式校验

    2.当前作业是否正在运行(加锁及防重)

    3.后台作业提交

    1.变式校验:

      SELECT SINGLE @abap_true
             FROM varid
             WHERE report = @lv_report
             AND   variant = @lv_vart
             INTO @DATA(lv_exists).

    2.是否正在运行:

        SELECT SINGLE @abap_true
               FROM tbtco
               WHERE jobname = @lv_jobname
               AND status IN (@/isdfps/cl_const_abc_123=>gc_s,
                              @/isdfps/cl_const_abc_123=>gc_r,
                              @/isdfps/cl_const_abc_123=>gc_y)
               INTO @DATA(lv_true).

     上面只针对jobname名称进行校验,如果对当前执行程序进程进行校验,可参考https://www.cnblogs.com/ricoo/p/13846072.html

      call 'ThWpInfo' id 'OPCODE' field lc_opcode_wp_list
                      id 'TAB'    field lt_wpinfo-*sys*
                      id 'CPU'    field lv_with_cpu.

    3.作业提交:

     作业提交过程中需注意并发及防重执行,尽量通过作业变式分开提交,相同作业名避免记录前后执行重复。

        CONCATENATE lv_report '_'lv_vart INTO lv_jobname.

        CALL FUNCTION 'ZFG0030_CRTJOB' EXPORTING jobname    = lv_jobname rept = lv_report jbnamclas    = /isdfps/cl_const_abc_123=>gc_b vart = lv_vart lang = '1' stdat = l_stdat sttim = l_sttim dirst = abap_true IMPORTING jbname  = l_jobname jbcount = l_jobcount.
    FUNCTION ZFG0030_CRTJOB.
    *"----------------------------------------------------------------------
    *"*"本地接口:
    *"  IMPORTING
    *"     VALUE(JOBNAME) LIKE  TBTCJOB-JOBNAME
    *"     VALUE(JBNAMCLAS) LIKE  TBTCJOB-JOBCLASS OPTIONAL
    *"     VALUE(REPT) LIKE  SY-REPID
    *"     VALUE(VART) LIKE  RALDB-VARIANT OPTIONAL
    *"     VALUE(LANG) LIKE  SY-LANGU OPTIONAL
    *"     VALUE(IMED) LIKE  BTCH0000-CHAR1 OPTIONAL
    *"     VALUE(EVEID) LIKE  TBTCJOB-EVENTID OPTIONAL
    *"     VALUE(EVEPA) LIKE  TBTCJOB-EVENTPARM OPTIONAL
    *"     VALUE(EVEPER) LIKE  BTCH0000-CHAR1 OPTIONAL
    *"     VALUE(PREST) LIKE  TBTCSTRT-CHECKSTAT OPTIONAL
    *"     VALUE(PREJB) LIKE  TBTCJOB-JOBCOUNT OPTIONAL
    *"     VALUE(PRJBN) LIKE  TBTCJOB-JOBNAME OPTIONAL
    *"     VALUE(STDAT) LIKE  SY-DATUM OPTIONAL
    *"     VALUE(STTIM) LIKE  SY-UZEIT OPTIONAL
    *"     VALUE(TARSER) LIKE  BTCTGTSRVR-SRVNAME OPTIONAL
    *"     VALUE(DIRST) LIKE  BTCH0000-CHAR1 OPTIONAL
    *"  EXPORTING
    *"     REFERENCE(JBNAME) LIKE  TBTCJOB-JOBNAME
    *"     REFERENCE(JBCOUNT) LIKE  TBTCJOB-JOBCOUNT
    *"     REFERENCE(ABORTED) LIKE  TBTCV-ABORT
    *"     REFERENCE(FINISHED) LIKE  TBTCV-FIN
    *"     REFERENCE(PRELIMINARY) LIKE  TBTCV-PRELIM
    *"     REFERENCE(READY) LIKE  TBTCV-READY
    *"     REFERENCE(RUNNING) LIKE  TBTCV-RUN
    *"     REFERENCE(SCHEDULED) LIKE  TBTCV-SCHED
    *"  EXCEPTIONS
    *"      11CANT_CREATE_JOB
    *"      12INVALID_JOB_DATA
    *"      13JOBNAME_MISSING
    *"      GENERAL_FAULT
    *"      21BAD_PRIPARAMS
    *"      22IBAD_XPGFLAGS
    *"      23INVALID_JOBDATA
    *"      24JOBNAME_MISSING
    *"      25JOB_NOTEX
    *"      26JOB_SUBMIT_FAILED
    *"      27LOCK_FAILED
    *"      28PROGRAM_MISSING
    *"      29PROG_ABAP_AND_EXTPG_SET
    *"      31CANT_START_IMMEDIATE
    *"      32INVALID_STARTDATE
    *"      33JOBNAME_MISSING
    *"      34JOB_CLOSE_FAILED
    *"      35JOB_NOSTEPS
    *"      36JOB_NOTEX
    *"      37LOCK_FAILED
    *"      38INVALID_TARGET
    *"----------------------------------------------------------------------
    
     DATA: JOBCOUNT LIKE TBTCJOB-JOBCOUNT.
      CALL FUNCTION 'JOB_OPEN'
        EXPORTING
    *     DELANFREP        = ' '
    *     JOBGROUP         = ' '
          JOBNAME          = JOBNAME
          JOBCLASS         = JBNAMCLAS
        IMPORTING
          JOBCOUNT         = JOBCOUNT
        EXCEPTIONS
          CANT_CREATE_JOB  = 1
          INVALID_JOB_DATA = 2
          JOBNAME_MISSING  = 3
          OTHERS           = 4.
    
      IF SY-SUBRC <> 0.
        CASE SY-SUBRC.
          WHEN 1.
            MESSAGE  'CANT_CREATE_JOB' TYPE 'E'                 "#EC NOTEXT
                            RAISING 11CANT_CREATE_JOB.
          WHEN 2.
            MESSAGE 'INVALID_JOB_DATA' TYPE 'E'
             RAISING 12INVALID_JOB_DATA.
          WHEN 3.
            MESSAGE 'JOBNAME_MISSING' TYPE 'E'
            RAISING 13JOBNAME_MISSING.
          WHEN 4.
            MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                  WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4
                  RAISING GENERAL_FAULT.
        ENDCASE.
    
      ELSE.
        JBNAME = JOBNAME.
        JBCOUNT = JOBCOUNT.
        CALL FUNCTION 'JOB_SUBMIT'
          EXPORTING
            AUTHCKNAM               = SY-UNAME
            JOBCOUNT                = JOBCOUNT
            JOBNAME                 = JOBNAME
            LANGUAGE                = SY-LANGU
            REPORT                  = REPT
            VARIANT                 = VART
          EXCEPTIONS
            BAD_PRIPARAMS           = 1
            BAD_XPGFLAGS            = 2
            INVALID_JOBDATA         = 3
            JOBNAME_MISSING         = 4
            JOB_NOTEX               = 5
            JOB_SUBMIT_FAILED       = 6
            LOCK_FAILED             = 7
            PROGRAM_MISSING         = 8
            PROG_ABAP_AND_EXTPG_SET = 9
            OTHERS                  = 10.
    
        IF SY-SUBRC <> 0.
    
          CASE SY-SUBRC.
            WHEN 1.
              MESSAGE  'BAD_PRIPARAMS' TYPE 'E'                 "#EC NOTEXT
                              RAISING 21BAD_PRIPARAMS.
            WHEN 2.
              MESSAGE 'IBAD_XPGFLAGS' TYPE 'E'
               RAISING 22IBAD_XPGFLAGS.
            WHEN 3.
              MESSAGE 'INVALID_JOBDATA' TYPE 'E'
              RAISING 23INVALID_JOBDATA.
            WHEN 4.
              MESSAGE 'JOBNAME_MISSING' TYPE 'E'
              RAISING 24JOBNAME_MISSING.
            WHEN 5.
              MESSAGE 'JOB_NOTEX' TYPE 'E'
              RAISING 25JOB_NOTEX.
            WHEN 6.
              MESSAGE 'JOB_SUBMIT_FAILED' TYPE 'E'
             RAISING 26JOB_SUBMIT_FAILED.
            WHEN 7.
              MESSAGE 'LOCK_FAILED' TYPE 'E'
              RAISING 27LOCK_FAILED.
            WHEN 8.
              MESSAGE 'PROGRAM_MISSING ' TYPE 'E'
              RAISING 28PROGRAM_MISSING.
            WHEN 9.
              MESSAGE 'PROG_ABAP_AND_EXTPG_SET' TYPE 'E'
              RAISING 29PROG_ABAP_AND_EXTPG_SET.
            WHEN 10.
              MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                     WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4
                     RAISING GENERAL_FAULT.
          ENDCASE.
    
        ELSE.
          DATA:V_TIM TYPE SY-UZEIT.
          V_TIM = STTIM + 10.
    
    *if  PREJB ne space and prjbn ne space.
    *     PERFORM build_predjob_event_name USING
    *                                     PREJB
    *                                     prjbn
    *                                     job_head-eventid
    *                                     job_head-eventparm
    *                                     job_head-eventcount
    *                                     rc.
    *endif.
    
          CALL FUNCTION 'JOB_CLOSE'
            EXPORTING
              EVENT_ID             = EVEID
              EVENT_PARAM          = EVEPA
              EVENT_PERIODIC       = EVEPER
              JOBCOUNT             = JOBCOUNT
              JOBNAME              = JOBNAME
              PREDJOB_CHECKSTAT    = PREST
              PRED_JOBCOUNT        = PREJB
              PRED_JOBNAME         = PRJBN
              SDLSTRTDT            = STDAT
              SDLSTRTTM            = V_TIM
              TARGETSERVER         = TARSER
              STRTIMMED            = IMED
    *         TARGETGROUP          = ' '
              DIRECT_START         = DIRST
            EXCEPTIONS
              CANT_START_IMMEDIATE = 1
              INVALID_STARTDATE    = 2
              JOBNAME_MISSING      = 3
              JOB_CLOSE_FAILED     = 4
              JOB_NOSTEPS          = 5
              JOB_NOTEX            = 6
              LOCK_FAILED          = 7
              INVALID_TARGET       = 8
              OTHERS               = 9.
          IF SY-SUBRC <> 0.
    
            CASE SY-SUBRC.
              WHEN 1.
                MESSAGE  'cant_start_immediate ' TYPE 'E'       "#EC NOTEXT
                 RAISING 31CANT_START_IMMEDIATE .
              WHEN 2.
                MESSAGE 'invalid_startdate' TYPE 'E'
                 RAISING 32INVALID_STARTDATE.
              WHEN 3.
                MESSAGE 'jobname_missing' TYPE 'E'
                RAISING 33JOBNAME_MISSING.
              WHEN 4.
                MESSAGE 'job_close_failed ' TYPE 'E'
                RAISING 34JOB_CLOSE_FAILED .
              WHEN 5.
                MESSAGE 'job_nosteps' TYPE 'E'
                RAISING 35JOB_NOSTEPS.
              WHEN 6.
                MESSAGE 'job_notex ' TYPE 'E'
               RAISING 36JOB_NOTEX .
              WHEN 7.
                MESSAGE 'LOCK_FAILED' TYPE 'E'
                RAISING 37LOCK_FAILED.
              WHEN 8.
                MESSAGE 'invalid_target ' TYPE 'E'
                RAISING 38INVALID_TARGET.
              WHEN OTHERS.
                MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                       WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4
                       RAISING GENERAL_FAULT.
            ENDCASE.
    
          ENDIF.
    
        ENDIF.
    
      ENDIF.
    
    
    ENDFUNCTION.
    View Code

    4.后台作业调试JDBG :

  • 相关阅读:
    2020年Android面试题含答案
    flutter系列(一)----- 开发环境搭建
    Android应用安全防护和逆向分析 ——apk混淆成其他语言代码
    Android应用安全防护和逆向分析 ——apk反编译
    Android中 TextView 加载 混合字符 自动换行解决方案
    H5跳转app本地的规则定义
    Android ListView 九大重要属性详细分析
    ListView和ScrollView滑动到顶部
    简要的汇总Android
    关于ViewPager+Fragment中Fragment不销毁/生命周期
  • 原文地址:https://www.cnblogs.com/ricoo/p/13845009.html
Copyright © 2011-2022 走看看