DATA: lv_func_module_name TYPE rs38l_fnam, "打印程序函数名lv_sformname TYPE tdsfname, "smartforms名称ls_control_parameters TYPE ssfctrlop,ls_output TYPE ssfcompop,ls_job_output_info TYPE ssfcrescl,ls_ssfcrespd TYPE ssfcrespd,lv_index TYPE i."PDF变量
DATA:lv_file_size TYPE i, "PDF文件大小lv_bin_fiel TYPE xstring, "二进制文件流lt_lines TYPE STANDARD TABLE OF tline,lt_otfdata TYPE tsfotf. "OTF数据lv_sformname = 'ZSFPP_001'.CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'EXPORTINGformname = lv_sformnameIMPORTINGfm_name = lv_func_module_nameEXCEPTIONSno_form = 1no_function_module = 2OTHERS = 3.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.ENDIF.* 打印参数赋值ls_control_parameters-no_open = 'X'.ls_control_parameters-no_close = ''. ls_control_parameters-getotf = 'X'."返回OTF表LOOP AT gt_data5 ASSIGNING FIELD-SYMBOL(<fs_data5>) .AT END OF lgort.CALL FUNCTION 'SSF_OPEN'EXPORTINGcontrol_parameters = ls_control_parametersEXCEPTIONSformatting_error = 1internal_error = 2send_error = 3user_canceled = 4OTHERS = 5."调用smartformsCALL FUNCTION lv_func_module_nameEXPORTINGcontrol_parameters = ls_control_parametersgs_head = gs_data7gv_title = gv_titleIMPORTINGjob_output_info = ls_job_output_infoTABLESgt_item = gt_data7EXCEPTIONSformatting_error = 1internal_error = 2send_error = 3user_canceled = 4OTHERS = 5.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.ENDIF."OTF数据赋值APPEND LINES OF ls_job_output_info-otfdata TO lt_otfdata.ENDAT.ENDLOOP.CALL FUNCTION 'SSF_CLOSE'EXCEPTIONSformatting_error = 1internal_error = 2send_error = 3OTHERS = 4."SMARTFORMS转PDFCALL FUNCTION 'CONVERT_OTF'EXPORTINGformat = 'PDF'IMPORTINGbin_filesize = lv_file_sizeTABLESotf = lt_otfdatalines = lt_linesEXCEPTIONSerr_max_linewidth = 1err_format = 2err_conv_not_possible = 3OTHERS = 4.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.ENDIF.***BEGIN&-------------------保存PDF文件到本地----------------******************************DATA: lv_filename TYPE string, "保存pdf文件名lv_path TYPE string,lv_fullpath TYPE string, "文件全路径lv_user_act TYPE i. "用户操作类型lv_filename = gv_title && '.pdf'.CALL METHOD cl_gui_frontend_services=>file_save_dialog "保存文件 窗口EXPORTINGwindow_title = '保存文件'default_extension = 'PDF' "文件后缀default_file_name = lv_filename "文件名
* with_encoding =file_filter = '*.PDF'
* initial_directory =prompt_on_overwrite = 'X'CHANGINGfilename = lv_filenamepath = lv_pathfullpath = lv_fullpathuser_action = lv_user_act "用户操作类型
* file_encoding =EXCEPTIONScntl_error = 1error_no_gui = 2not_supported_by_gui = 3invalid_default_file_name = 4OTHERS = 5.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.ELSE.IF lv_user_act = cl_gui_frontend_services=>action_cancel.MESSAGE '取消存取' TYPE 'S' DISPLAY LIKE 'E'.ENDIF.ENDIF.CALL FUNCTION 'GUI_DOWNLOAD'EXPORTINGbin_filesize = lv_file_sizefilename = lv_fullpathfiletype = 'BIN'
* APPEND = ' '
* IMPORTING
* FILELENGTH =TABLESdata_tab = lt_lines
* FIELDNAMES =EXCEPTIONSfile_write_error = 1no_batch = 2gui_refuse_filetransfer = 3invalid_type = 4no_authority = 5unknown_error = 6header_not_allowed = 7separator_not_allowed = 8filesize_not_allowed = 9header_too_long = 10dp_error_create = 11dp_error_send = 12dp_error_write = 13unknown_dp_error = 14access_denied = 15dp_out_of_memory = 16disk_full = 17dp_timeout = 18file_not_found = 19dataprovider_exception = 20control_flush_error = 21OTHERS = 22.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.ENDIF.
方法二:smartforms转换成PDF[CONVERT_OTF] | 摆渡SAP (baidusap.com)
Smart Form主要通过SSFCTRLOP和SSFCOMPOP两个参数来配置打印控制的 |