SMARTFORMS打印后转存为PDF文件相关问题
1.转成PDF文件时可以参考的函数(本人只试过一种其它有待尝试):
CONVERT_OTFSPOOLJOB_2_PDF;
CONVERT_OTF_2_PDF;
SX_OBJECT_CONVER_OTF_PDF;
HRHAP_DOC_CONVERT_SMF_TO_PDF.
2.保存后出现了乱码(建议ADOBE READER最新的来读,可以避免乱码,不行了才找其它原因)
t-code spad
新建一个输出设备或用LP01,关键是选对设备类型,据说CN 开头的都是可以的。
例如 CNSAPWIN : MS WINDOWS DRIVER VIA SPLPD 然后保存就行了
调用smartforms的时候,用刚定义的这个就行了
调用SMARTFORMS里面有个相关参数可以适当修改(有些不是必须的根据自己情况设置)
(DATA L_CONTROL_PARAMETERS TYPE SSFCTRLOP.)
L_CONTROL_PARAMETERS-GETOTF = ‘X’. “此参数必须,不然不会导出PDF而直接显示smartform
L_CONTROL_PARAMETERS-NO_CLOSE = ”.
L_CONTROL_PARAMETERS-NO_DIALOG = ‘X’. “不显示打印对话框
(DATA L_OUTPUT_OPTIONS TYPE SSFCOMPOP.)
L_OUTPUT_OPTIONS-BCS_LANGU = ‘1′.
L_OUTPUT_OPTIONS-TDDEST = ‘DEFAULT’.
3.以下打印时调用部分参考代码
FORM FRM_USER_COMMAND_ALV
USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.”行数
*—>smartforms 中相关参数定义
DATA:L_FM_NAME TYPE RS38L_FNAM.
DATA:L_JOB_OUTPUT_INFO TYPE SSFCRESCL,
L_JOB_OUTPUT_OPTIONS TYPE SSFCRESOP,
L_LEN TYPE I.
DATA L_CONTROL_PARAMETERS TYPE SSFCTRLOP.
DATA L_OUTPUT_OPTIONS TYPE SSFCOMPOP.
DATA BEGIN OF LT_PDF OCCURS 10.
INCLUDE STRUCTURE TLINE.
DATA END OF LT_PDF.
CASE R_UCOMM.
WHEN ‘&ZRNT’.
CLEAR: L_FM_NAME.
REFRESH IT_HEAD .
IT_HEAD = IT_ALV.
DELETE ADJACENT DUPLICATES FROM IT_HEAD COMPARING RSNUM.
CALL FUNCTION ‘SSF_FUNCTION_MODULE_NAME’
EXPORTING
FORMNAME = ‘ZMMR03′
* VARIANT = ‘ ‘
* DIRECT_CALL = ‘ ‘
IMPORTING
FM_NAME = L_FM_NAME
* 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.
L_CONTROL_PARAMETERS-GETOTF = ‘X’. “此参数必须,不然不会导出PDF而直接显示smartform
L_CONTROL_PARAMETERS-NO_CLOSE = ”.
* L_CONTROL_PARAMETERS-NO_DIALOG = ‘X’. “不显示打印对话框
* L_OUTPUT_OPTIONS-BCS_LANGU = ‘1′.
* L_OUTPUT_OPTIONS-TDDEST = ‘DEFAULT’.
CALL FUNCTION L_FM_NAME
EXPORTING
* ARCHIVE_INDEX =
* ARCHIVE_INDEX_TAB =
* ARCHIVE_PARAMETERS =
CONTROL_PARAMETERS = L_CONTROL_PARAMETERS
* MAIL_APPL_OBJ =
* MAIL_RECIPIENT =
* MAIL_SENDER =
OUTPUT_OPTIONS = L_OUTPUT_OPTIONS
USER_SETTINGS = ‘X’
IMPORTING
* DOCUMENT_OUTPUT_INFO =
JOB_OUTPUT_INFO = L_JOB_OUTPUT_INFO
JOB_OUTPUT_OPTIONS = L_JOB_OUTPUT_OPTIONS
TABLES
IT_ALV = IT_ALV
IT_HEAD = IT_HEAD
* 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.
IF SY-SUBRC EQ 0.
*—>转成PDF
CALL FUNCTION ‘CONVERT_OTF’
EXPORTING
FORMAT = ‘PDF’
* MAX_LINEWIDTH = 132
* ARCHIVE_INDEX = ‘ ‘
* COPYNUMBER = 0
* ASCII_BIDI_VIS2LOG = ‘ ‘
* PDF_DELETE_OTFTAB = ‘ ‘
IMPORTING
BIN_FILESIZE = L_LEN
* BIN_FILE =
TABLES
OTF = L_JOB_OUTPUT_INFO-OTFDATA
LINES = LT_PDF[]
* 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.
IF SY-SUBRC EQ 0.
*—>下载
CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD
EXPORTING
BIN_FILESIZE = L_LEN
FILENAME = P_FNAME ”此处是路径,例D:\TEMP.PDF
FILETYPE = ‘BIN’
CHANGING
DATA_TAB = LT_PDF[]
EXCEPTIONS
OTHERS = 1.
IF SY-SUBRC <> 0.
*MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
*WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
ENDIF.
ENDCASE.
ENDFORM. “user_command
总结
以上是生活随笔为你收集整理的SMARTFORMS打印后转存为PDF文件相关问题的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: smartforms设置纸张打印格式
- 下一篇: 集团公司有什么性质