10-16-2008 10:05 AM
Hi all,
How will we convert report output to PDF without downloading?
Regards,
NIthu
10-16-2008 10:07 AM
&----
*& Report ZNA_REPORT_PDF
*&
&----
*&
*&
&----
REPORT ZNA_REPORT_PDF NO STANDARD PAGE HEADING.
*&----
*&----
*& Description: Simple Program to generate PDF from ABAP List Output
*&----
* PF-status containing a PDF button in the report Output to generate
* PDF form
SET PF-STATUS 'Z_PDF'.
*----
*Table Declarations
*----
TABLES: MARA, MARC, MAKT.
*----
* INTERNAL TABLE DECLARATIONS
*----
DATA: BEGIN OF TS_MARA OCCURS 0,
MATNR LIKE MARA-MATNR,
MTART LIKE MARA-MTART,
MATKL LIKE MARA-MATKL,
LVORM LIKE MARA-LVORM,
WERKS LIKE MARC-WERKS,
MAKTX LIKE MAKT-MAKTX,
END OF TS_MARA.
*----
* SELECTION SCREEN PARAMETERS
*----
SELECTION-SCREEN BEGIN OF BLOCK B1.
SELECT-OPTIONS: S_MATNR FOR MARA-MATNR OBLIGATORY,
S_WERKS FOR MARC-WERKS OBLIGATORY.
SELECTION-SCREEN END OF BLOCK B1.
*----
TOP-OF-PAGE.
*----
WRITE: 40 'Generating PDF from List Output' COLOR 1 INTENSIFIED ON.
SKIP 1.
WRITE: /1 'Date :', SY-DATUM,
/1 'User ID :', SY-UNAME,
/1(112) SY-ULINE.
*----
START-OF-SELECTION.
*----
* PERFORM FOR BASIC SELECTION
PERFORM GET_MARA.
* PERFORM TO DISPLAY DATA
PERFORM DISPLAY_MARA.
*----
AT USER-COMMAND.
*----
* USER COMMAND TO GENERATE PDF FORM
AT USER-COMMAND.
CASE SY-UCOMM.
WHEN 'PDF'.
DATA: L_PARAMS TYPE PRI_PARAMS,
L_VALID TYPE STRING,
W_SPOOL_NR LIKE TSP01-RQIDENT.
* TO GET PRINT PARAMETERS
CALL FUNCTION 'GET_PRINT_PARAMETERS'
IMPORTING
OUT_PARAMETERS = L_PARAMS
VALID = L_VALID.
IF SY-SUBRC 0.
ENDIF.
* INTERNAL TABLE FOR SELECTION SCREEN
DATA: BEGIN OF I_RSPARAMS OCCURS 0.
INCLUDE STRUCTURE RSPARAMS.
DATA: END OF I_RSPARAMS.
* STORE THE CURRENT SELECTION SCREEN DETAILS
CALL FUNCTION 'RS_REFRESH_FROM_SELECTOPTIONS'
EXPORTING
CURR_REPORT = SY-REPID
* IMPORTING
SP =
TABLES
SELECTION_TABLE = I_RSPARAMS
* EXCEPTIONS
NOT_FOUND = 1
NO_REPORT = 2
OTHERS = 3
.
IF SY-SUBRC 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* SUBMIT TO GET THE SPOOL NUMBER
SUBMIT ZNA_REPORT_PDF WITH SELECTION-TABLE I_RSPARAMS
TO SAP-SPOOL
SPOOL PARAMETERS L_PARAMS
WITHOUT SPOOL DYNPRO
AND RETURN.
* SELECT THE RECENTLY CREATED SPOOL
SELECT MAX( RQIDENT ) INTO W_SPOOL_NR FROM TSP01
WHERE RQCLIENT = SY-MANDT
AND RQOWNER = SY-UNAME.
*REPORT TO GENERATE SPOOL NUMBER FOR PDF CONVERT
SUBMIT RSTXPDF5 WITH SPOOLNO = W_SPOOL_NR
WITH DSTDEVIC = 'LOCL' AND RETURN .
IF SY-SUBRC EQ 0.
CLEAR W_SPOOL_NR.
* SELECT THE RECENTLY CREATED SPOOL FOR PDF
SELECT MAX( RQIDENT ) INTO W_SPOOL_NR FROM TSP01
WHERE RQCLIENT = SY-MANDT
AND RQOWNER = SY-UNAME.
*REPORT TO DOWNLOAD PDF SPOOL TO GUI
SUBMIT RSTXPDFT5 WITH SPOOLID = W_SPOOL_NR
AND RETURN.
ENDIF.
WHEN 'BACK'.
LEAVE PROGRAM.
ENDCASE.
&---------------------------------------------------------------------
*& Form GET_MARA
&---------------------------------------------------------------------
text
----------------------------------------------------------------------
--> p1 text
<-- p2 text
----------------------------------------------------------------------
FORM GET_MARA .
CLEAR : TS_MARA.
REFRESH: TS_MARA.
* TO SELECT MATERIALS BASED ON SELECTION CRITERIA
SELECT A~MATNR A~MTART A~MATKL A~LVORM B~WERKS INTO CORRESPONDING
FIELDS OF TABLE TS_MARA FROM MARA AS A
INNER JOIN MARC AS B ON A~MATNR EQ B~MATNR
WHERE A~MATNR IN S_MATNR
AND B~WERKS IN S_WERKS.
LOOP AT TS_MARA.
SELECT SINGLE * FROM MAKT WHERE MATNR EQ TS_MARA-MATNR
AND SPRAS EQ SY-LANGU.
MOVE MAKT-MAKTX TO TS_MARA-MAKTX.
MODIFY TS_MARA INDEX SY-TABIX.
ENDLOOP.
ENDFORM. " GET_MARA
*&----
*& Form DISPLAY_MARA
*&----
text
*----
--> p1 text
<-- p2 text
*----
FORM DISPLAY_MARA .
CLEAR : TS_MARA.
WRITE: /1 '|', 2(18) 'Material Number' COLOR 7,
21 '|', 22(5) 'Plant ' COLOR 7,
28 '|', 29(13) 'Material Type ' COLOR 7,
42 '|', 43(14) 'Material Group ' COLOR 7,
57 '|', 58(13) 'Deletion Flag ' COLOR 7,
71 '|', 72(40) 'Description ' COLOR 7,
112 '|'.
WRITE: /1(112) SY-ULINE.
LOOP AT TS_MARA.
WRITE: /1 '|', 2(18) TS_MARA-MATNR,
21 '|', 22(5) TS_MARA-WERKS,
28 '|', 29(13) TS_MARA-MTART,
42 '|', 43(14) TS_MARA-MATKL,
57 '|', 58(13) TS_MARA-LVORM,
71 '|', 72(40) TS_MARA-MAKTX,
112 '|'.
WRITE: /1(112) SY-ULINE.
ENDLOOP.
ENDFORM. " DISPLAY_MARA
Create PF-Status with PDF button and PDF function code.
This will work.
10-16-2008 10:08 AM
Hi
i think this FM'FOPC_REPORT_SHOW_PDF" module may help u try it once... let me know...
thks
Santu
Edited by: santhosh kumar on Oct 16, 2008 11:09 AM
10-16-2008 10:09 AM
Generate the output in spool , ( this can be done by submitting the program in background ) get the spool no from tcode sp01 .Use stanadard program RSTXPDFT4 to convert spool into pdf.
10-16-2008 10:10 AM
10-16-2008 10:10 AM
Hi
you use FM CONVERT_OTF for that which convert it to PDF
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
FORMAT = 'PDF'
MAX_LINEWIDTH = 132
ARCHIVE_INDEX = ' '
IMPORTING
BIN_FILESIZE = W_BIN_FILESIZE
TABLES
OTF = T_OTF
LINES = T_PDF_TAB
EXCEPTIONS
ERR_MAX_LINEWIDTH = 1
ERR_FORMAT = 2
ERR_CONV_NOT_POSSIBLE = 3
OTHERS = 4
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
BIN_FILESIZE = W_BIN_FILESIZE
CODEPAGE = ' '
FILENAME = 'C:\TEST.PDF'
FILETYPE = 'BIN'
MODE = ' '
WK1_N_FORMAT = ' '
WK1_N_SIZE = ' '
WK1_T_FORMAT = ' '
WK1_T_SIZE = ' '
COL_SELECT = ' '
COL_SELECTMASK = ' '
NO_AUTH_CHECK = ' '
IMPORTING
FILELENGTH = W_FILESIZE
TABLES
DATA_TAB = T_PDF_TAB
FIELDNAMES =
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_WRITE_ERROR = 2
INVALID_FILESIZE = 3
INVALID_TYPE = 4
NO_BATCH = 5
UNKNOWN_ERROR = 6
INVALID_TABLE_WIDTH = 7
GUI_REFUSE_FILETRANSFER = 8
CUSTOMER_ERROR = 9
OTHERS = 10
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Regards,
Tarak
10-16-2008 10:20 AM
hi,
check this sample code
Save Report Output to a PDF File
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.
Source Code Listing
report zabap_2_pdf.
Enhancements: only allow to be run with variant. Then called
program will be transparent to users
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
check these threads...
https://forums.sdn.sap.com/thread.jspa?forumID=50&threadID=76531&messageID=824710#824710
https://forums.sdn.sap.com/thread.jspa?forumID=50&threadID=113131&messageID=1262598#1262598
https://forums.sdn.sap.com/thread.jspa?forumID=50&threadID=55086&messageID=573401#573401
http://www.sapdevelopment.co.uk/reporting/rep_spooltopdf.htm
Regards,
Satish