SAP日记-ABAP SMARTFORMS导出PDF
有几种方式
1、 安装pdf打印程序, 在sap打印界面选择改打印程序即可
适合打印PDF的个别用户。
2、
把smartform打印到spool.
然后在事务码SP02里面查到spool号
复制spool号 SE38 执行RSTXPDFT4即可
3、调用GUI_DOWNLOAD
此处仅为打印代码
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' EXPORTING
FORMNAME = 'ZSDK006' “SMARTFORMS名称 IMPORTING
FM_NAME = FM_NAME EXCEPTIONS
NO_FORM = 1 NO_FUNCTION_MODULE = 2 OTHERS = 3.
CLEAR:OUTPUT_OPTIONS.
CONTROL_PARAMETERS-GETOTF = 'X'. CONTROL_PARAMETERS-NO_DIALOG = 'X'. OUTPUT_OPTIONS-TDNOPREV = 'X'.
CALL FUNCTION FM_NAME EXPORTING
OUTPUT_OPTIONS = OUTPUT_OPTIONS\ CONTROL_PARAMETERS = CONTROL_PARAMETERS
IMPORTING
JOB_OUTPUT_INFO = T_OTFDATA TABLES
GT_ITAB = ITAB “内表 EXCEPTIONS
FORMATTING_ERROR = 1 INTERNAL_ERROR = 2 SEND_ERROR = 3 USER_CANCELED = 4 OTHERS = 5. IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.
*************此处为导出PDF
T_OTF[] = T_OTFDATA-OTFDATA[]. CALL FUNCTION 'CONVERT_OTF' EXPORTING
FORMAT = 'PDF' MAX_LINEWIDTH = 132 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.
*---------------TAKING THE DOWNLOAD FILE PATH AS USER INPUT** DATA UA TYPE I.
CONCATENATE 'D:\\' KUNNR NAME1 ZDATE1+0(6) '对账单.pdf' INTO FILE_NAME. “定义文件名
这一段不屏蔽, 在打印的时候会有显示选择路径的对话框,屏蔽则直接保存在上面的文件名FILE_NAME指定的路径
* CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG * EXPORTING
* DEFAULT_FILE_NAME = FILE_NAME * CHANGING
* FILENAME = FILE_NAME * PATH = FILE_PATH * FULLPATH = FULL_PATH * USER_ACTION = UA * 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. * ELSE.
* IF UA = 0.
* Download the file to the selected path ************************
CALL FUNCTION 'GUI_DOWNLOAD' EXPORTING
BIN_FILESIZE = W_BIN_FILESIZE
FILENAME = FILE_NAME FILETYPE = 'BIN' IMPORTING
FILELENGTH = W_FILESIZE TABLES
DATA_TAB = T_PDF_TAB 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 not downloaded' TYPE 'I'. ELSE.
ENDIF. * ENDIF. * ENDIF.
第一种和第二种都可在用户突然需要PDF文件的时候应用, 不需要写程序,第三种则应用在用户需要经常导出PDF格式时;第二种也可以通过SUBMIT 调用 RSTXPDFT4 执行。