SMARTFORMS打印下载

 
** 打印下载pdf
 
FORM FRM_DOWNLOAD_PDF2 USING LV_PATH TYPE STRING "路径
      LS_ITAB TYPE ZMMR00580_STUC.”smartforms打印数据
DATA: LT_OTF TYPE STANDARD TABLE OF ITCOO,
     LT_LINES TYPE STANDARD TABLE OF TLINE,
     LW_PATH TYPE RSPOPNAME,
          LW_FUNC_NAME TYPE RS38L_FNAM,
     T_CONTROL_PARAMETERS TYPE SSFCTRLOP,
     T_OUTPUT_OPTIONS TYPE SSFCOMPOP,
     LS_JOB_OUTPUT_INFO TYPE SSFCRESCL,
          GV_SIZE TYPE I.


***获取SMARTFORMS的Function Module***
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
  EXPORTING
    FORMNAME = 'ZMMR00580_PF_2' "SMARTFORMS的表名
  IMPORTING
    FM_NAME = LW_FUNC_NAME "功能名称
  EXCEPTIONS
    NO_FORM = 1
    NO_FUNCTION_MODULE = 2
    OTHERS = 3.

**Smart Forms: 控制结构*****
* T_CONTROL_PARAMETERS-LANGU = SY-LANGU.
* T_CONTROL_PARAMETERS-PREVIEW = ' '. "不打印预览,X 则打印预览
* "T_CONTROL_PARAMETERS-NO_OPEN = 'X'. "新的假脱机请求(必写)
* "T_CONTROL_PARAMETERS-NO_CLOSE = 'X'. "不关闭新的假脱机请求(必写)
T_CONTROL_PARAMETERS-GETOTF = 'X'. "OTF 表的返回。无打印,显示或传真
T_CONTROL_PARAMETERS-NO_DIALOG = 'X'. "弹出打印设置的对话框,X 则不显示框
* T_CONTROL_PARAMETERS-DEVICE = 'PRINTER'. "PRINTER\MAIL\TELEFAX,缺省是PRINTER
*
*
****SAP Smart Forms: 智能写作器 (传输) 选项*****
T_OUTPUT_OPTIONS-TDNOPREV = 'X'. "是否打印预览,X是不预览。
* T_OUTPUT_OPTIONS-TDNOPRINT = ' '. "没有打印预览的打印输出,设置X。
T_OUTPUT_OPTIONS-TDIMMED = 'X'. "立即打印标志。
T_OUTPUT_OPTIONS-TDDEST = 'LP01'. "假脱机,输出设备。
T_OUTPUT_OPTIONS-TDDELETE = 'X'.

 

* 调用SMARTFORM
CALL FUNCTION LW_FUNC_NAME
  EXPORTING
    CONTROL_PARAMETERS = T_CONTROL_PARAMETERS
    OUTPUT_OPTIONS = T_OUTPUT_OPTIONS
    USER_SETTINGS = ' '
  IMPORTING
    JOB_OUTPUT_INFO = LS_JOB_OUTPUT_INFO
  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
LT_OTF[] = LS_JOB_OUTPUT_INFO-OTFDATA[].

 

CALL FUNCTION 'CONVERT_OTF'
  EXPORTING
    FORMAT = 'PDF'
    IMPORTING
    BIN_FILESIZE = GV_SIZE
  TABLES
    OTF = LT_OTF
    LINES = LT_LINES
  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.

DATA:LV_FILENAME TYPE STRING.
LV_FILENAME = LV_PATH && LS_ITAB-EBELN && '.PDF'.

* 下载文件
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE = GV_SIZE
FILENAME = LV_FILENAME
FILETYPE = 'BIN'
TABLES
DATA_TAB = LT_LINES[]
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 'W' NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

 

posted @ 2025-06-13 11:23  ll的个人笔记  阅读(13)  评论(0)    收藏  举报