You are on page 1of 6

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 report
DATA: 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 report
SUBMIT zreport with p_param1 = 'value'
with p_param2 = 'value'.
*Submit report and return to current program afterwards
SUBMIT 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 but export resultant list to memory, rather than


*it being displayed on screen
SUBMIT zreport EXPORTING LIST TO MEMORY.
* Once report has finished and control has returned to calling
* program, use function modules LIST_FROM_MEMORY, WRITE_LIST and
* DISPLAY_LIST to retrieve and display report.

*Example Code (Retrieving list from memory)


DATA BEGIN OF itab_list OCCURS 0.
INCLUDE STRUCTURE abaplist.
DATA END OF itab_list.

DATA: BEGIN OF vlist OCCURS 0,


filler1(01) TYPE c,
field1(06) TYPE c,
filler(08) TYPE c,
field2(10) TYPE c,
filler3(01) TYPE c,
field3(10) TYPE c,
filler4(01) TYPE c,
field4(3) TYPE c,
filler5(02) TYPE c,
field5(15) TYPE c,
filler6(02) TYPE c,
field6(30) TYPE c,
filler7(43) TYPE c,
field7(10) TYPE c,
END OF vlist.

SUBMIT zreport EXPORTING LIST TO MEMORY.

CALL FUNCTION 'LIST_FROM_MEMORY'


TABLES
listobject = itab_list
EXCEPTIONS
not_found = 4
OTHERS = 8.

CALL FUNCTION 'LIST_TO_ASCI'


EXPORTING
list_index = -1
TABLES
listasci = vlist
listobject = itab_list
EXCEPTIONS
empty_list = 1
list_index_invalid = 2
OTHERS = 3.

IF sy-subrc NE '0'.
WRITE:/ 'LIST_TO_ASCI error !! ', sy-subrc.
ENDIF.
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.

You might also like