02-13-2008 7:17 AM
hi experts,i want to set a program into backgroud job.
the original code like this:
...some statements...
PERFORM FRM_SEND_MAIL USING WA_YA_LX.
...some statements...
i want to set 'PERFORM FRM_SEND_MAIL USING WA_YA_LX.' into background job.
is that code like this?
CALL FUNCTION 'JOB_OPEN'
EXPORTING
JOBNAME = WA_TBTCJOB-JOBNAME
JOBCLASS = 'A'
IMPORTING
JOBCOUNT = WA_TBTCJOB-JOBCOUNT.
PERFORM FRM_SEND_MAIL USING WA_YA_LX.
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
JOBCOUNT = WA_TBTCJOB-JOBCOUNT
JOBNAME = WA_TBTCJOB-JOBNAME
SDLSTRTDT = SY-DATUM
SDLSTRTTM = WA_TBTCJOB-SDLSTRTTM .
hunger for you advice,thanks a lot.
02-13-2008 7:25 AM
See the following simple prog to schedule in background.
You cannot schedule the subroutine i.e perform to run in background job. Instead write the subroutine in another program.
to pass any value to that program, declare selection screen parameter and pass the value from the first one using submit.
Job open
call function 'JOB_OPEN'
exporting
delanfrep = ' '
jobgroup = ' '
jobname = jobname
*sdlstrtdt = sy-datum
*sdlstrttm = sy-uzeit
importing
jobcount = jobcount
exceptions
cant_create_job = 01
invalid_job_data = 02
jobname_missing = 03.
if sy-subrc ne 0.
write:/ 'error in opening a job'.
endif.
Insert process into job
SUBMIT ZSDQ_BCK_TEST
and return
with p_type = 'F' "Selection screen Parameter
user sy-uname
via job jobname
number jobcount.
if sy-subrc > 0.
WRITE:/ 'ERROR PROCESSING JOB'.
endif.
Close job
call function 'JOB_CLOSE'
exporting
*event_id = starttime-eventid
*event_param = starttime-eventparm
*event_periodic = starttime-periodic
jobcount = jobcount
jobname = jobname
*laststrtdt = starttime-laststrtdt
*laststrttm = starttime-laststrttm
*prddays = 1
*prdhours = 0
*prdmins = 0
*prdmonths = 0
*prdweeks = 0
*sdlstrtdt = sdlstrtdt
*sdlstrttm = sdlstrttm
strtimmed = 'X'
*targetsystem = host
RECIPIENT_OBJ = RECIPIENT_OBJ
exceptions
cant_start_immediate = 01
invalid_startdate = 02
jobname_missing = 03
job_close_failed = 04
job_nosteps = 05
job_notex = 06
lock_failed = 07
others = 99.
***This is the second program which will run in background
REPORT ZSDQ_BCK_TEST .
TYPES: BEGIN OF TY_ADRC,
HOUSE_NUM1 LIKE ADRC-HOUSE_NUM1,
NAME3 LIKE ADRC-NAME3,
NAME4 LIKE ADRC-NAME4,
LOCATION LIKE ADRC-LOCATION,
END OF TY_ADRC.
DATA: IT_ADRC TYPE STANDARD TABLE OF TY_ADRC WITH HEADER LINE.
Parameters: p_type type c.
START-OF-SELECTION.
SELECT HOUSE_NUM1
NAME3
NAME4
LOCATION
UP TO 40000 rows
FROM ADRC
INTO TABLE IT_ADRC.
WHERE ADDRNUMBER = '0000022423'.
IF SY-SUBRC = 0.
LOOP AT IT_ADRC.
WRITE:/ IT_ADRC-HOUSE_NUM1, IT_ADRC-NAME3.
ENDLOOP.
write:/ p_type.
ENDIF.
02-13-2008 7:25 AM
See the following simple prog to schedule in background.
You cannot schedule the subroutine i.e perform to run in background job. Instead write the subroutine in another program.
to pass any value to that program, declare selection screen parameter and pass the value from the first one using submit.
Job open
call function 'JOB_OPEN'
exporting
delanfrep = ' '
jobgroup = ' '
jobname = jobname
*sdlstrtdt = sy-datum
*sdlstrttm = sy-uzeit
importing
jobcount = jobcount
exceptions
cant_create_job = 01
invalid_job_data = 02
jobname_missing = 03.
if sy-subrc ne 0.
write:/ 'error in opening a job'.
endif.
Insert process into job
SUBMIT ZSDQ_BCK_TEST
and return
with p_type = 'F' "Selection screen Parameter
user sy-uname
via job jobname
number jobcount.
if sy-subrc > 0.
WRITE:/ 'ERROR PROCESSING JOB'.
endif.
Close job
call function 'JOB_CLOSE'
exporting
*event_id = starttime-eventid
*event_param = starttime-eventparm
*event_periodic = starttime-periodic
jobcount = jobcount
jobname = jobname
*laststrtdt = starttime-laststrtdt
*laststrttm = starttime-laststrttm
*prddays = 1
*prdhours = 0
*prdmins = 0
*prdmonths = 0
*prdweeks = 0
*sdlstrtdt = sdlstrtdt
*sdlstrttm = sdlstrttm
strtimmed = 'X'
*targetsystem = host
RECIPIENT_OBJ = RECIPIENT_OBJ
exceptions
cant_start_immediate = 01
invalid_startdate = 02
jobname_missing = 03
job_close_failed = 04
job_nosteps = 05
job_notex = 06
lock_failed = 07
others = 99.
***This is the second program which will run in background
REPORT ZSDQ_BCK_TEST .
TYPES: BEGIN OF TY_ADRC,
HOUSE_NUM1 LIKE ADRC-HOUSE_NUM1,
NAME3 LIKE ADRC-NAME3,
NAME4 LIKE ADRC-NAME4,
LOCATION LIKE ADRC-LOCATION,
END OF TY_ADRC.
DATA: IT_ADRC TYPE STANDARD TABLE OF TY_ADRC WITH HEADER LINE.
Parameters: p_type type c.
START-OF-SELECTION.
SELECT HOUSE_NUM1
NAME3
NAME4
LOCATION
UP TO 40000 rows
FROM ADRC
INTO TABLE IT_ADRC.
WHERE ADDRNUMBER = '0000022423'.
IF SY-SUBRC = 0.
LOOP AT IT_ADRC.
WRITE:/ IT_ADRC-HOUSE_NUM1, IT_ADRC-NAME3.
ENDLOOP.
write:/ p_type.
ENDIF.
02-13-2008 7:30 AM
Liu,
Suppose you have 2 programs.
First program for extrcting the data and second one for sending the mail.
CALL FUNCTION 'JOB_OPEN'
EXPORTING
JOBNAME = WA_TBTCJOB-JOBNAME
JOBCLASS = 'A'
IMPORTING
JOBCOUNT = WA_TBTCJOB-JOBCOUNT.
CALL FUNCTION 'JOB_SUBMIT'
EXPORTING
AUTHCKNAM = SY-UNAME
JOBCOUNT = JOB_NUMBER
JOBNAME = JOB_NAME
REPORT = PROG_NAME "Program2"
VARIANT = VAR_NAME
PRIPARAMS = PRINT_PARAMETERS
ARCPARAMS = ARC_PARAMETERS
EXCEPTIONS
OTHERS = 01.
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
JOBCOUNT = WA_TBTCJOB-JOBCOUNT
JOBNAME = WA_TBTCJOB-JOBNAME
SDLSTRTDT = SY-DATUM
SDLSTRTTM = WA_TBTCJOB-SDLSTRTTM
Don't forget to reward if useful...