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

How to create a batch job through coding

Former Member
0 Likes
1,251

Hi Experts,

How to create a batch job through coding?

Regards

Saroj

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
913

Hi, below is the code.

***Create Variant for the job

***Get the dynamic variant name

DATA: variant_name TYPE varid-variant value 'test'.

.

DATA: vari_desc LIKE varid,

vari_contents LIKE rsparams OCCURS 0 WITH HEADER LINE,

vari_text LIKE varit OCCURS 0 WITH HEADER LINE.

CLEAR: vari_desc,vari_contents,vari_text.

REFRESH: vari_contents[], vari_text[].

vari_desc-mandt = sy-mandt.

vari_desc-report = 'ZCTRAOBJECT_CAL_FILEDAMT_JOB'.

vari_desc-variant = variant_name.

vari_desc-transport = 'F'.

vari_desc-environmnt = 'A'.

vari_desc-version = 1.

vari_desc-mlangu = sy-langu.

***Varint Text

vari_text-mandt = sy-mandt.

vari_text-langu = sy-langu.

vari_text-report = 'ZCTRAOBJECT_CAL_FILEDAMT_JOB'.

vari_text-variant = variant_name.

CONCATENATE 'job' 'Background' INTO vari_text-vtext SEPARATED BY space.

APPEND vari_text.

***Partner

IF ( p_partner-low IS NOT INITIAL ).

vari_contents-selname = 'PARTNER'.

vari_contents-kind = 'S'.

vari_contents-sign = 'I'.

IF ( ( p_partner-low IS NOT INITIAL ) AND ( p_partner-high IS INITIAL ) ).

vari_contents-option = 'EQ'.

vari_contents-low = p_partner-low.

ENDIF.

IF ( ( p_partner-low IS NOT INITIAL ) AND ( p_partner-high IS NOT INITIAL ) ).

vari_contents-option = 'BT'.

vari_contents-low = p_partner-low.

vari_contents-high = p_partner-high.

ENDIF.

APPEND vari_contents.

ENDIF.

***Contract Account

IF ( p_cont_acct-low IS NOT INITIAL ).

vari_contents-selname = 'CA_ACC'.

vari_contents-kind = 'S'.

vari_contents-sign = 'I'.

IF ( ( p_cont_acct-low IS NOT INITIAL ) AND ( p_cont_acct-high IS INITIAL ) ).

vari_contents-option = 'EQ'.

vari_contents-low = p_cont_acct-low.

ENDIF.

IF ( ( p_cont_acct-low IS NOT INITIAL ) AND ( p_cont_acct-high IS NOT INITIAL ) ).

vari_contents-option = 'BT'.

vari_contents-low = p_cont_acct-low.

vari_contents-high = p_cont_acct-high.

ENDIF.

APPEND vari_contents.

ENDIF.

***Contract Object

IF ( p_cont_obj-low IS NOT INITIAL ).

vari_contents-selname = 'CO_OBJ'.

vari_contents-kind = 'S'.

vari_contents-sign = 'I'.

IF ( ( p_cont_obj-low IS NOT INITIAL ) AND ( p_cont_obj-high IS INITIAL ) ).

vari_contents-option = 'EQ'.

vari_contents-low = p_cont_obj-low.

ENDIF.

IF ( ( p_cont_obj-low IS NOT INITIAL ) AND ( p_cont_obj-high IS NOT INITIAL ) ).

vari_contents-option = 'BT'.

vari_contents-low = p_cont_obj-low.

vari_contents-high = p_cont_obj-high.

ENDIF.

APPEND vari_contents.

ENDIF.

***Account Category

IF ( p_ctra_acc_category IS NOT INITIAL ).

vari_contents-selname = 'P_CAT'.

vari_contents-kind = 'P'.

vari_contents-low = p_ctra_acc_category.

APPEND vari_contents.

ENDIF.

***filed_freq_to_change_from

IF ( p_filed_freq_to_change_from IS NOT INITIAL ).

vari_contents-selname = 'P_TO_CH'.

vari_contents-kind = 'P'.

vari_contents-low = p_filed_freq_to_change_from.

APPEND vari_contents.

ENDIF.

***req_filed_freq_change

IF ( p_req_filed_freq_change IS NOT INITIAL ).

vari_contents-selname = 'P_CHANGE'.

vari_contents-kind = 'P'.

vari_contents-low = p_req_filed_freq_change.

APPEND vari_contents.

ENDIF.

***Test Run p_tstrun

vari_contents-selname = 'P_TSTRUN'.

vari_contents-kind = 'P'.

vari_contents-low = p_test_run.

APPEND vari_contents.

***Update Filing Frequency Checkbox

vari_contents-selname = 'P_FIL_FR'.

vari_contents-kind = 'P'.

vari_contents-low = p_update_filing_frequency.

APPEND vari_contents.

***Update Incoming Payment Channel Checkbox

vari_contents-selname = 'P_PAY_CH'.

vari_contents-kind = 'P'.

vari_contents-low = p_update_payment_channel.

APPEND vari_contents.

***Update Filing Channel Checkbox

vari_contents-selname = 'P_FIL_CH'.

vari_contents-kind = 'P'.

vari_contents-low = p_update_filing_channel.

APPEND vari_contents.

***Use Current Filing Period Checkbox

vari_contents-selname = 'P_CU_PER'.

vari_contents-kind = 'P'.

vari_contents-low = use_curr_per.

APPEND vari_contents.

****Create Variant thru Function Module

CALL FUNCTION 'RS_CREATE_VARIANT'

EXPORTING

curr_report = 'ZCTRAOBJECT_CAL_FILEDAMT_JOB'

curr_variant = variant_name

vari_desc = vari_desc

TABLES

vari_contents = vari_contents

vari_text = vari_text.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

****Prepare all the date for scheduling job

***Get the print parameters

DATA: params LIKE pri_params.

CLEAR params.

CALL FUNCTION 'GET_PRINT_PARAMETERS'

EXPORTING

mode = 'CURRENT'

no_dialog = 'X'

IMPORTING

out_parameters = params.

params-paart = 'X_65_255'."'X_PAPER'.

***Open The scheduling job

DATA: job LIKE tbtcjob-jobname,

jobcount LIKE tbtcjob-jobcount.

CLEAR: job,jobcount.

job = 'ZCTRAOBJECT_CAL_FILEDAMT_JOB'.

CALL FUNCTION 'JOB_OPEN'

EXPORTING

jobname = job

IMPORTING

jobcount = jobcount

EXCEPTIONS

OTHERS = 4.

***Job Submit

DATA: authcknam LIKE tbtcjob-authcknam.

CLEAR: authcknam.

authcknam = sy-uname.

params-primm = space.

CALL FUNCTION 'JOB_SUBMIT'

EXPORTING

authcknam = authcknam

jobcount = jobcount

jobname = job

priparams = params

report = 'ZCTRAOBJECT_CAL_FILEDAMT_JOB'

variant = variant_name.

***JOB_CLOSE

DATA: sdlstrttm TYPE tbtcjob-sdlstrttm,

released LIKE btch0000-char1.

sdlstrttm = p_job_start_time + 30.

CALL FUNCTION 'JOB_CLOSE'

EXPORTING

sdlstrtdt = p_job_start_date

sdlstrttm = sdlstrttm

jobcount = jobcount

jobname = job

IMPORTING

job_was_released = released.

Regs

Manas

5 REPLIES 5
Read only

Former Member
0 Likes
913

Hi Saroj,

All function modules needed to do this can be found in function group BTCH.

Regards,

John.

Read only

Former Member
0 Likes
913

Hi,

Use include bdcrecx1 in your report.

Regards.

Read only

Former Member
0 Likes
913

Hello,

Either you can record SM 36 in SHDB and then create gob via BDC or you can use FM BP_JOB_CREATE.

Regards

Saket Sharma

Read only

former_member188829
Active Contributor
0 Likes
913

Hi,

Through FM:JOB_OPEN

JOB_CLOSE..

Read only

Former Member
0 Likes
914

Hi, below is the code.

***Create Variant for the job

***Get the dynamic variant name

DATA: variant_name TYPE varid-variant value 'test'.

.

DATA: vari_desc LIKE varid,

vari_contents LIKE rsparams OCCURS 0 WITH HEADER LINE,

vari_text LIKE varit OCCURS 0 WITH HEADER LINE.

CLEAR: vari_desc,vari_contents,vari_text.

REFRESH: vari_contents[], vari_text[].

vari_desc-mandt = sy-mandt.

vari_desc-report = 'ZCTRAOBJECT_CAL_FILEDAMT_JOB'.

vari_desc-variant = variant_name.

vari_desc-transport = 'F'.

vari_desc-environmnt = 'A'.

vari_desc-version = 1.

vari_desc-mlangu = sy-langu.

***Varint Text

vari_text-mandt = sy-mandt.

vari_text-langu = sy-langu.

vari_text-report = 'ZCTRAOBJECT_CAL_FILEDAMT_JOB'.

vari_text-variant = variant_name.

CONCATENATE 'job' 'Background' INTO vari_text-vtext SEPARATED BY space.

APPEND vari_text.

***Partner

IF ( p_partner-low IS NOT INITIAL ).

vari_contents-selname = 'PARTNER'.

vari_contents-kind = 'S'.

vari_contents-sign = 'I'.

IF ( ( p_partner-low IS NOT INITIAL ) AND ( p_partner-high IS INITIAL ) ).

vari_contents-option = 'EQ'.

vari_contents-low = p_partner-low.

ENDIF.

IF ( ( p_partner-low IS NOT INITIAL ) AND ( p_partner-high IS NOT INITIAL ) ).

vari_contents-option = 'BT'.

vari_contents-low = p_partner-low.

vari_contents-high = p_partner-high.

ENDIF.

APPEND vari_contents.

ENDIF.

***Contract Account

IF ( p_cont_acct-low IS NOT INITIAL ).

vari_contents-selname = 'CA_ACC'.

vari_contents-kind = 'S'.

vari_contents-sign = 'I'.

IF ( ( p_cont_acct-low IS NOT INITIAL ) AND ( p_cont_acct-high IS INITIAL ) ).

vari_contents-option = 'EQ'.

vari_contents-low = p_cont_acct-low.

ENDIF.

IF ( ( p_cont_acct-low IS NOT INITIAL ) AND ( p_cont_acct-high IS NOT INITIAL ) ).

vari_contents-option = 'BT'.

vari_contents-low = p_cont_acct-low.

vari_contents-high = p_cont_acct-high.

ENDIF.

APPEND vari_contents.

ENDIF.

***Contract Object

IF ( p_cont_obj-low IS NOT INITIAL ).

vari_contents-selname = 'CO_OBJ'.

vari_contents-kind = 'S'.

vari_contents-sign = 'I'.

IF ( ( p_cont_obj-low IS NOT INITIAL ) AND ( p_cont_obj-high IS INITIAL ) ).

vari_contents-option = 'EQ'.

vari_contents-low = p_cont_obj-low.

ENDIF.

IF ( ( p_cont_obj-low IS NOT INITIAL ) AND ( p_cont_obj-high IS NOT INITIAL ) ).

vari_contents-option = 'BT'.

vari_contents-low = p_cont_obj-low.

vari_contents-high = p_cont_obj-high.

ENDIF.

APPEND vari_contents.

ENDIF.

***Account Category

IF ( p_ctra_acc_category IS NOT INITIAL ).

vari_contents-selname = 'P_CAT'.

vari_contents-kind = 'P'.

vari_contents-low = p_ctra_acc_category.

APPEND vari_contents.

ENDIF.

***filed_freq_to_change_from

IF ( p_filed_freq_to_change_from IS NOT INITIAL ).

vari_contents-selname = 'P_TO_CH'.

vari_contents-kind = 'P'.

vari_contents-low = p_filed_freq_to_change_from.

APPEND vari_contents.

ENDIF.

***req_filed_freq_change

IF ( p_req_filed_freq_change IS NOT INITIAL ).

vari_contents-selname = 'P_CHANGE'.

vari_contents-kind = 'P'.

vari_contents-low = p_req_filed_freq_change.

APPEND vari_contents.

ENDIF.

***Test Run p_tstrun

vari_contents-selname = 'P_TSTRUN'.

vari_contents-kind = 'P'.

vari_contents-low = p_test_run.

APPEND vari_contents.

***Update Filing Frequency Checkbox

vari_contents-selname = 'P_FIL_FR'.

vari_contents-kind = 'P'.

vari_contents-low = p_update_filing_frequency.

APPEND vari_contents.

***Update Incoming Payment Channel Checkbox

vari_contents-selname = 'P_PAY_CH'.

vari_contents-kind = 'P'.

vari_contents-low = p_update_payment_channel.

APPEND vari_contents.

***Update Filing Channel Checkbox

vari_contents-selname = 'P_FIL_CH'.

vari_contents-kind = 'P'.

vari_contents-low = p_update_filing_channel.

APPEND vari_contents.

***Use Current Filing Period Checkbox

vari_contents-selname = 'P_CU_PER'.

vari_contents-kind = 'P'.

vari_contents-low = use_curr_per.

APPEND vari_contents.

****Create Variant thru Function Module

CALL FUNCTION 'RS_CREATE_VARIANT'

EXPORTING

curr_report = 'ZCTRAOBJECT_CAL_FILEDAMT_JOB'

curr_variant = variant_name

vari_desc = vari_desc

TABLES

vari_contents = vari_contents

vari_text = vari_text.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

****Prepare all the date for scheduling job

***Get the print parameters

DATA: params LIKE pri_params.

CLEAR params.

CALL FUNCTION 'GET_PRINT_PARAMETERS'

EXPORTING

mode = 'CURRENT'

no_dialog = 'X'

IMPORTING

out_parameters = params.

params-paart = 'X_65_255'."'X_PAPER'.

***Open The scheduling job

DATA: job LIKE tbtcjob-jobname,

jobcount LIKE tbtcjob-jobcount.

CLEAR: job,jobcount.

job = 'ZCTRAOBJECT_CAL_FILEDAMT_JOB'.

CALL FUNCTION 'JOB_OPEN'

EXPORTING

jobname = job

IMPORTING

jobcount = jobcount

EXCEPTIONS

OTHERS = 4.

***Job Submit

DATA: authcknam LIKE tbtcjob-authcknam.

CLEAR: authcknam.

authcknam = sy-uname.

params-primm = space.

CALL FUNCTION 'JOB_SUBMIT'

EXPORTING

authcknam = authcknam

jobcount = jobcount

jobname = job

priparams = params

report = 'ZCTRAOBJECT_CAL_FILEDAMT_JOB'

variant = variant_name.

***JOB_CLOSE

DATA: sdlstrttm TYPE tbtcjob-sdlstrttm,

released LIKE btch0000-char1.

sdlstrttm = p_job_start_time + 30.

CALL FUNCTION 'JOB_CLOSE'

EXPORTING

sdlstrtdt = p_job_start_date

sdlstrttm = sdlstrttm

jobcount = jobcount

jobname = job

IMPORTING

job_was_released = released.

Regs

Manas