ABAPCLJOB

  1. REPORT zini_002.
  2.  
  3.  
  4. CLASS ZCl_MY_JOB DEFINITION.
  5.  
  6.   PUBLIC SECTION.
  7.     TYPES: BEGIN OF ty_JOB,
  8.              count      TYPE tbtcjob-jobcount,
  9.              name       TYPE tbtcjob-jobname,
  10.              start_now  TYPE btch0000-char1,
  11.              start_date TYPE tbtcjob-sdlstrtdt,
  12.              start_time TYPE tbtcjob-sdlstrttm,
  13.              error      TYPE sysubrc,
  14.            END OF ty_job.
  15.  
  16.     DATA: params TYPE ty_job.
  17.  
  18.     METHODS:
  19.       constructor IMPORTING I_params TYPE ty_job OPTIONAL,
  20.       job_open,
  21.       job_close.
  22.  
  23. ENDCLASS.
  24.  
  25.  
  26. CLASS ZCl_MY_JOB IMPLEMENTATION.
  27.  
  28.   METHOD constructor.
  29.  
  30.     IF I_params IS SUPPLIED.
  31.       params = i_params.
  32.     ENDIF.
  33.  
  34.     IF params-start_date IS INITIAL.
  35.       CLEAR params-start_time.
  36.       params-start_now = 'X'.
  37.     ENDIF.
  38.  
  39.   ENDMETHOD.
  40.  
  41.   METHOD job_open.
  42.  
  43.     CLEAR params-error.
  44.     CALL FUNCTION 'JOB_OPEN'
  45.       EXPORTING
  46. *       DELANFREP        = ' '
  47. *       JOBGROUP         = ' '
  48.         jobname          = params-name
  49. *       SDLSTRTDT        = NO_DATE
  50. *       SDLSTRTTM        = NO_TIME
  51. *       JOBCLASS         =
  52. *       CHECK_JOBCLASS   =
  53.       IMPORTING
  54.         jobcount         = params-count
  55. *       INFO             =
  56. *     CHANGING
  57. *       RET              =
  58.       EXCEPTIONS
  59.         cant_create_job  = 1
  60.         invalid_job_data = 2
  61.         jobname_missing  = 3
  62.         OTHERS           = 4.
  63.  
  64.     params-error  = sy-subrc.
  65.  
  66.   ENDMETHOD.
  67.  
  68.   METHOD job_close.
  69.     CHECK params-error IS INITIAL.
  70.     CALL FUNCTION 'JOB_CLOSE'
  71.       EXPORTING
  72. *       AT_OPMODE            = ' '
  73. *       AT_OPMODE_PERIODIC   = ' '
  74. *       CALENDAR_ID          = ' '
  75. *       EVENT_ID             = ' '
  76. *       EVENT_PARAM          = ' '
  77. *       EVENT_PERIODIC       = ' '
  78.         jobcount             = params-count
  79.         jobname              = params-name
  80. *       LASTSTRTDT           = NO_DATE
  81. *       LASTSTRTTM           = NO_TIME
  82. *       PRDDAYS              = 0
  83. *       PRDHOURS             = 0
  84. *       PRDMINS              = 0
  85. *       PRDMONTHS            = 0
  86. *       PRDWEEKS             = 0
  87. *       PREDJOB_CHECKSTAT    = ' '
  88. *       PRED_JOBCOUNT        = ' '
  89. *       PRED_JOBNAME         = ' '
  90. *       SDLSTRTDT            = NO_DATE
  91. *       SDLSTRTTM            = NO_TIME
  92. *       STARTDATE_RESTRICTION             = BTC_PROCESS_ALWAYS
  93.         strtimmed            = params-start_now
  94. *       TARGETSYSTEM         = ' '
  95. *       START_ON_WORKDAY_NOT_BEFORE       = SY-DATUM
  96. *       START_ON_WORKDAY_NR  = 0
  97. *       WORKDAY_COUNT_DIRECTION           = 0
  98. *       RECIPIENT_OBJ        =
  99. *       TARGETSERVER         = ' '
  100. *       DONT_RELEASE         = ' '
  101. *       TARGETGROUP          = ' '
  102. *       DIRECT_START         =
  103. *       INHERIT_RECIPIENT    =
  104. *       INHERIT_TARGET       =
  105. *       REGISTER_CHILD       = ABAP_FALSE
  106. *       TIME_ZONE            =
  107. *       EMAIL_NOTIFICATION   =
  108. *     IMPORTING
  109. *       JOB_WAS_RELEASED     =
  110. *     CHANGING
  111. *       RET                  =
  112.       EXCEPTIONS
  113.         cant_start_immediate = 1
  114.         invalid_startdate    = 2
  115.         jobname_missing      = 3
  116.         job_close_failed     = 4
  117.         job_nosteps          = 5
  118.         job_notex            = 6
  119.         lock_failed          = 7
  120.         invalid_target       = 8
  121.         invalid_time_zone    = 9
  122.         OTHERS               = 10.
  123.  
  124.     params-error = sy-subrc.
  125.  
  126.   ENDMETHOD.
  127.  
  128. ENDCLASS.
  129.  
  130. END-OF-SELECTION.
  131.  
  132.  
  133.   DATA(g_my_job) = NEW  ZCl_MY_JOB( i_params = VALUE #( name  = |{ sy-repid }{ sy-uzeit }|  ) ).
  134.  
  135.   g_my_job->job_open( ).
  136.  
  137.   IF g_my_job->params-error IS INITIAL.
  138.  
  139.     SUBMIT (sy-repid) AND RETURN   " BOOOOOM
  140.        USER sy-uname
  141.        VIA JOB g_my_job->params-name
  142.        NUMBER  g_my_job->params-count.
  143.  
  144.     g_my_job->job_close( ).
  145.  
  146.     IF g_my_job->params-error EQ 0.
  147.       MESSAGE s398(00) WITH TEXT-j03.
  148.     ENDIF.
  149.  
  150.   ENDIF.