ABAP生成JOB

SAP有时候会有需求需要在程序里面触发设置JOB,今天介绍两种方法。

第一种:submit的方式,下面有两种方法,submit语句和function

第二种:在SE62中创建相应的event,配置上对应程序对应varaint,然后在程序中触发。

*&---------------------------------------------------------------------*
*& Report  ZTESTLIAN2
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT ztestlian_job MESSAGE-ID ys.

PARAMETERS: rd_1 RADIOBUTTON GROUP rd1 DEFAULT 'X',
            rd_2 RADIOBUTTON GROUP rd1.

START-OF-SELECTION.

  IF rd_1 = 'X'.
    PERFORM create_job.
  ELSEIF rd_2 = 'X'.
    PERFORM raise_event.
  ENDIF.
*&---------------------------------------------------------------------*
*&      Form  CREATE_JOB
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM create_job .

  DATA: lv_jobname TYPE tbtcjob-jobname,
        lv_jobcount TYPE tbtco-jobcount,
        lv_a TYPE char10 VALUE '9'.


  lv_jobname = 'Lian_test' && '01'.

  CALL FUNCTION 'JOB_OPEN'
    EXPORTING
*     DELANFREP              = ' '
*     JOBGROUP               = ' '
      jobname                = lv_jobname
*     SDLSTRTDT              = NO_DATE
*     SDLSTRTTM              = NO_TIME
     jobclass               = 'C' "low priority
     check_jobclass         = 'X'
   IMPORTING
     jobcount               = lv_jobcount
*     INFO                   =
*   CHANGING
*     RET                    =
   EXCEPTIONS
     cant_create_job        = 1
     invalid_job_data       = 2
     jobname_missing        = 3
     OTHERS                 = 4 .
  IF sy-subrc <> 0.
    MESSAGE e000 WITH 'create job error'.
  ENDIF.

*********************Directed executed job
  SUBMIT ztestlian32 USER sy-uname
  VIA JOB lv_jobname NUMBER lv_jobcount
  WITH a EQ lv_a
  AND RETURN.
********************* executed job by variant

*  CALL FUNCTION 'JOB_SUBMIT'
*    EXPORTING
*      AUTHCKNAM               = L_NAME
*      JOBCOUNT                = G_JOBCOUNT
*      JOBNAME                 = G_JOBNAME
*      REPORT                  = G_REPORT
*      VARIANT                 = G_VARI_DES
*    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.

  CALL FUNCTION 'JOB_CLOSE'
    EXPORTING
*     AT_OPMODE                         = ' '
*     AT_OPMODE_PERIODIC                = ' '
*     CALENDAR_ID                       = ' '
*     EVENT_ID                          = ' '
*     EVENT_PARAM                       = ' '
*     EVENT_PERIODIC                    = ' '
      jobcount                          = lv_jobcount
      jobname                           = lv_jobname
*     LASTSTRTDT                        = NO_DATE
*     LASTSTRTTM                        = NO_TIME
*     PRDDAYS                           = 0
*     PRDHOURS                          = 0
*     PRDMINS                           = 0
*     PRDMONTHS                         = 0
*     PRDWEEKS                          = 0
*     PREDJOB_CHECKSTAT                 = ' '
*     PRED_JOBCOUNT                     = ' '
*     PRED_JOBNAME                      = ' '
*     SDLSTRTDT                         = NO_DATE
*     SDLSTRTTM                         = NO_TIME
*     STARTDATE_RESTRICTION             = BTC_PROCESS_ALWAYS
     STRTIMMED                         = 'X'
*     TARGETSYSTEM                      = ' '
*     START_ON_WORKDAY_NOT_BEFORE       = SY-DATUM
*     START_ON_WORKDAY_NR               = 0
*     WORKDAY_COUNT_DIRECTION           = 0
*     RECIPIENT_OBJ                     =
*     TARGETSERVER                      = ' '
*     DONT_RELEASE                      = ' '
*     TARGETGROUP                       = ' '
*     DIRECT_START                      =
*     INHERIT_RECIPIENT                 =
*     REGISTER_CHILD                    = ABAP_FALSE
*   IMPORTING
*     JOB_WAS_RELEASED                  =
*   CHANGING
*     RET                               =
   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.
     message e000 with 'JOB executed failed'.
  ENDIF.


ENDFORM.                    " CREATE_JOB
*&---------------------------------------------------------------------*
*&      Form  RAISE_EVENT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM raise_event.

  CALL FUNCTION 'BP_EVENT_RAISE'
    EXPORTING
      eventid                      = 'ZLIAN_TEST_EVENT'
*     EVENTPARM                    = ' '
*     TARGET_INSTANCE              = ' '
*     TARGET_MODE                  = ' '
   EXCEPTIONS
     BAD_EVENTID                  = 1
     EVENTID_DOES_NOT_EXIST       = 2
     EVENTID_MISSING              = 3
     RAISE_FAILED                 = 4
     OTHERS                       = 5.
  IF sy-subrc <> 0.
    MESSAGE E000 WITH 'Event raise failed!'.
  ENDIF.


ENDFORM.                    " RAISE_EVENT

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值