"Smart forms
"SMARTFORMS:创建smart form
"SE78:上传图片到SAP
"SE73:SAPScript font maintaince,二维码字体维护:ZMARTX.
"打印预览
FORM f_print_preview.
DATA:fm_name TYPE RS38L_FNAM.
DATA:lv_ssfcrespd TYPE SSFCRESPD.
DATA:ls_ssfcrescl TYPE SSFCRESCL.
DATA:ls_ssfcresop TYPE SSFCRESOP.
"打印参数
DATA:ls_ssfctrlop TYPE SSFCTRLOP.
"弹出框参数
DATA:ls_ssfcompop TYPE SSFCOMPOP.
"获取form 对应 function module name
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = 'ZTOM_TEST_FORM1' "Form name
* VARIANT = ' '
* DIRECT_CALL = ' '
IMPORTING
FM_NAME = fm_name
EXCEPTIONS
NO_FORM = 1
NO_FUNCTION_MODULE = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE e000(ZTEST_MSG) WITH '获取function name失败'.
ENDIF.
"设置打印参数
"无弹窗
ls_ssfctrlop-NO_DIALOG = 'X'.
"获取OTF数据,不print,fax,display
"ls_ssfctrlop-GETOTF = 'X'.
"预览
ls_ssfctrlop-PREVIEW = 'X'.
"output参数
ls_ssfcompop-TDDEST = 'SAP'.
"动态调用
CALL FUNCTION fm_name
EXPORTING
* ARCHIVE_INDEX = ''
* ARCHIVE_INDEX_TAB = ''
* ARCHIVE_PARAMETERS = ''
CONTROL_PARAMETERS = ls_ssfctrlop
* MAIL_APPL_OBJ = ''
* MAIL_RECIPIENT = ''
* MAIL_SENDER = ''
OUTPUT_OPTIONS = ls_ssfcompop
* USER_SETTINGS = ''
IMPORTING
* DOCUMENT_OUTPUT_INFO = lv_ssfcrespd
JOB_OUTPUT_INFO = ls_ssfcrescl
JOB_OUTPUT_OPTIONS = ls_ssfcresop
TABLES
lt_headpre = lt_spfli
lt_itempre = lt_sflight.
ENDFORM.
示例:转换PDF
"导出pdf
FORM f_export_pdf.
DATA:fm_name TYPE RS38L_FNAM.
DATA:lv_ssfcrespd TYPE SSFCRESPD.
DATA:ls_ssfcrescl TYPE SSFCRESCL.
DATA:ls_ssfcresop TYPE SSFCRESOP.
"打印参数
DATA:ls_ssfctrlop TYPE SSFCTRLOP.
"弹出框参数
DATA:ls_ssfcompop TYPE SSFCOMPOP.
"下载pdf数据
DATA:lv_pdf_data TYPE xstring.
DATA:lv_pdf_line TYPE I.
DATA:lv_filelength TYPE I.
"转换为pdf格式
DATA:lt_pdf_table TYPE STANDARD TABLE OF tline.
"doc
DATA:lt_doctab TYPE TABLE OF docs WITH HEADER LINE.
"获取form 对应 function module name
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = 'ZTOM_TEST_FORM1' "Form name
* VARIANT = ' '
* DIRECT_CALL = ' '
IMPORTING
FM_NAME = fm_name
EXCEPTIONS
NO_FORM = 1
NO_FUNCTION_MODULE = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE e000(ZTEST_MSG) WITH '获取function name失败'.
ENDIF.
"设置打印参数
"无弹窗
ls_ssfctrlop-NO_DIALOG = 'X'.
"获取OTF数据,不print,fax,display
ls_ssfctrlop-GETOTF = 'X'.
"预览
"ls_ssfctrlop-PREVIEW = 'X'.
"output参数
"ls_ssfcompop-TDDEST = 'SAP'.
"动态调用
CALL FUNCTION fm_name
EXPORTING
* ARCHIVE_INDEX = ''
* ARCHIVE_INDEX_TAB = ''
* ARCHIVE_PARAMETERS = ''
CONTROL_PARAMETERS = ls_ssfctrlop
* MAIL_APPL_OBJ = ''
* MAIL_RECIPIENT = ''
* MAIL_SENDER = ''
OUTPUT_OPTIONS = ls_ssfcompop
* USER_SETTINGS = ''
IMPORTING
* DOCUMENT_OUTPUT_INFO = lv_ssfcrespd
JOB_OUTPUT_INFO = ls_ssfcrescl
JOB_OUTPUT_OPTIONS = ls_ssfcresop
TABLES
lt_headpre = lt_spfli
lt_itempre = lt_sflight.
* "OTF数据转换PDF
* CALL FUNCTION 'CONVERT_OTF'
* EXPORTING
* FORMAT = 'PDF'
* MAX_LINEWIDTH = 132
** ARCHIVE_INDEX = ' '
** COPYNUMBER = 0
** ASCII_BIDI_VIS2LOG = ' '
** PDF_DELETE_OTFTAB = ' '
** PDF_USERNAME = ' '
** PDF_PREVIEW = ' '
** USE_CASCADING = ' '
** MODIFIED_PARAM_TABLE =
* IMPORTING
* BIN_FILESIZE = lv_pdf_line
* BIN_FILE = lv_pdf_data
* TABLES
* OTF = ls_ssfcrescl-OTFDATA[]
* LINES = lt_pdf_table
* EXCEPTIONS
* ERR_MAX_LINEWIDTH = 1
* ERR_FORMAT = 2
* ERR_CONV_NOT_POSSIBLE = 3
* ERR_BAD_OTF = 4
* OTHERS = 5
* .
* IF SY-SUBRC <> 0.
* MESSAGE e000(ZTEST_MSG) WITH 'CONVERT_OTF error'.
* ENDIF.
"OTF数据转换PDF
CALL FUNCTION 'CONVERT_OTF_2_PDF'
* EXPORTING
* USE_OTF_MC_CMD = 'X'
* ARCHIVE_INDEX =
IMPORTING
BIN_FILESIZE = lv_pdf_line
TABLES
OTF = ls_ssfcrescl-OTFDATA[]
DOCTAB_ARCHIVE = lt_doctab
LINES = lt_pdf_table
* EXCEPTIONS
* ERR_CONV_NOT_POSSIBLE = 1
* ERR_OTF_MC_NOENDMARKER = 2
* OTHERS = 3
.
IF SY-SUBRC <> 0.
MESSAGE e000(ZTEST_MSG) WITH 'CONVERT_OTF_2_PDF error'.
ENDIF.
"下载PDF
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE = lv_pdf_line
FILENAME = 'E:\test.pdf'
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
* VIRUS_SCAN_PROFILE = '/SCET/GUI_DOWNLOAD'
IMPORTING
FILELENGTH = lv_filelength
TABLES
DATA_TAB = lt_pdf_table
* 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 e000(ZTEST_MSG) WITH 'GUI_DOWNLOAD error'.
ENDIF.
ENDFORM.