SAP Help Source code to demostrate the submit statement, which allows you to execute an ABAP report from within another ABAP report
Execute ABAP Report using the SUBMIT statement
The SUBMIT ABAP statement is use to execute a report or program from within your ABAP code.
For example from within an ALV output report a user may be able to click
on a button or press a specific key. This action could then execute a second report to display further details or
perform some additional functionality. Please note you can only execute reports of type '1' (i.e. executable).
*Code used to execute a report SUBMIT Zreport.
*Code used to populate 'select-options' & execute reportDATA: seltab type table of rsparams, seltab_wa like line of seltab. seltab_wa-selname = 'PNPPERNR'. seltab_wa-sign = 'I'. seltab_wa-option = 'EQ'. * load each personnel number accessed from the structure into * parameters to be used in the report loop at pnppernr. seltab_wa-low = pnppernr-low. append seltab_wa to seltab. endloop. SUBMIT zreport with selection-table seltab via selection-screen.
*Code used to populate 'parameters' & execute reportSUBMIT zreport with p_param1 = 'value' with p_param2 = 'value'.
*Submit report and return to current program afterwardsSUBMIT zreport AND RETURN. *Submit report via its own selection screen SUBMIT zreport VIA SELECTION-SCREEN. *Submit report using selection screen variant SUBMIT zreport USING SELECTION-SET 'VARIANT1'.
Submit report as job(i.e. in background) data: jobname like tbtcjob-jobname value 'TRANSFER DATA'. data: jobcount like tbtcjob-jobcount, host like msxxlist-host. data: begin of starttime. include structure tbtcstrt. data: end of starttime. data: starttimeimmediate like btch0000-char1 value 'X'. * 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. "error processing endif. * Insert process into job SUBMIT zreport and return with p_param1 = 'value' with p_param2 = 'value' user sy-uname via job jobname number jobcount. if sy-subrc > 0. "error processing endif. * Close job starttime-sdlstrtdt = sy-datum + 1. starttime-sdlstrttm = '220000'. 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 = starttime-sdlstrtdt " sdlstrttm = starttime-sdlstrttm strtimmed = starttimeimmediate " targetsystem = host 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. if sy-subrc eq 0. "error processing endif.
Submit report as background job, handle spool output(write commands) and run as different user data: jobname type tbtcjob-jobname value 'JOBNAME'. data: jobcount type tbtcjob-jobcount, host type msxxlist-host. data: starttimeimmediate type btch0000-char1 value 'X', print_parameters TYPE pri_params. DATA: seltab type table of rsparams, seltab_wa like line of seltab, ld_pernr type pernr-pernr. seltab_wa-selname = 'SO_PERNR'. seltab_wa-sign = 'I'. seltab_wa-option = 'EQ'. seltab_wa-low = ld_pernr. append seltab_wa to seltab. * 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. *Setup print parameters *Only values used in example are to tell it not to print immediately *and not display a print dialog box) CALL FUNCTION 'GET_PRINT_PARAMETERS' EXPORTING * ARCHIVE_ID = C_CHAR_UNKNOWN * ARCHIVE_INFO = C_CHAR_UNKNOWN * ARCHIVE_MODE = C_CHAR_UNKNOWN * ARCHIVE_TEXT = C_CHAR_UNKNOWN * AR_OBJECT = C_CHAR_UNKNOWN * ARCHIVE_REPORT = C_CHAR_UNKNOWN * AUTHORITY = C_CHAR_UNKNOWN * COPIES = C_NUM3_UNKNOWN * COVER_PAGE = C_CHAR_UNKNOWN * DATA_SET = C_CHAR_UNKNOWN * DEPARTMENT = C_CHAR_UNKNOWN * DESTINATION = C_CHAR_UNKNOWN * EXPIRATION = C_NUM1_UNKNOWN IMMEDIATELY = ' ' " leave blank so is not sent to print * IN_ARCHIVE_PARAMETERS = ' ' * IN_PARAMETERS = ' ' * LAYOUT = C_CHAR_UNKNOWN * LINE_COUNT = C_INT_UNKNOWN * LINE_SIZE = C_INT_UNKNOWN * LIST_NAME = C_CHAR_UNKNOWN * LIST_TEXT = C_CHAR_UNKNOWN * MODE = ' ' * NEW_LIST_ID = C_CHAR_UNKNOWN * PROTECT_LIST = C_CHAR_UNKNOWN NO_DIALOG = 'X' * RECEIVER = C_CHAR_UNKNOWN * RELEASE = C_CHAR_UNKNOWN * REPORT = C_CHAR_UNKNOWN * SAP_COVER_PAGE = C_CHAR_UNKNOWN * HOST_COVER_PAGE = C_CHAR_UNKNOWN * PRIORITY = C_NUM1_UNKNOWN * SAP_OBJECT = C_CHAR_UNKNOWN * TYPE = C_CHAR_UNKNOWN * USER = SY-UNAME * USE_OLD_LAYOUT = ' ' * UC_DISPLAY_MODE = C_CHAR_UNKNOWN * DRAFT = C_CHAR_UNKNOWN * ABAP_LIST = ' ' * USE_ARCHIVENAME_DEF = ' ' * DEFAULT_SPOOL_SIZE = C_CHAR_UNKNOWN * WITH_STRUCTURE = C_CHAR_UNKNOWN * SUPPRESS_SHADING = C_CHAR_UNKNOWN * PO_FAX_STORE = ' ' * NO_FRAMES = C_CHAR_UNKNOWN IMPORTING * OUT_ARCHIVE_PARAMETERS = OUT_PARAMETERS = print_parameters * VALID = * VALID_FOR_SPOOL_CREATION = EXCEPTIONS ARCHIVE_INFO_NOT_FOUND = 1 INVALID_PRINT_PARAMS = 2 INVALID_ARCHIVE_PARAMS = 3 OTHERS = 4. *Execute abap program ZTESTREP in background job storing any output to spool submit ZTESTREP to sap-spool and return with selection-table seltab user 'ADMIN' "user name with correct/additional authorisation SPOOL PARAMETERS print_parameters WITHOUT SPOOL DYNPRO via job jobname number jobcount. * Close job call function 'JOB_CLOSE' EXPORTING jobcount = jobcount jobname = jobname strtimmed = starttimeimmediate 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.