ABAP程序打印Spool Request到PDF
其實打印到pdf完全不需要程序,只要你裝了pdf打印生成軟件,打印的時候選擇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?'d:\'
??????????????P_REPID
??????????????'.pdf'
????INTO?MC_FILENAME.
*--?Setup?the?Print?Parmaters
??CALL?FUNCTION?'GET_PRINT_PARAMETERS'
????EXPORTING
??????COPIES?????????????????=?'1'
??????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.
??DATA:?LF?TYPE?STRING.
??LF?=?MC_FILENAME.
??CALL?FUNCTION?'GUI_DOWNLOAD'
????EXPORTING
*?????BIN_FILESIZE????????????=
??????FILENAME????????????????=?LF
??????FILETYPE????????????????=?'BIN'
*?????APPEND??????????????????=?'?'
*?????WRITE_FIELD_SEPARATOR???=?'?'
*?????HEADER??????????????????=?'00'
*?????TRUNC_TRAILING_BLANKS???=?'?'
*?????WRITE_LF????????????????=?'X'
*?????COL_SELECT??????????????=?'?'
*?????COL_SELECT_MASK?????????=?'?'
*?????DAT_MODE????????????????=?'?'
*?????CONFIRM_OVERWRITE???????=?'?'
*?????NO_AUTH_CHECK???????????=?'?'
*?????CODEPAGE????????????????=?'?'
*?????IGNORE_CERR?????????????=?ABAP_TRUE
*?????REPLACEMENT?????????????=?'#'
*?????WRITE_BOM???????????????=?'?'
*?????TRUNC_TRAILING_BLANKS_EOL???????=?'X'
*?????WK1_N_FORMAT????????????=?'?'
*?????WK1_N_SIZE??????????????=?'?'
*?????WK1_T_FORMAT????????????=?'?'
*?????WK1_T_SIZE??????????????=?'?'
*?????WRITE_LF_AFTER_LAST_LINE????????=?ABAP_TRUE
*?????SHOW_TRANSFER_STATUS????=?ABAP_TRUE
*?IMPORTING
*?????FILELENGTH??????????????=
????TABLES
??????DATA_TAB????????????????=?MTAB_PDF
*?????FIELDNAMES??????????????=
????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?ID?SY-MSGID?TYPE?SY-MSGTY?NUMBER?SY-MSGNO
*?????????WITH?SY-MSGV1?SY-MSGV2?SY-MSGV3?SY-MSGV4.
??ENDIF.
*??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(9)
??????????????F_UNAME+0(3)
????INTO?LC_RQ2NAME.
??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
總結
以上是生活随笔為你收集整理的ABAP程序打印Spool Request到PDF的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ABAP 生成ZIP压缩文件的代码
- 下一篇: ABAP动态取得数据的方法