ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 【JOB】使用ABAP来操作JOB:Create,Insert Step以及Release

【JOB】使用ABAP来操作JOB:Create,Insert Step以及Release

Linux操作系统 作者:xiner418 时间:2014-12-10 15:54:48 0 删除 编辑

在ABAP中,我们有时候需要通过ABAP来定义JOB并执行它,也就是说,我们不使用SM36的GUI来创建Job。

 

例如,作为例子,我们需要一个job:去执行ZTEST_JOB_STEP1与ZTEST_JOB_STEP2这两个ABAP程序。

ZTEST_JOB_STEP1的程序:

REPORT  ZTEST_JOB_STEP1.


PARAMETERS: p_user type sy-uname.


write:/ 'job step 1'.

WRITE:/ 'Proceed User:', p_user.

其中效果为:带有一个variant供我们后面job用。

结果:

ZTEST_JOB_STEP2的程序:

REPORT  ZTEST_JOB_STEP2 NO STANDARD PAGE HEADING.

write:/ 'job step 2'.

其中效果为:


好。我们的JOB-ABAP代码实现。

*&---------------------------------------------------------------------*
*& Report  ZTEST_ABAP_JOB
*&
*&---------------------------------------------------------------------*
*& test using ABAP to trigger Job and manipulate Job
*&
*&---------------------------------------------------------------------*

REPORT  ZTEST_ABAP_JOB.

DATA:
  w_jobid 
type tbtcjob-jobcount,
  w_stepnm  
type TBTCJOB-STEPCOUNT.

PARAMETERS:
  p_job_nm  
type tbtcjob-jobname OBLIGATORY,
  p_var_st  
type raldb-variant.

JOB_OPEN: 意思为:declare一个JOB并返回这个job的“内存ID”

 

 

线形标注 2: JOB_OPEN: 意思为:declare一个JOB并返回这个job的“内存ID”START-OF-SELECTION.

*1. using JOB_OPEN to open job
  
clear:w_jobid.
  
CALL FUNCTION 'JOB_OPEN'
    
EXPORTING
*     DELANFREP              = ' '
*     JOBGROUP               = ' '
      JOBNAME                = p_job_nm
*     SDLSTRTDT              = NO_DATE
*     SDLSTRTTM              = NO_TIME
*     JOBCLASS               =
   
IMPORTING
     JOBCOUNT               = w_jobid
*   CHANGING
*     RET                    =
   
EXCEPTIONS
     CANT_CREATE_JOB        = 
1
     INVALID_JOB_DATA       = 
2
     JOBNAME_MISSING        = 
3
     
OTHERS                 = 4
            .
  
IF SY-SUBRC <> 0.
   
write:/ 'JOB_OPEN faild!'.
  
else.
    
write:/ 'JOB_OPEN Successed!'.
    
write:/ '-----------Job Name:', p_job_nm.
    
write:/ '-----------Job Count:', w_jobid.
  
ENDIF.

JOB_SUBMIT: 意思为:insert step for job

 

注意,这里需要为每一个step进行submit.

 

 

线形标注 2: JOB_SUBMIT: 意思为:insert step for job

注意,这里需要为每一个step进行submit.
*2. using JOB_SUMMIT to insert step
  
clear:w_stepnm.
  
CALL FUNCTION 'JOB_SUBMIT'
    
EXPORTING
*     ARCPARAMS                         =
      AUTHCKNAM                         = sy-uname
*     COMMANDNAME                       = ' '
*     OPERATINGSYSTEM                   = ' '
*     EXTPGM_NAME                       = ' '
*     EXTPGM_PARAM                      = ' '
*     EXTPGM_SET_TRACE_ON               = ' '
*     EXTPGM_STDERR_IN_JOBLOG           = 'X'
*     EXTPGM_STDOUT_IN_JOBLOG           = 'X'
*     EXTPGM_SYSTEM                     = ' '
*     EXTPGM_RFCDEST                    = ' '
*     EXTPGM_WAIT_FOR_TERMINATION       = 'X'
      JOBCOUNT                          = w_jobid
      JOBNAME                           = p_job_nm
*     LANGUAGE                          = SY-LANGU
*     PRIPARAMS                         = ' '
      
REPORT                            = 'ZTEST_JOB_STEP1'
      VARIANT                           = p_var_st
   
IMPORTING
     STEP_NUMBER                       = w_stepnm
   
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.
     
write:/ 'JOB_SUBMIT faild!'.
  
else.
    
write:/ 'JOB_SUBMIT Successed!'.
    
write:/ '-----------Step:', w_stepnm.
  
ENDIF.
  
clear:w_stepnm.
  
CALL FUNCTION 'JOB_SUBMIT'
    
EXPORTING
*     ARCPARAMS                         =
      AUTHCKNAM                         = sy-uname
*     COMMANDNAME                       = ' '
*     OPERATINGSYSTEM                   = ' '
*     EXTPGM_NAME                       = ' '
*     EXTPGM_PARAM                      = ' '
*     EXTPGM_SET_TRACE_ON               = ' '
*     EXTPGM_STDERR_IN_JOBLOG           = 'X'
*     EXTPGM_STDOUT_IN_JOBLOG           = 'X'
*     EXTPGM_SYSTEM                     = ' '
*     EXTPGM_RFCDEST                    = ' '
*     EXTPGM_WAIT_FOR_TERMINATION       = 'X'
      JOBCOUNT                          = w_jobid
      JOBNAME                           = p_job_nm
*     LANGUAGE                          = SY-LANGU
*     PRIPARAMS                         = ' '
      
REPORT                            = 'ZTEST_JOB_STEP2'
*      VARIANT                           =
   
IMPORTING
     STEP_NUMBER                       = w_stepnm
   
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.
     
write:/ 'JOB_SUBMIT faild!'.
  
else.
    
write:/ '-----------Step:', w_stepnm.

JOB_Close: 意思为:Release刚创建的job.然后可以在SM37中查看

 

 

线形标注 2: JOB_Close: 意思为:Release刚创建的job.然后可以在SM37中查看  ENDIF.

*3. using JOB_CLOSE to close job
  
CALL FUNCTION 'JOB_CLOSE'
    
EXPORTING
*     AT_OPMODE                         = ' '
*     AT_OPMODE_PERIODIC                = ' '
*     CALENDAR_ID                       = ' '
*     EVENT_ID                          = ' '
*     EVENT_PARAM                       = ' '
*     EVENT_PERIODIC                    = ' '
      JOBCOUNT                          = w_jobid
      JOBNAME                           = p_job_nm
*     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                      =
*   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.
   
write:/ 'JOB_CLOSE faild!'.
  
else.
   
write:/ 'JOB_CLOSE Successed!'.
  
ENDIF.

JOB_OPEN: 意思为:declare一个JOB并返回这个job的“内存ID”

JOB_SUBMIT: 意思为:insert step for job.注意,这里需要为每一个step(这里是执行两个ABAP program )进行.

JOB_Close: 意思为:Release刚创建的job.然后可以在SM37中查看


然后,我们执行:

最后结果:

然后,我们去SM37中可以check:

可以再看一下spool:

如其中ZTEST_JOB_STEP1的spool :

而ZTEST_JOB_STEP2的spool :



1.jpg

2.jpg

3.jpg

4.jpg

5.jpg

6.jpg

7.jpg

8.jpg

9.jpg

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/442995/viewspace-1363435/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2014-12-10

  • 博文量
    1
  • 访问量
    2009