将SmartForms转换为PDF保存到本地
?將SmartForms轉(zhuǎn)換為PDF保存到本地
*&---------------------------------------------------------------------*
*&?Report??ZSMARTFORMS_TO_PDF
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT??ZSMARTFORMS_TO_PDF.
*?Variable?declarations
DATA:
W_FORM_NAME?TYPE?TDSFNAME?VALUE?'ZTESTSMARTFORMS',"name ofsmartforms
W_FMODULE?TYPE?RS38L_FNAM,
W_CPARAM?TYPE?SSFCTRLOP,
W_OUTOPTIONS?TYPE?SSFCOMPOP,
W_BIN_FILESIZE?TYPE?I,"?Binary?File?Size
W_FILENAME?TYPE?STRING,
W_FILE_PATH?TYPE?STRING,
W_FULL_PATH?TYPE?STRING.
*?Internal?tables?declaration
*?Internal?table?to?hold?the?OTF?data
DATA:
T_OTF?TYPE?ITCOO?OCCURS?0?WITH?HEADER?LINE,
*?Internal?table?to?hold?OTF?data?recd?from?the?SMARTFORM
T_OTF_FROM_FM?TYPE?SSFCRESCL,
*?Internal?table?to?hold?the?data?from?the?FM?CONVERT_OTF
T_PDF_TAB?LIKE?TLINE?OCCURS?0?WITH?HEADER?LINE.
*?This?function?module?call?is?used?to?retrieve?the?name?of?the?Function
*?module?generated?when?the?SMARTFORM?is?activated
??????????????CALL?FUNCTION?'SSF_FUNCTION_MODULE_NAME'
????????????????EXPORTING
??????????????????FORMNAME?????????????????=?W_FORM_NAME
*?????????????????VARIANT??????????????????=?'?'
*?????????????????DIRECT_CALL??????????????=?'?'
????????????????IMPORTING
?????????????????FM_NAME???????????????????=?W_FMODULE
??????????????EXCEPTIONS
????????????????NO_FORM??????????????????=?1
?????????????????NO_FUNCTION_MODULE???????=?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.
*?Calling?the?SMARTFORM?using?the?function?module?retrieved?above
*?GET_OTF?parameter?in?the?CONTROL_PARAMETERS?is?set?to?get?the?OTF
*?format?of?the?output
W_CPARAM-NO_DIALOG?=?'X'.
W_CPARAM-PREVIEW?=?SPACE.?"?Suppressing?the?dialog?box
W_CPARAM-GETOTF?=?'X'.??????????????????????????????????????"?for?print?preview
*?Printer?name?to?be?used?is?provided?in?the?export?parameter
*?OUTPUT_OPTIONS
W_OUTOPTIONS-TDDEST?=?'LP01'.
CALL?FUNCTION?W_FMODULE
EXPORTING
*?ARCHIVE_INDEX?=
*?ARCHIVE_INDEX_TAB?=
*?ARCHIVE_PARAMETERS?=
CONTROL_PARAMETERS?=?W_CPARAM
*?MAIL_APPL_OBJ?=
*?MAIL_RECIPIENT?=
*?MAIL_SENDER?=
OUTPUT_OPTIONS?=?W_OUTOPTIONS
*?USER_SETTINGS?=?'X'
IMPORTING
*?DOCUMENT_OUTPUT_INFO?=
JOB_OUTPUT_INFO?=?T_OTF_FROM_FM
*?JOB_OUTPUT_OPTIONS?=
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.
t_otf[]?=?t_otf_from_fm-otfdata[].
*?Function?Module?CONVERT_OTF?is?used?to?convert?the?OTF?format?to?PDF
CALL?FUNCTION?'CONVERT_OTF'
EXPORTING
FORMAT?=?'PDF'
MAX_LINEWIDTH?=?132
*?ARCHIVE_INDEX?=?'?'
*?COPYNUMBER?=?0
*?ASCII_BIDI_VIS2LOG?=?'?'
*?PDF_DELETE_OTFTAB?=?'?'
IMPORTING
BIN_FILESIZE?=?W_BIN_FILESIZE
*?BIN_FILE?=
TABLES
otf?=?T_OTF
lines?=?T_PDF_TAB
EXCEPTIONS
ERR_MAX_LINEWIDTH?=?1
ERR_FORMAT?=?2
ERR_CONV_NOT_POSSIBLE?=?3
ERR_BAD_OTF?=?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.
*?To?display?File?SAVE?dialog?window
CALL?METHOD?cl_gui_frontend_services=>file_save_dialog
*?EXPORTING
*?WINDOW_TITLE?=
*?DEFAULT_EXTENSION?=
*?DEFAULT_FILE_NAME?=
*?FILE_FILTER?=
*?INITIAL_DIRECTORY?=
*?WITH_ENCODING?=
*?PROMPT_ON_OVERWRITE?=?'X'
CHANGING
filename?=?W_FILENAME
path?=?W_FILE_PATH
fullpath?=?W_FULL_PATH
*?USER_ACTION?=
*?FILE_ENCODING?=
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
CALL?FUNCTION?'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE?=?W_BIN_FILESIZE
filename?=?W_FULL_PATH
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?=?'?'
*?IMPORTING
*?FILELENGTH?=
tables
DATA_TAB?=?T_PDF_TAB
*?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.
轉(zhuǎn)載于:https://blog.51cto.com/tangwenchong/554218
總結(jié)
以上是生活随笔為你收集整理的将SmartForms转换为PDF保存到本地的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: COM学习笔记01
- 下一篇: 程序自我销毁(VB源代码)