04-20-2007 2:37 PM
Hi ,
I am trying to write code for open job , submit & close job.
I need to send 4 fields as parameters from program1 to the BGprogram.
Anyone please tell me the syntax for submit.I cun't find any syntax for this.
Thanks in advance,
04-20-2007 3:12 PM
Hi,
Please check this sample code.
CALL FUNCTION 'JOB_OPEN'
EXPORTING
JOBGROUP = V_JOBGROUP
JOBNAME = V_JOBNAME
SDLSTRTDT = SY-DATUM
SDLSTRTTM = SY-UZEIT
IMPORTING
JOBCOUNT = V_JOBCOUNT
EXCEPTIONS
CANT_CREATE_JOB = 1
INVALID_JOB_DATA = 2
JOBNAME_MISSING = 3
OTHERS = 4.
IF SY-SUBRC NE 0.
CLEAR WA_MESSAGE.
CONCATENATE TEXT-005 V_JOBNAME INTO WA_MESSAGE
SEPARATED BY SPACE.
MESSAGE S009(ZZSCMAPO) WITH WA_MESSAGE.
STOP.
ENDIF.
SUBMIT ZZAPOSSFCST_EXTRACTOR2
USER SY-UNAME
VIA JOB V_JOBNAME
NUMBER V_JOBCOUNT
WITH P_SOURCE EQ P_SOURCE "<--- Here submit with parameter1
WITH P_REQUNR EQ P_REQUNR "<--- Here submit with parameter2
WITH P_SIZE EQ P_SIZE "<--- Here submit with parameter3
WITH P_CALLS EQ P_CALLS "<--- Here submit with parameter4
AND RETURN.
IF SY-SUBRC NE 0.
CLEAR WA_MESSAGE.
CONCATENATE TEXT-006 V_JOBNAME INTO WA_MESSAGE
SEPARATED BY PACE.
MESSAGE S009(ZZSCMAPO) WITH WA_MESSAGE.
STOP.
ENDIF.
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
JOBCOUNT = V_JOBCOUNT
JOBNAME = V_JOBNAME
STRTIMMED = 'X'
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 NE 0.
CLEAR WA_MESSAGE.
CONCATENATE TEXT-007 V_JOBNAME INTO WA_MESSAGE
SEPARATED BY SPACE.
MESSAGE S009(ZZSCMAPO) WITH WA_MESSAGE.
STOP.
ENDIF.
Regards,
Ferry Lianto
04-20-2007 2:45 PM
..Create new job
CONCATENATE lc_job_prefix l_pr_count
INTO l_job_name SEPARATED BY '_'
.
CALL FUNCTION 'JOB_OPEN'
EXPORTING
jobname = l_job_name
IMPORTING
jobcount = l_job_count
EXCEPTIONS
cant_create_job = 1
invalid_job_data = 2
jobname_missing = 3
OTHERS = 4
.
IF sy-subrc <> 0.
....Error creating job
IF NOT sy-msgid IS INITIAL.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
MESSAGE s000(zz) WITH
'Failed to create job'(021)
l_job_name
.
ENDIF.
ELSE.
....Submit job {
MESSAGE s000(zz) WITH
'Creating job'(022) l_job_name l_job_count '...'
INTO l_msgtx
.
PERFORM show_progress USING l_msgtx 0 1.
IF v_sort = 'X'.
SUBMIT (sy-cprog)
WITH s_pernr BETWEEN l_pernr_min AND l_pernr_max
WITH s_g_ctrl IN r_cs_ctrl
WITH s_g_land IN r_cs_land
WITH s_g_gs IN r_cs_gs
VIA JOB l_job_name NUMBER l_job_count
TO SAP-SPOOL SPOOL PARAMETERS l_print_parm
ARCHIVE PARAMETERS l_archive
WITHOUT SPOOL DYNPRO
AND RETURN
.
ELSE.
SUBMIT (sy-cprog)
WITH s_pernr BETWEEN l_pernr_min AND l_pernr_max
WITH s_g_lub IN r_cs_lub
WITH s_g_pro IN r_cs_pro
WITH s_g_pub IN r_cs_pub
VIA JOB l_job_name NUMBER l_job_count
TO SAP-SPOOL SPOOL PARAMETERS l_print_parm
ARCHIVE PARAMETERS l_archive
WITHOUT SPOOL DYNPRO
AND RETURN
.
ENDIF.
....Start immediately
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
jobcount = l_job_count
jobname = l_job_name
strtimmed = true
EXCEPTIONS
cant_start_immediate = 1
invalid_startdate = 2
jobname_missing = 3
job_close_failed = 4
job_nosteps = 5
job_notex = 6
lock_failed = 7
OTHERS = 8
.
IF sy-subrc <> 0.
IF NOT sy-msgid IS INITIAL.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
MESSAGE s000(zz) WITH
'Error releasing job'(023)
l_job_name
l_job_count
.
ENDIF.
ELSE.
MESSAGE s000(zz) WITH
'Job released'(024) l_job_name l_job_count
INTO l_msgtx
.
PERFORM show_progress USING l_msgtx 0 1.
ENDIF.
....} Submit job
ENDIF.
..Increment process count
ADD 1 TO l_pr_count.
ENDDO.
*
MESSAGE s000(zz) WITH l_pr_count 'job(s) created.'(025).
04-20-2007 2:58 PM
Hi ,
Can you please explain ...or please give me the syntax for passing 4 fields...I am not able to understand you code.
Thanks in advance
04-20-2007 3:12 PM
Hi,
Please check this sample code.
CALL FUNCTION 'JOB_OPEN'
EXPORTING
JOBGROUP = V_JOBGROUP
JOBNAME = V_JOBNAME
SDLSTRTDT = SY-DATUM
SDLSTRTTM = SY-UZEIT
IMPORTING
JOBCOUNT = V_JOBCOUNT
EXCEPTIONS
CANT_CREATE_JOB = 1
INVALID_JOB_DATA = 2
JOBNAME_MISSING = 3
OTHERS = 4.
IF SY-SUBRC NE 0.
CLEAR WA_MESSAGE.
CONCATENATE TEXT-005 V_JOBNAME INTO WA_MESSAGE
SEPARATED BY SPACE.
MESSAGE S009(ZZSCMAPO) WITH WA_MESSAGE.
STOP.
ENDIF.
SUBMIT ZZAPOSSFCST_EXTRACTOR2
USER SY-UNAME
VIA JOB V_JOBNAME
NUMBER V_JOBCOUNT
WITH P_SOURCE EQ P_SOURCE "<--- Here submit with parameter1
WITH P_REQUNR EQ P_REQUNR "<--- Here submit with parameter2
WITH P_SIZE EQ P_SIZE "<--- Here submit with parameter3
WITH P_CALLS EQ P_CALLS "<--- Here submit with parameter4
AND RETURN.
IF SY-SUBRC NE 0.
CLEAR WA_MESSAGE.
CONCATENATE TEXT-006 V_JOBNAME INTO WA_MESSAGE
SEPARATED BY PACE.
MESSAGE S009(ZZSCMAPO) WITH WA_MESSAGE.
STOP.
ENDIF.
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
JOBCOUNT = V_JOBCOUNT
JOBNAME = V_JOBNAME
STRTIMMED = 'X'
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 NE 0.
CLEAR WA_MESSAGE.
CONCATENATE TEXT-007 V_JOBNAME INTO WA_MESSAGE
SEPARATED BY SPACE.
MESSAGE S009(ZZSCMAPO) WITH WA_MESSAGE.
STOP.
ENDIF.
Regards,
Ferry Lianto
04-20-2007 3:23 PM
SUBMIT ztestjob USER sy-uname
VIA JOB p_jobname
NUMBER p_jobcount
p_matnr eq p_matnr
AND RETURN.
This is my code and I get an error " The addition "VIA JOB" only makes sense with addition "AND RETURN".
Can anyone solve this ASAP?
04-20-2007 3:28 PM
04-20-2007 3:22 PM
Hi,
Use JOB_SUBMIT to add a job step to a background job that you have opened with JOB_OPEN.
A job step is an independent unit of work in a job, the execution of an ABAP or external program. Each job step can have its own authorizations user and printer/optical archiving specifications.
Related function modules include:
JOB_OPEN: Create a background job.
JOB_CLOSE: Submit a background job to the background processing system for execution.
For more information, please see the online documentation in the function module facility (transaction SE37)
Regards
Sudheer
04-20-2007 3:33 PM
Hi,
You are missing 'WITH'.
SUBMIT ztestjob USER sy-uname
VIA JOB p_jobname
NUMBER p_jobcount
WITH p_matnr eq p_matnr "<--- change here
AND RETURN.
Regards,
Ferry Lianto