ABAP JOB延时设计

FUNCTION zf_sd075_send_dn_sync.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     REFERENCE(IV_DN) TYPE  LIKP-VBELN
*"----------------------------------------------------------------------

  DATA: lv_number TYPE tbtcjob-jobcount,
        lv_name   TYPE tbtcjob-jobname VALUE 'ZIF_ZSDI2023_TRIGGER_JOB'.

  DATA: lv_original_timestamp TYPE timestamp,
        lv_new_timestamp      TYPE timestamp,
        lv_date               TYPE dats,
        lv_time               TYPE tims.

  DATA:lv_sys_zone TYPE timezone.

  IF iv_dn IS INITIAL.
    RETURN.
  ENDIF.

  GET TIME STAMP FIELD lv_original_timestamp.

  CALL FUNCTION 'TIMESTAMP_DURATION_ADD'
    EXPORTING
      timestamp_in  = lv_original_timestamp
      duration      = 30               "延迟30秒后运行推送,
    IMPORTING
      timestamp_out = lv_new_timestamp.

  CALL FUNCTION 'GET_SYSTEM_TIMEZONE'
    IMPORTING
      timezone            = lv_sys_zone
    EXCEPTIONS
      customizing_missing = 1
      OTHERS              = 2.

  CONVERT TIME STAMP lv_new_timestamp TIME ZONE lv_sys_zone
    INTO DATE lv_date TIME lv_time.

  CALL FUNCTION 'JOB_OPEN'
    EXPORTING
      jobname          = lv_name
    IMPORTING
      jobcount         = lv_number
    EXCEPTIONS
      cant_create_job  = 1
      invalid_job_data = 2
      jobname_missing  = 3
      OTHERS           = 4.
  IF sy-subrc = 0.

*该job DN 发送CRM 并且发送3PL
    SUBMIT zsdi2017_resend
      WITH p_dn = iv_dn
      WITH p_crm = 'X'
      WITH p_3pl = 'X'
      VIA JOB lv_name NUMBER lv_number
      AND RETURN.

    IF sy-subrc = 0.

      CALL FUNCTION 'JOB_CLOSE'
        EXPORTING
          jobcount             = lv_number
          jobname              = lv_name
          sdlstrtdt            = lv_date
          sdlstrttm            = lv_time
*          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.
    ENDIF.
  ENDIF.


ENDFUNCTION.

 

posted @ 2026-08-27 17:09  Lan_dev  阅读(8)  评论(0)    收藏  举报