REPORT z_smartform_template_pdf. DATA: v_control_params TYPE ssfctrlop, v_output_options TYPE ssfcompop, v_output_info TYPE ssfcrescl. DATA: i_pdf_data TYPE tline_t. DATA: v_spool_id TYPE rspoid, v_num_bytes TYPE i, v_filename TYPE string VALUE 'filename.pdf'. *---------------------------------------------------------------------* * START-OF-SELECTION *---------------------------------------------------------------------* START-OF-SELECTION. CLEAR: v_output_info, i_pdf_data. REFRESH: i_pdf_data. PERFORM setup_smartform_for_pdf. PERFORM run_smartform USING 'MYSMARTFORM' v_control_params v_output_options CHANGING v_output_info. LOOP AT v_output_info-spoolids INTO v_spool_id. * Convert the spool to a PDF document PERFORM convert_otf_spool_to_pdf USING v_spool_id CHANGING v_num_bytes i_pdf_data. * Downloading the PDF document to the local PC PERFORM download_pdf_to_file USING v_num_bytes v_filename i_pdf_data. ENDLOOP. *---------------------------------------------------------------------* * FORM setup_smartform_for_pdf *---------------------------------------------------------------------* * [+] Sets the parameters for PDF conversions *---------------------------------------------------------------------* FORM setup_smartform_for_pdf. CLEAR: v_control_params, v_output_options. v_output_options-tddest = 'LOCP'. v_output_options-tdprinter = 'SAPWIN'. v_output_options-tdnewid = 'X'. v_output_options-tdimmed = space. v_output_options-tddelete = 'X'. v_output_options-tdlifetime = 1. v_output_options-tdfinal = 'X'. v_control_params-no_dialog = 'X'. v_control_params-device = 'PRINTER'. ENDFORM. "setup_smartform_for_pdf *---------------------------------------------------------------------* * FORM run_smartform *---------------------------------------------------------------------* * [+] Runs the SmartForm of the given name *---------------------------------------------------------------------* FORM run_smartform USING p_form_name TYPE c p_control_params TYPE ssfctrlop p_output_options TYPE ssfcompop CHANGING p_output_info TYPE ssfcrescl. DATA: lv_function_name TYPE rs38l_fnam. * Find the SmartForm function module name CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' EXPORTING formname = p_form_name IMPORTING fm_name = lv_function_name EXCEPTIONS no_form = 1 no_function_module = 2 OTHERS = 99. IF sy-subrc <> 0. EXIT. ENDIF. * Run the SmartForm function module CALL FUNCTION p_form_name EXPORTING control_parameters = p_control_params output_options = p_output_options user_settings = ' ' IMPORTING job_output_info = p_output_info EXCEPTIONS formatting_error = 1 internal_error = 2 send_error = 3 user_canceled = 4 OTHERS = 99. ENDFORM. "run_smartform *----------------------------------------------------------------------* * FORM convert_otf_spool_to_pdf *----------------------------------------------------------------------* * [+] Converts a OTF spool document to a PDF data stream *----------------------------------------------------------------------* FORM convert_otf_spool_to_pdf USING p_spool_id TYPE rspoid " spool id number CHANGING p_num_bytes TYPE i " no. of bytes in output p_pdf TYPE tline_t. " the output * Write the spooled report to a PDF file CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF' EXPORTING src_spoolid = p_spool_id no_dialog = ' ' IMPORTING pdf_bytecount = p_num_bytes TABLES pdf = p_pdf EXCEPTIONS OTHERS = 99. ENDFORM. "convert_otf_spool_to_pdf *----------------------------------------------------------------------* * FORM download_pdf_to_file *----------------------------------------------------------------------* * [+] Downloads PDF data (TLINE) to a local file *----------------------------------------------------------------------* FORM download_pdf_to_file USING p_num_bytes TYPE i p_filename TYPE string p_data TYPE tline_t. DATA: lv_append TYPE xfeld. * Download the PDF data to a file on the users' computer CALL METHOD cl_gui_frontend_services=>gui_download EXPORTING bin_filesize = p_num_bytes filename = p_filename filetype = 'BIN' append = lv_append CHANGING data_tab = p_data EXCEPTIONS OTHERS = 99. ENDFORM. "download_pdf_to_file