Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

how to set a program into backgroud job

Former Member
0 Kudos

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.

1 ACCEPTED SOLUTION

Former Member
0 Kudos

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.

2 REPLIES 2

Former Member
0 Kudos

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.

Former Member
0 Kudos

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...