Application Development and Automation 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: 
Read only

Job creation with variable variant parameters

Former Member
0 Likes
646

Hi,

Is it possible from a FM to start a job using a program where one sends the selection screen parameters with?

As the called FM calls the program with different parameteres each time.

If it is possible can someone please assist by giving an exsample?

Thanks in advance.

Best regards

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
593

Hi,

Check this eg.

This program will submit an another program in background mode as a job.

REPORT ZACE1031_ROUTING_CONV_TRG NO STANDARD PAGE HEADING

LINE-COUNT 255(1)

LINE-SIZE 255.

TYPES: BEGIN OF x_mat,

werks TYPE mast-werks,

matnr TYPE mast-matnr,

stlal TYPE mast-stlal,

stlnr TYPE mast-stlnr,

stlan TYPE mast-stlan,

END OF x_mat.

DATA: v_params TYPE pri_params,

v_jobname TYPE tbtcjob-jobname,

v_jobcount TYPE tbtcjob-jobcount VALUE 1,

v_stringlen TYPE i VALUE 0,

v_msg_string(50) TYPE c,

v_prog(30) TYPE c,

c_cross(1) TYPE c VALUE 'X',

c_01(2) TYPE c VALUE '01',

c_trg(1) TYPE c VALUE 'X'. "CCT51576

DATA : it_mat TYPE TABLE OF x_mat,

wa_mat type x_mat.

DATA : v_werks TYPE mast-werks,

v_pre_werks TYPE mast-werks.

RANGES: r_matnr FOR mara-matnr.

TABLES : mkal,mast.

SELECTION-SCREEN BEGIN OF BLOCK matnr

WITH FRAME TITLE text-001.

SELECT-OPTIONS : so_matnr FOR mast-matnr.

SELECTION-SCREEN END OF BLOCK matnr.

SELECTION-SCREEN BEGIN OF BLOCK plant

WITH FRAME TITLE text-002.

SELECT-OPTIONS : so_werks FOR mast-werks OBLIGATORY .

SELECTION-SCREEN SKIP.

PARAMETERS : p_date TYPE datuv OBLIGATORY. "CCT51576

SELECTION-SCREEN END OF BLOCK plant.

INITIALIZATION. "CCT51576

CONCATENATE sy-datum+0(4) c_01 c_01 INTO p_date.

AT SELECTION-SCREEN.

START-OF-SELECTION.

SELECT bwerks bmatnr bstlnr bstlal b~stlan

INTO CORRESPONDING FIELDS OF TABLE it_mat

FROM mara AS a

INNER JOIN mast AS b

ON bmatnr = amatnr

WHERE a~matnr IN so_matnr

AND b~werks IN so_werks

AND ( a~mtart = 'FD')

  • AND b~stlan = 1. "CCT53428

AND b~stlan IN (1,2). "CCT53428

IF sy-subrc = 0.

  • SORT it_mat by werks matnr. "CCT53428

  • DELETE ADJACENT DUPLICATES FROM it_mat COMPARING werks matnr."CCT53428

SORT it_mat BY matnr werks stlan stlal ASCENDING. "CCT53428

DELETE ADJACENT DUPLICATES FROM it_mat COMPARING matnr werks stlan. "CCT53428

SORT it_mat BY matnr werks stlan DESCENDING. "CCT53428

DELETE ADJACENT DUPLICATES FROM it_mat COMPARING matnr werks. "CCT53428

SORT it_mat BY werks.

LOOP AT it_mat into wa_mat.

CLEAR : r_matnr.

r_matnr-sign = 'I'.

r_matnr-option = 'EQ'.

r_matnr-low = wa_mat-matnr.

APPEND r_matnr.

AT END OF werks.

CLEAR v_werks.

v_werks = wa_mat-werks.

CLEAR v_jobname.

CONCATENATE 'WWACSD12' '_' v_werks INTO v_jobname.

PERFORM f_open_job USING v_jobname.

PERFORM f_submit_job.

PERFORM f_job_close.

REFRESH r_matnr.

ENDAT.

ENDLOOP.

ELSE.

WRITE / text-017.

ENDIF.

&----


*& Form f_open_job

&----


  • Form to open the job with the particular job name

----


FORM f_open_job USING v_jobname TYPE any.

CALL FUNCTION 'JOB_OPEN'

EXPORTING

jobname = v_jobname

IMPORTING

jobcount = v_jobcount

EXCEPTIONS

OTHERS = 8.

IF sy-subrc NE 0.

WRITE: /3 v_werks,

11 text-008, v_jobname.

ENDIF.

ENDFORM. " f_open_job

&----


*& Form f_submit_job

&----


  • Form to submit the program (ZACC0014_COST_COLLECTORS_BDC) as job

----


FORM f_submit_job.

v_prog = text-016.

SUBMIT (v_prog) WITH so_matnr IN r_matnr

WITH p_werks EQ v_werks

WITH p_date EQ p_date "CCT51576

WITH ck_trg EQ c_trg

TO SAP-SPOOL

SPOOL PARAMETERS v_params

WITHOUT SPOOL DYNPRO

USER sy-uname VIA JOB v_jobname NUMBER v_jobcount

AND RETURN.

IF sy-subrc > 4.

WRITE: /3 v_werks,

11 text-009, v_jobname.

ENDIF.

ENDFORM. " f_submit_job

&----


*& Form f_job_close

&----


  • Form to close the job

----


FORM f_job_close.

CALL FUNCTION 'JOB_CLOSE'

EXPORTING

jobcount = v_jobcount

jobname = v_jobname

strtimmed = 'X' "start immediately

EXCEPTIONS

cant_start_immediate = 1.

  • Process various error conditions

CASE sy-subrc.

WHEN 0.

MOVE v_jobname TO v_msg_string.

CONDENSE v_msg_string.

v_stringlen = STRLEN( v_msg_string ).

WRITE ' created.' TO v_msg_string+v_stringlen.

WRITE :/3 v_werks,

11 v_msg_string.

WHEN OTHERS.

MOVE v_jobname TO v_msg_string.

CONDENSE v_msg_string.

v_stringlen = STRLEN( v_msg_string ).

WRITE 'create failed.' TO v_msg_string+v_stringlen.

WRITE :/3 v_werks,

11 v_msg_string.

ENDCASE.

ENDFORM. "f_job_close

Hi,

Is it possible from a FM to start a job using a program where one sends the selection screen parameters with?

As the called FM calls the program with different parameteres each time.

If it is possible can someone please assist by giving an exsample?

Thanks in advance.

Best regards

3 REPLIES 3
Read only

former_member222860
Active Contributor
0 Likes
593

Hi,

Check these FM

BP_JOB_SELECT

BAPI_XBP_JOB_SELECT

Read only

Former Member
0 Likes
593

Hi,

for job scheduling these fm are used

1.job_open , job_submit, job_close

and the parameters are stored in VARI table

Regards,

Madhu

Read only

Former Member
0 Likes
594

Hi,

Check this eg.

This program will submit an another program in background mode as a job.

REPORT ZACE1031_ROUTING_CONV_TRG NO STANDARD PAGE HEADING

LINE-COUNT 255(1)

LINE-SIZE 255.

TYPES: BEGIN OF x_mat,

werks TYPE mast-werks,

matnr TYPE mast-matnr,

stlal TYPE mast-stlal,

stlnr TYPE mast-stlnr,

stlan TYPE mast-stlan,

END OF x_mat.

DATA: v_params TYPE pri_params,

v_jobname TYPE tbtcjob-jobname,

v_jobcount TYPE tbtcjob-jobcount VALUE 1,

v_stringlen TYPE i VALUE 0,

v_msg_string(50) TYPE c,

v_prog(30) TYPE c,

c_cross(1) TYPE c VALUE 'X',

c_01(2) TYPE c VALUE '01',

c_trg(1) TYPE c VALUE 'X'. "CCT51576

DATA : it_mat TYPE TABLE OF x_mat,

wa_mat type x_mat.

DATA : v_werks TYPE mast-werks,

v_pre_werks TYPE mast-werks.

RANGES: r_matnr FOR mara-matnr.

TABLES : mkal,mast.

SELECTION-SCREEN BEGIN OF BLOCK matnr

WITH FRAME TITLE text-001.

SELECT-OPTIONS : so_matnr FOR mast-matnr.

SELECTION-SCREEN END OF BLOCK matnr.

SELECTION-SCREEN BEGIN OF BLOCK plant

WITH FRAME TITLE text-002.

SELECT-OPTIONS : so_werks FOR mast-werks OBLIGATORY .

SELECTION-SCREEN SKIP.

PARAMETERS : p_date TYPE datuv OBLIGATORY. "CCT51576

SELECTION-SCREEN END OF BLOCK plant.

INITIALIZATION. "CCT51576

CONCATENATE sy-datum+0(4) c_01 c_01 INTO p_date.

AT SELECTION-SCREEN.

START-OF-SELECTION.

SELECT bwerks bmatnr bstlnr bstlal b~stlan

INTO CORRESPONDING FIELDS OF TABLE it_mat

FROM mara AS a

INNER JOIN mast AS b

ON bmatnr = amatnr

WHERE a~matnr IN so_matnr

AND b~werks IN so_werks

AND ( a~mtart = 'FD')

  • AND b~stlan = 1. "CCT53428

AND b~stlan IN (1,2). "CCT53428

IF sy-subrc = 0.

  • SORT it_mat by werks matnr. "CCT53428

  • DELETE ADJACENT DUPLICATES FROM it_mat COMPARING werks matnr."CCT53428

SORT it_mat BY matnr werks stlan stlal ASCENDING. "CCT53428

DELETE ADJACENT DUPLICATES FROM it_mat COMPARING matnr werks stlan. "CCT53428

SORT it_mat BY matnr werks stlan DESCENDING. "CCT53428

DELETE ADJACENT DUPLICATES FROM it_mat COMPARING matnr werks. "CCT53428

SORT it_mat BY werks.

LOOP AT it_mat into wa_mat.

CLEAR : r_matnr.

r_matnr-sign = 'I'.

r_matnr-option = 'EQ'.

r_matnr-low = wa_mat-matnr.

APPEND r_matnr.

AT END OF werks.

CLEAR v_werks.

v_werks = wa_mat-werks.

CLEAR v_jobname.

CONCATENATE 'WWACSD12' '_' v_werks INTO v_jobname.

PERFORM f_open_job USING v_jobname.

PERFORM f_submit_job.

PERFORM f_job_close.

REFRESH r_matnr.

ENDAT.

ENDLOOP.

ELSE.

WRITE / text-017.

ENDIF.

&----


*& Form f_open_job

&----


  • Form to open the job with the particular job name

----


FORM f_open_job USING v_jobname TYPE any.

CALL FUNCTION 'JOB_OPEN'

EXPORTING

jobname = v_jobname

IMPORTING

jobcount = v_jobcount

EXCEPTIONS

OTHERS = 8.

IF sy-subrc NE 0.

WRITE: /3 v_werks,

11 text-008, v_jobname.

ENDIF.

ENDFORM. " f_open_job

&----


*& Form f_submit_job

&----


  • Form to submit the program (ZACC0014_COST_COLLECTORS_BDC) as job

----


FORM f_submit_job.

v_prog = text-016.

SUBMIT (v_prog) WITH so_matnr IN r_matnr

WITH p_werks EQ v_werks

WITH p_date EQ p_date "CCT51576

WITH ck_trg EQ c_trg

TO SAP-SPOOL

SPOOL PARAMETERS v_params

WITHOUT SPOOL DYNPRO

USER sy-uname VIA JOB v_jobname NUMBER v_jobcount

AND RETURN.

IF sy-subrc > 4.

WRITE: /3 v_werks,

11 text-009, v_jobname.

ENDIF.

ENDFORM. " f_submit_job

&----


*& Form f_job_close

&----


  • Form to close the job

----


FORM f_job_close.

CALL FUNCTION 'JOB_CLOSE'

EXPORTING

jobcount = v_jobcount

jobname = v_jobname

strtimmed = 'X' "start immediately

EXCEPTIONS

cant_start_immediate = 1.

  • Process various error conditions

CASE sy-subrc.

WHEN 0.

MOVE v_jobname TO v_msg_string.

CONDENSE v_msg_string.

v_stringlen = STRLEN( v_msg_string ).

WRITE ' created.' TO v_msg_string+v_stringlen.

WRITE :/3 v_werks,

11 v_msg_string.

WHEN OTHERS.

MOVE v_jobname TO v_msg_string.

CONDENSE v_msg_string.

v_stringlen = STRLEN( v_msg_string ).

WRITE 'create failed.' TO v_msg_string+v_stringlen.

WRITE :/3 v_werks,

11 v_msg_string.

ENDCASE.

ENDFORM. "f_job_close