*&---------------------------------------------------------------------*
*& Form print
*&---------------------------------------------------------------------*
* 根订单抬头 行项目表 打印
*----------------------------------------------------------------------*
FORM print .
DATA : l_fncname TYPE rs38l_fnam , "smartform 动态函数名
lw_control_param TYPE ssfctrlop , "Smart Forms: 控制结构
lw_job_output_info TYPE ssfcrescl , "Smart Forms: 表格打印结束时返回值
lt_itcoo TYPE itcoo OCCURS 0 , "Smart Forms: OTF 结构
lw_output_opt TYPE ssfcompop . "Smart Forms: 智能写作器 (传输) 选项
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'ZLEND_JHD_PRINT' "Smart Forms: 名字
IMPORTING
fm_name = l_fncname "Smart Forms: 生成的函数名
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 .
"设置smartforms返回otf表
lw_control_param -getotf = 'X' .
lw_control_param -no_dialog = 'X' .
lw_output_opt -tdnoarmch = 'X' .
"无打印预览:其中'X'表示可以打印预览,空表示不能选择打印预览
lw_output_opt -tdnoprev = space .
"打印参数,新假脱机请求:其中'X'表示新的假脱机请求,空表示将当前输出附加到一个已有脱机请求
lw_output_opt -tdnewid = 'X' .
"打印参数,立即打印:其中'X'表示马上发送到输出设置
lw_output_opt -tdimmed = 'X' .
"假脱机: 输出设备
lw_output_opt -tddest = 'LOCL' .
"调用Smart Forms函数打印输出
CALL FUNCTION l_fncname
EXPORTING
control_parameters = lw_control_param
output_options = lw_output_opt
w_head = w_head
IMPORTING
job_output_info = lw_job_output_info
TABLES
gt_item = gt_item
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 .
MOVE : lw_job_output_info -otfdata[] TO lt_itcoo . "智能表: OTF表
"将OTF表转换成PDF格式
PERFORM covert_pdf TABLES lt_itcoo .
* PERFORM mail_object TABLES lt_itcoo.
ENDFORM . "print
*&---------------------------------------------------------------------*
*& Form covert_pdf
*&---------------------------------------------------------------------*
* 转换PDF文件
*----------------------------------------------------------------------*
* -->OTF_DATA OTF表
*----------------------------------------------------------------------*
FORM covert_pdf TABLES otf_data STRUCTURE itcoo .
DATA : lt_lines TYPE STANDARD TABLE OF tline , "SAPscript: 文字行
lt_docs TYPE STANDARD TABLE OF docs , "存储文档
l_bin_size TYPE i . "
"将OTF转换PDF格式
CALL FUNCTION 'CONVERT_OTF_2_PDF'
IMPORTING
bin_filesize = l_bin_size
TABLES
otf = otf_data "otf 表
doctab_archive = lt_docs
lines = lt_lines "文本行
EXCEPTIONS
err_conv_not_possible = 1
err_otf_mc_noendmarker = 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 .
* PERFORM send_mail TABLES gt_lines.
"保存到计算机本地PDF文件
PERFORM download_pdf TABLES lt_lines .
ENDFORM . "covert_pdf
*&---------------------------------------------------------------------*
*& Form download_pdf
*&---------------------------------------------------------------------*
* 保存到本地PDF文件
*----------------------------------------------------------------------*
* -->FU_TAB 文件内容
*----------------------------------------------------------------------*
FORM download_pdf TABLES fu_tab .
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
* BIN_FILESIZE =
filename = 'C:\test.pdf' "文件路径
filetype = 'BIN' "文件类型
codepage = '8400' "代码页
TABLES
data_tab = fu_tab "文件内容表
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 .
ENDFORM . "DOWNLOAD_PDF