Execute ABAP Report using the SUBMIT statementThe SUBMIT ABAP statement executes a report. i.e. you could have an ALV which when the user clicks on a button or presses a specific key executes a second report to display further details or performs some other functionality. Can only execute reports of type '1'. *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 report and return to current program afterwardsSUBMIT zreport AND RETURN. *Submit report via its own selection screenSUBMIT zreport VIA SELECTION-SCREEN. *Submit report using selection screen variantSUBMIT zreport USING SELECTION-SET 'VARIANT1'. *Submit report but export resultant list to memory, rather than *it being displayed on screen 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.
|
||||||||