Sei sulla pagina 1di 5

REPORT zsap_create_btch_jobs_arch_bt.

*********************************
* Standardized Selection Screen *
*********************************

* Variant
SELECTION-SCREEN BEGIN OF BLOCK pvariant
WITH FRAME TITLE tvariant.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (56) convari FOR FIELD pvariant.
PARAMETER pvariant TYPE syslset DEFAULT ' '.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK pvariant.

* Number of jobs to create


SELECTION-SCREEN BEGIN OF BLOCK p_jobs
WITH FRAME TITLE t_jobs.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (56) conjobs FOR FIELD p_jobs.
PARAMETER p_jobs(2) TYPE n DEFAULT '50'.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK p_jobs.

* Random number from


SELECTION-SCREEN BEGIN OF BLOCK p_from
WITH FRAME TITLE t_from.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (56) confrom FOR FIELD p_from.
PARAMETER p_from TYPE tvarv_val DEFAULT '000000'.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK p_from.

* Random number to
SELECTION-SCREEN BEGIN OF BLOCK p_to
WITH FRAME TITLE t_to.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (56) conto FOR FIELD p_to.
PARAMETER p_to TYPE tvarv_val DEFAULT '999999'.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK p_to.

* Set up for run description below


SELECTION-SCREEN BEGIN OF BLOCK tip
WITH FRAME TITLE t_tipp.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN COMMENT /1(70) l_comm0.
SELECTION-SCREEN COMMENT /1(70) l_comm1.
SELECTION-SCREEN COMMENT /1(70) l_comm2.
SELECTION-SCREEN COMMENT /1(70) l_comm3.
SELECTION-SCREEN COMMENT /1(70) l_comm4.
SELECTION-SCREEN COMMENT /1(70) l_comm5.
SELECTION-SCREEN COMMENT /1(70) l_comm6.
SELECTION-SCREEN COMMENT /1(70) l_comm7.
SELECTION-SCREEN COMMENT /1(70) l_comm8.
SELECTION-SCREEN COMMENT /1(70) l_comm9.
SELECTION-SCREEN COMMENT /1(70) l_comm10.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN END OF BLOCK tip.

* Run description
AT SELECTION-SCREEN OUTPUT.
tvariant = 'Variant'.
t_jobs = 'Jobs'.
t_from = 'Interval from'.
t_to = 'Interval to'.
convari = 'Name of variant for selection parameters'.
conjobs = 'Number of jobs to create (max. 99)'.
confrom = 'Beginning random number (default 000000)'.
conto = 'Ending random number (default 999999)'.

t_tipp = 'Please Read Before Proceeding:'.

l_comm0 =
'This program creates batch jobs to archive business transactions'.
l_comm1 =
'with report /BA1/RF2_ARCHIVE_035_WRITE. These jobs can then be'.
l_comm2 =
'started as required using transaction SM37.'.
l_comm3 =
'These batch jobs are based on the variant you provide, which'.
l_comm4 =
'you create online for report /BA1/RF2_ARCHIVE_035_WRITE'.
l_comm5 =
'In addition, you enter the number of jobs you wish to create'.
l_comm6 =
'and the total interval of the random numbers you wish to archive.'.
l_comm7 =
'Each batch job takes the parameters from the variant, except for'.
l_comm8 =
'the selection criteria (random numbers). These it replaces with a'.
l_comm9 =
'calculated (partial) interval based on the total interval you'.
l_comm10 =
'provide, divided by the number of jobs.'.

INITIALIZATION.

AT SELECTION-SCREEN.

START-OF-SELECTION.

CONSTANTS:
program TYPE sycprog VALUE '/BA1/RF2_ARCHIVE_035_WRITE'.

DATA:
digit(2) TYPE n,
totint(6) TYPE n,
calcint(6) TYPE n,
digitxt(2) TYPE c.

DATA:
BEGIN OF lt_var OCCURS 0,
name TYPE tbtcjob-jobname,
from(6) TYPE n,
to(6) TYPE n,
END OF lt_var,
ls_var LIKE LINE OF lt_var.

DATA:
lt_rspar TYPE TABLE OF rsparams,
ls_rspar LIKE LINE OF lt_rspar.

DATA:
number TYPE tbtcjob-jobcount,
name TYPE tbtcjob-jobname
VALUE '/BA1/RF2_ARCHIVE_035_WRITE',
print_parameters TYPE pri_params,
arc_parameters TYPE arc_params.

DATA:
l_text1 TYPE string,
l_text2 TYPE string,
l_text3 TYPE string,
l_text4 TYPE string.

*--Step One - Check input


IF p_jobs = 0.
MESSAGE e000(/ba1/f2_bt_msg)
WITH 'Select a number from 0 to 99'.
ENDIF.

IF p_from GT p_to.
MESSAGE e000(/ba1/f2_bt_msg) WITH 'Interval invalid'.
ENDIF.

*--Step Two - Determine package intervals and create variant names


totint = ( p_to - p_from ).
calcint = ( totint / p_jobs ) - 1.

*--Step Three - Create variant names


MOVE p_from TO ls_var-from.

WHILE digit LT p_jobs.


ADD 1 TO digit.
CONCATENATE program(26) '-' digit INTO ls_var-name.
ls_var-to = ls_var-from + calcint.
IF digit EQ p_jobs.
ls_var-to = p_to.
ENDIF.
APPEND ls_var TO lt_var.
ls_var-from = ls_var-to + 1.
ENDWHILE.

CLEAR ls_var.

*--Step Four - Create input for jobs and submit


LOOP AT lt_var INTO ls_var.

ls_rspar-selname = 'P_PACKLO'.
ls_rspar-kind = 'S'.
ls_rspar-sign = 'I'.
ls_rspar-option = 'EQ'.
ls_rspar-low = ls_var-from.
APPEND ls_rspar TO lt_rspar.
ls_rspar-selname = 'P_PACKHI'.
ls_rspar-kind = 'S'.
ls_rspar-sign = 'I'.
ls_rspar-option = 'EQ'.
ls_rspar-low = ls_var-to.
APPEND ls_rspar TO lt_rspar.

MOVE ls_var-name TO name.

CALL FUNCTION 'JOB_OPEN'


EXPORTING
jobname = name
IMPORTING
jobcount = number
EXCEPTIONS
cant_create_job = 1
invalid_job_data = 2
jobname_missing = 3
OTHERS = 4.

IF sy-subrc = 0.
SUBMIT (program)
USING SELECTION-SET pvariant
WITH SELECTION-TABLE lt_rspar
TO SAP-SPOOL
SPOOL PARAMETERS print_parameters
ARCHIVE PARAMETERS arc_parameters
WITHOUT SPOOL DYNPRO
VIA JOB name NUMBER number
AND RETURN.
ENDIF.

ENDLOOP.

*--Step Five - Issue success popup


MOVE digit TO digitxt.
IF digitxt(1) = 0.
SHIFT digitxt LEFT.
ENDIF.

IF digit = 1.
CONCATENATE 'A total of' digitxt
'job has been created covering the total interval'
INTO l_text1 SEPARATED BY space.

CONCATENATE 'from' p_from 'to' p_to


INTO l_text2 SEPARATED BY space.

MOVE 'Use transaction SM37 to release job' TO l_text4.


ELSE.
CONCATENATE 'A total of' digitxt
'jobs have been created covering the total interval'
INTO l_text1 SEPARATED BY space.

CONCATENATE 'from' p_from 'to' p_to


INTO l_text2 SEPARATED BY space.

MOVE 'Use transaction SM37 to release jobs' TO l_text4.


ENDIF.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = 'Jobs Created'
txt1 = l_text1
txt2 = l_text2
txt3 = l_text3
txt4 = l_text4.

END-OF-SELECTION.

Potrebbero piacerti anche