Sie sind auf Seite 1von 6

Convert Classical/ALV/Interactive Reports to direct PDF File

inShare

Hello , While Developing SAP reports in ABAP we faces number of similar requirements like Save as Excel, Mail , Save as PDF Output Etc. For saving as PDF we can do few manually steps as 1. Generate spool request of report, 2. Execute spool in Report RSTXPDFT5, which may not suitable for users. We can build Logic also in Report to avoid Manual steps for users, but that will be limited to that report only. I have written small code, Generic Executable Report as ZRPT2PDF. Using it one can generate PDF for any Report , Custom or Standard . It works with single T-code parameter in selection screen , and support ALV/Classical/Interactive Formats. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ZRPT2PDF is single Report , No need to Change any of your existing Source codes. I found it very handy for PDF Generation. ++++++++++++++++++++++++++ I have upload Source code for ZRPT2PDF Version 1,You can use it. Source Code:**"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"* * Report : ZST_REPORT_TO_PDF * Request No : Local * Developed by : Stallone Christian * Requested on : 04.05.2012 * Description : Generate PDF from Report **"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"* *Extra Info: ************************************************************************ * Generate PDF File for any Report using Tcode * After Executing Report, Go back and Save PDF File ************************************************************************ REPORT ZST_REPORT_TO_PDF. DATA : WA_TSTC TYPE TSTC, WA_TSTCP TYPE TSTCP, SM30_PARA TYPE TSTCP-PARAM, IT_PARAM TYPE STANDARD TABLE OF STRING, WA_PARAM TYPE STRING, GV_REPORT TYPE SY-REPID, GV_PARAMS TYPE PRI_PARAMS, GV_VALID TYPE STRING, GV_RQIDENT TYPE TSP01-RQIDENT, GT_RSPARAMS TYPE STANDARD TABLE OF RSPARAMS, WA_TSP01 TYPE TSP01, GV_SPOOL TYPE TSP01-RQIDENT, GV_RQ2NAME TYPE TSP01-RQ2NAME,

PDF_BYTECOUNT PDF_SPOOLID LIST_PAGECOUNT BTC_JOBNAME BTC_JOBCOUNT BIN_FILE GT_PDF GV_BIN_FILESIZE GV_FILE_NAME GV_FILE_PATH GV_FULL_PATH

TYPE I, LIKE TSP01-RQIDENT, TYPE I, TYPE TBTCJOB-JOBNAME, TYPE TBTCJOB-JOBCOUNT, TYPE XSTRING, TYPE STANDARD TABLE OF TLINE, TYPE I, " Binary File Size TYPE STRING, TYPE STRING, TYPE STRING.

" Selection Screen SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT000. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT (23) TEXT001 FOR FIELD P_TCODE. PARAMETERS P_TCODE TYPE TSTC-TCODE OBLIGATORY. SELECTION-SCREEN END OF LINE. "Text SELECTION-SCREEN SKIP 1. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT (70) TEXT002. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN: END OF BLOCK B1. LOAD-OF-PROGRAM. TEXT000 = 'Selection Criteria'. TEXT001 = '@8T@ Transaction Code'. TEXT002 = '*Enter Tcode->Select Print Option->Execute report->Save PDF File'. START-OF-SELECTION. "Fetch Tcode and Report info PERFORM FETCH_TCODE_REPORT. "Call Transaction PERFORM CALL_TRANSACTION. "Get Spool and Generate PDF PERFORM GET_SPOOL_TO_PDF. *&---------------------------------------------------------------------* *& Form FETCH_TCODE_REPORT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM FETCH_TCODE_REPORT . DATA : FLG_TCODE TYPE CHAR1, CHR1 TYPE CHAR40, CHR2 TYPE CHAR40. SELECT SINGLE * FROM TSTC INTO WA_TSTC WHERE TCODE = P_TCODE AND PGMNA NE SPACE

AND DYPNO = 1000. "only Standard Report IF SY-SUBRC = 0. FLG_TCODE = 'X'. GV_REPORT = WA_TSTC-PGMNA. ELSE. SELECT SINGLE * FROM TSTCP INTO WA_TSTCP WHERE TCODE = P_TCODE AND PARAM NE SPACE. SPLIT WA_TSTCP-PARAM AT ';' INTO TABLE IT_PARAM. LOOP AT IT_PARAM INTO WA_PARAM. IF WA_PARAM CS '-REPORT='. FLG_TCODE = 'X'. SPLIT WA_PARAM AT '-REPORT=' INTO CHR1 CHR2. GV_REPORT = CHR2. EXIT. ENDIF. ENDLOOP. ENDIF. IF FLG_TCODE IS INITIAL. MESSAGE 'In Valid Tcode' TYPE 'I' DISPLAY LIKE 'E'. LEAVE TO TRANSACTION SY-TCODE. ENDIF. CALL FUNCTION 'AUTH_CHECK_TCODE' EXPORTING TCODE = P_TCODE EXCEPTIONS PARAMETER_ERROR =1 TRANSACTION_NOT_FOUND =2 TRANSACTION_LOCKED =3 TRANSACTION_IS_MENU =4 MENU_VIA_PARAMETER_TRANSACTION = 5 NOT_AUTHORIZED =6 OTHERS = 7. IF SY-SUBRC <> 0. MESSAGE 'No Authorization for Tcode' TYPE 'I' DISPLAY LIKE 'E'. LEAVE TO TRANSACTION SY-TCODE. ENDIF. ENDFORM. " FETCH_TCODE_REPORT *&---------------------------------------------------------------------* *& Form CALL_TRANSACTION *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM CALL_TRANSACTION . CALL FUNCTION 'GET_PRINT_PARAMETERS' IMPORTING OUT_PARAMETERS = GV_PARAMS VALID = GV_VALID. IF SY-SUBRC <> 0. ENDIF.

"Spool Mode, Default will be Spool Only CLEAR GV_PARAMS-PRIMM. "Spool Request Name, Pass Report name , Only 1st 12 Chars GV_RQ2NAME = GV_REPORT. GV_PARAMS-PLIST = GV_RQ2NAME. SUBMIT (GV_REPORT) VIA SELECTION-SCREEN TO SAP-SPOOL SPOOL PARAMETERS GV_PARAMS WITHOUT SPOOL DYNPRO AND RETURN. IF SY-SUBRC NE 0. MESSAGE 'Unable to Execute Report' TYPE 'I' DISPLAY LIKE 'E'. LEAVE TO TRANSACTION SY-TCODE. ENDIF. WAIT UP TO 2 SECONDS. ENDFORM. " CALL_TRANSACTION *&---------------------------------------------------------------------* *& Form GET_SPOOL_TO_PDF *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM GET_SPOOL_TO_PDF . DATA : LV_RQCRETIME TYPE TSP01-RQCRETIME, LV_RETURNCODE TYPE I. CONCATENATE SY-DATUM '%' INTO LV_RQCRETIME. SELECT MAX( RQIDENT ) INTO GV_SPOOL FROM TSP01

WHERE RQCLIENT = SY-MANDT AND RQ2NAME = GV_RQ2NAME AND RQOWNER = SY-UNAME AND RQCRETIME LIKE LV_RQCRETIME.

CHECK SY-SUBRC = 0. SELECT SINGLE * FROM TSP01 INTO WA_TSP01 WHERE RQIDENT = GV_SPOOL. IF WA_TSP01 IS INITIAL. MESSAGE 'No Valid Spool Request Found' TYPE 'I' DISPLAY LIKE 'E'. LEAVE TO TRANSACTION SY-TCODE. ENDIF. CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF' EXPORTING SRC_SPOOLID = GV_SPOOL NO_DIALOG = ABAP_FALSE IMPORTING PDF_BYTECOUNT = PDF_BYTECOUNT PDF_SPOOLID = PDF_SPOOLID BTC_JOBNAME = BTC_JOBNAME BTC_JOBCOUNT = BTC_JOBCOUNT TABLES PDF = GT_PDF EXCEPTIONS ERR_NO_ABAP_SPOOLJOB =1 ERR_NO_SPOOLJOB =2 ERR_NO_PERMISSION =3

ERR_CONV_NOT_POSSIBLE ERR_BAD_DESTDEVICE USER_CANCELLED ERR_SPOOLERROR ERR_TEMSEERROR ERR_BTCJOB_OPEN_FAILED ERR_BTCJOB_SUBMIT_FAILED ERR_BTCJOB_CLOSE_FAILED

=4 =5 =6 =7 =8 =9 = 10 = 11.

CHECK GT_PDF IS NOT INITIAL. GV_FILE_NAME = P_TCODE. * To display File SAVE dialog window CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG EXPORTING WINDOW_TITLE = 'Save Output as PDF' "LV_TITLE DEFAULT_EXTENSION = 'PDF' FILE_FILTER = '(*.pdf)|*.pdf|' DEFAULT_FILE_NAME = GV_FILE_NAME CHANGING FILENAME = GV_FILE_NAME PATH = GV_FILE_PATH FULLPATH = GV_FULL_PATH EXCEPTIONS CNTL_ERROR =1 ERROR_NO_GUI =2 NOT_SUPPORTED_BY_GUI = 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. * Use the FM GUI_DOWNLOAD to download the generated PDF file onto the * presentation server CHECK GV_FULL_PATH IS NOT INITIAL. CALL FUNCTION 'GUI_DOWNLOAD' EXPORTING BIN_FILESIZE = GV_BIN_FILESIZE FILENAME = GV_FULL_PATH FILETYPE = 'BIN' TABLES DATA_TAB = GT_PDF EXCEPTIONS FILE_WRITE_ERROR =1 NO_BATCH =2 GUI_REFUSE_FILETRANSFER = 3 INVALID_TYPE =4 NO_AUTHORITY =5 UNKNOWN_ERROR =6 HEADER_NOT_ALLOWED =7 SEPARATOR_NOT_ALLOWED =8 FILESIZE_NOT_ALLOWED =9 HEADER_TOO_LONG = 10 DP_ERROR_CREATE = 11 DP_ERROR_SEND = 12 DP_ERROR_WRITE = 13 UNKNOWN_DP_ERROR = 14 ACCESS_DENIED = 15

DP_OUT_OF_MEMORY = 16 DISK_FULL = 17 DP_TIMEOUT = 18 FILE_NOT_FOUND = 19 DATAPROVIDER_EXCEPTION = 20 CONTROL_FLUSH_ERROR = 21 OTHERS = 22. IF SY-SUBRC = 0. MESSAGE 'File Generated Successfully' TYPE 'S'. ELSE. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. ENDFORM. " GET_SPOOL_TO_PDF
813 Views

Das könnte Ihnen auch gefallen