本文共 4702 字,大约阅读时间需要 15 分钟。
*&---------------------------------------------------------------------* *& 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.转载地址:http://yvhaf.baihongyu.com/