Follow the below steps to download Smartform output as PDF file.
- Suppress the print dialog box by setting the NO_DIALOG flag of CONTROL_PARAMETERS
- Get the OTF data by setting the GETOTF flag of CONTROL_PARAMETERS
- Use function module CONVERT_OTF to convert OTF to PDF
- Use function module GUI_DOWNLOAD to download the PDF file to presentation server
Below program converts the smartform output to PDF and downloads it to presentation server.
*&---------------------------------------------------------------------* *& Data Declaration *&---------------------------------------------------------------------* DATA: gv_formname TYPE tdsfname VALUE 'ZZDEMO', gv_fm_name TYPE rs38l_fnam. DATA: gwa_ssfcompop TYPE ssfcompop, gwa_control TYPE ssfctrlop. DATA: gv_devtype TYPE rspoptype. DATA: gv_job_output TYPE ssfcrescl. DATA: gt_lines TYPE TABLE OF tline. DATA: gv_size TYPE i. *&---------------------------------------------------------------------* *& START-OF-SELECTION *&---------------------------------------------------------------------* START-OF-SELECTION. *Get the function module name using form name CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' EXPORTING formname = gv_formname IMPORTING fm_name = gv_fm_name 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. *Get Device Type CALL FUNCTION 'SSF_GET_DEVICE_TYPE' EXPORTING i_language = sy-langu IMPORTING e_devtype = gv_devtype EXCEPTIONS no_language = 1 language_not_installed = 2 no_devtype_found = 3 system_error = 4 OTHERS = 5. gwa_ssfcompop-tdprinter = gv_devtype. *Suppress print dialog gwa_control-no_dialog = 'X'. gwa_control-getotf = 'X'. *Trigger the smartform CALL FUNCTION gv_fm_name EXPORTING control_parameters = gwa_control output_options = gwa_ssfcompop IMPORTING job_output_info = gv_job_output 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. *Convert OTF to PDF CALL FUNCTION 'CONVERT_OTF' EXPORTING format = 'PDF' IMPORTING bin_filesize = gv_size TABLES otf = gv_job_output-otfdata lines = gt_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. *Download PDF file to presentation server CALL FUNCTION 'GUI_DOWNLOAD' EXPORTING bin_filesize = gv_size filename = 'C:\demo.pdf' filetype = 'BIN' TABLES data_tab = gt_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 sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF.