注:这里存在两种情况下参数 control_parameter的不同设置 ,
第一种没有用到SSF_OPEN,即不用根据条件ON CHANGE 重复打印.
这种情况下设置参数
control_parameters-getotf = 'X'. "此参数必须
control_parameters-no_close = ''. "可选,不能等于'X',否则会下载不成功,且不能有control_parameters-no_open = 'X'. 因为没打开怎么转换?
control_parameters-no_dialog = 'X'. "不显示窗口,可选
第二种用到了SSF_OPEN和SSF_CLOSE,则:
control_parameters-getotf = 'X'. "此参数必须,而且要在调用SSF_OPEN之前就赋值,调用FNAME时改为等于空也没影响,
control_parameters-no_open = 'X'. "此参数必须,因为重复调用,不能打开
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
* Download file of pdf
CONCATENATE 'D:\' gt_outtab-vbeln '.PDF' INTO filename.
"如果把名字的后缀名改为EXCEL,就会存为excel.
DATA fm_name TYPE rs38l_fnam.
DATA control_parameters TYPE ssfctrlop.
DATA job_output_info TYPE ssfcrescl. "表格打印结束时返回值
DATA job_output_options TYPE ssfcresop. "表格打印开始时返回值
DATA document_output_info TYPE ssfcrespd
DATA output_options TYPE ssfcompop.
DATA BEGIN OF pdf OCCURS 10.
INCLUDE STRUCTURE tline.
DATA END OF pdf.
DATA len TYPE i.
control_parameters-getotf = 'X'. "此参数必须
control_parameters-no_close = ''. "不能等于'X',否则会下载不成功,且不能有control_parameters-no_open = 'X'. 因为没打开怎么转换?
control_parameters-no_dialog = 'X'. "不显示窗口
output_options-tddest = 'PDF'. "选择输出设备,如'LP01'.
* Get data from smartform
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'ZFELIX_TEST'
IMPORTING
fm_name = fm_name
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3.
IF sy-subrc = 0.
CALL FUNCTION fm_name
EXPORTING
control_parameters = control_parameters
output_options = output_options
gs_out = gt_outtab
IMPORTING
job_output_info = job_output_info
job_output_options = job_output_options
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
* Convert smartforms to PDF
IF sy-subrc = 0.
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
format = 'PDF'
IMPORTING
bin_filesize = len
TABLES
otf = job_output_info-otfdata
lines = pdf
EXCEPTIONS
err_max_linewidth = 1
err_format = 2
err_conv_not_possible = 3
OTHERS = 4.
IF sy-subrc = 0.
CALL FUNCTION 'WS_DOWNLOAD' "注意这里下载中文可能乱码,是因为打印设备的问题,得要把
EXPORTING
filename = filename
filetype = 'BIN' "选'ASC'格式不行
bin_filesize = len
TABLES
data_tab = pdf
EXCEPTIONS
file_open_error = 1
file_write_error = 2
invalid_filesize = 3
invalid_table_width = 4
invalid_type = 5
no_batch = 6
unknown_error = 7
OTHERS = 8.
* Upload pdf to sever
IF sy-subrc = 0.
CONCATENATE 'D:\usr\sap\IDE\SYS\global\' gt_outtab-vbeln '.PDF' INTO ufile.
CALL FUNCTION 'C13Z_FILE_UPLOAD_BINARY'
EXPORTING
i_file_front_end = filename
i_file_appl = ufile
i_file_overwrite = 'X'
EXCEPTIONS
fe_file_not_exists = 1
fe_file_read_error = 2
ap_no_authority = 3
ap_file_open_error = 4
ap_file_exists = 5
OTHERS = 6.
COMMIT WORK.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.