ABAP 后台JOB布置例子

DATA:gv_timestamp TYPE timestampl.
  DATA:gc_timestamp TYPE char27.
  DATA:gv_dat       TYPE d,
       gv_tim       TYPE t,
       gv_tz        TYPE ttzz-tzone,
       gv_dst       TYPE c LENGTH 1.
  DATA:gv_user      TYPE char12 VALUE 'DDIC'.
  DATA:jobname      TYPE tbtcjob-jobname,
       jobcount     TYPE tbtcjob-jobcount.
  DATA: lv_line TYPE sy-tabix.
  DATA: gv_line_c TYPE c LENGTH 3.
  DATA: lt_tbtco TYPE TABLE OF tbtco.
  DATA: lv_btcjob TYPE btcjob.

  RANGES:     r_vbeln   FOR gs_out-vbeln ,
              r_route   FOR gs_out-route,
              r_kunnr   FOR gs_out-kunnr,
              r_street  FOR gs_out-street,
              r_city    FOR gs_out-city,
              r_remark  FOR gs_out-remark,
              r_number  FOR gs_out-tel_number,
              r_name1   FOR gs_out-name_a.
  LOOP AT pt_out INTO ls_addr.
    r_vbeln-low = ls_addr-vbeln_dn.
    r_vbeln-sign = 'I'.
    r_vbeln-option = 'EQ'.
    APPEND r_vbeln.

    r_route-low = ls_addr-route.
    r_route-sign = 'I'.
    r_route-option = 'EQ'.
    APPEND r_route.

    r_kunnr-low = ls_addr-kunnr.
    r_kunnr-sign = 'I'.
    r_kunnr-option = 'EQ'.
    APPEND r_kunnr.

    r_street-low = ls_addr-street.
    r_street-sign = 'I'.
    r_street-option = 'EQ'.
    APPEND r_street.

    r_city-low = ls_addr-city.
    r_city-sign = 'I'.
    r_city-option = 'EQ'.
    APPEND r_city.

    r_remark-low = ls_addr-remark.
    r_remark-sign = 'I'.
    r_remark-option = 'EQ'.
    APPEND r_remark.

    r_number-low = ls_addr-tel_number.
    r_number-sign = 'I'.
    r_number-option = 'EQ'.
    APPEND r_number.

    r_name1-low = ls_addr-name1.
    r_name1-sign = 'I'.
    r_name1-option = 'EQ'.
    APPEND r_name1.

  ENDLOOP.
  CONCATENATE 'ZSD1035_' sy-uname '_' '%' INTO lv_btcjob.
  DO 200 TIMES.
    CLEAR lt_tbtco.
    SELECT * INTO TABLE lt_tbtco FROM tbtco WHERE jobname LIKE lv_btcjob
      AND ( status = 'R' OR status = 'S' ).
    DESCRIBE TABLE lt_tbtco LINES lv_line.
    IF lv_line < 25.
      EXIT.
    ELSE.
      WAIT UP TO 3 SECONDS.
    ENDIF.
  ENDDO.
  gv_line = gv_line + 1.
  gv_line_c = gv_line.
*  gv_tz = 'UTC+8'.
*  GET TIME STAMP FIELD gv_timestamp.
*  gc_timestamp = gv_timestamp.
*  CONVERT TIME STAMP gv_timestamp TIME ZONE gv_tz
*        INTO DATE gv_dat TIME gv_tim DAYLIGHT SAVING TIME gv_dst.

*  CONDENSE gc_timestamp.
  CONCATENATE 'ZSD1035_' sy-uname '_' sy-datum sy-uzeit INTO jobname.
  CONDENSE jobname.
*  jobname+15(6) = gv_tim.

*   Job open
  CALL FUNCTION 'JOB_OPEN'
    EXPORTING
      delanfrep        = ' '
      jobgroup         = ' '
      jobname          = jobname
*     sdlstrtdt        = sy-datum
*     sdlstrttm        = sy-uzeit
    IMPORTING
      jobcount         = jobcount
    EXCEPTIONS
      cant_create_job  = 01
      invalid_job_data = 02
      jobname_missing  = 03.

  IF sy-subrc = 0.
    SUBMIT zsd_mass_change_dn_job
        WITH    s_vbeln  IN r_vbeln[]
        WITH    s_route  IN r_route[]
        WITH    s_kunnr  IN r_kunnr[]
        WITH    s_street IN r_street[]
        WITH    s_city   IN r_city[]
        WITH    s_remark IN r_remark[]
        WITH    s_number IN r_number[]
        WITH    s_name1  IN r_name1[]
        AND RETURN
        USER gv_user
        VIA JOB jobname
        NUMBER jobcount.

    IF sy-subrc = 0.

      CALL FUNCTION 'JOB_CLOSE'
          EXPORTING
            jobcount             = jobcount
            jobname              = jobname
*下面两个字段可以设置后台作业的执行时间
*           sdlstrtdt            = sy-datum
*           sdlstrttm            = sy-uzeit
            strtimmed             = 'X' "立即执行
          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 sy-subrc = 0.
      ENDIF.
    ENDIF.
  ENDIF.

posted @ 2021-03-17 14:04  闫默涵  阅读(273)  评论(0编辑  收藏  举报