Download Smartform Output as PDF File
Follow the below steps to download Smartform output as PDF file.
1. Suppress the print dialog box by setting the NO_DIALOG flag of CONTROL_PARAMETERS
2. Get the OTF data by setting the GETOTF flag of CONTROL_PARAMETERS
3. Use function module CONVERT_OTF to convert OTF to PDF
4. 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.
Follow the below steps to download Smartform output as PDF file.
1. Suppress the print dialog box by setting the NO_DIALOG flag of CONTROL_PARAMETERS
2. Get the OTF data by setting the GETOTF flag of CONTROL_PARAMETERS
3. Use function module CONVERT_OTF to convert OTF to PDF
4. 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.
0 comments:
Post a Comment