*
* You have to execute Online as it uses the DOWNLOAD functions.
* This report takes another report as input, and captures the output
of
* that report. The output is then converted to PDF and
* saved to a local file. This shows how to use some of the PDF function
* modules, as well as an easy way to create PDF files
* Works in 4.6c
*
report zabap_2_pdf.
*-- TABLES
tables:
tsp01.
*-- STRUCTURES
data:
mstr_print_parms like pri_params,
mc_valid(1) type c,
mi_bytecount type i,
mi_length type
i,
mi_rqident like tsp01-rqident.
*-- INTERNAL TABLES
data:
mtab_pdf like tline occurs 0 with header
line,
mc_filename like rlgrap-filename.
*-- SELECTION SCREEN
parameters:
p_repid like sy-repid,
" Report to execute
p_linsz like sy-linsz default 132,
" Line size
p_paart like sy-paart default 'X_65_132'. " Paper
Format
start-of-selection.
concatenate 'c:\'
p_repid
'.pdf'
into mc_filename.
*-- Setup the Print Parmaters
call function 'GET_PRINT_PARAMETERS'
exporting
authority = space
copies = '1'
cover_page
= space
data_set = space
department
= space
destination
= space
expiration
= '1'
immediately
= space
in_archive_parameters
= space
in_parameters
= space
layout = space
mode = space
new_list_id
= 'X'
no_dialog = 'X'
user = sy-uname
importing
out_parameters
= mstr_print_parms
valid = mc_valid
exceptions
archive_info_not_found
= 1
invalid_print_params
= 2
invalid_archive_params
= 3
others = 4.
*-- Make sure that a printer destination has been set up
*-- If this is not done the PDF function module ABENDS
if mstr_print_parms-pdest = space.
mstr_print_parms-pdest = 'LOCL'.
endif.
*-- Explicitly set line width, and output format so that
*-- the PDF conversion comes out OK
mstr_print_parms-linsz = p_linsz.
mstr_print_parms-paart = p_paart.
submit (p_repid) to sap-spool without spool dynpro
spool parameters mstr_print_parms
via selection-screen
and return.
*-- Find out what the spool number is that was just created
perform get_spool_number using sy-repid
sy-uname
changing mi_rqident.
*-- Convert Spool to PDF
call function 'CONVERT_ABAPSPOOLJOB_2_PDF'
exporting
src_spoolid = mi_rqident
no_dialog = space
dst_device = mstr_print_parms-pdest
importing
pdf_bytecount
= mi_bytecount
tables
pdf
= mtab_pdf
exceptions
err_no_abap_spooljob
= 1
err_no_spooljob
= 2
err_no_permission
= 3
err_conv_not_possible
= 4
err_bad_destdevice
= 5
user_cancelled
= 6
err_spoolerror
= 7
err_temseerror
= 8
err_btcjob_open_failed
= 9
err_btcjob_submit_failed
= 10
err_btcjob_close_failed
= 11
others
= 12.
call function 'DOWNLOAD'
exporting
bin_filesize
= mi_bytecount
filename
= mc_filename
filetype
= 'BIN'
importing
act_filename
= mc_filename
tables
data_tab
= mtab_pdf.
*---------------------------------------------------------------------*
* FORM get_spool_number *
*---------------------------------------------------------------------*
* Get the most recent spool created
by user/report
*
*---------------------------------------------------------------------*
* --> F_REPID
*
* --> F_UNAME
*
* --> F_RQIDENT
*
*---------------------------------------------------------------------*
form get_spool_number using f_repid
f_uname
changing f_rqident.
data:
lc_rq2name like tsp01-rq2name.
concatenate f_repid+0(8)
f_uname+0(3)
into lc_rq2name separated by '__'.
select * from tsp01 where rq2name = lc_rq2name
order by rqcretime descending.
f_rqident = tsp01-rqident.
exit.
endselect.
if sy-subrc ne 0.
clear f_rqident.
endif.
endform." get_spool_number
| Beam Back -> ABAP Questions and Answers |