'ASC' :
ASCII format. The table is transferred as text. Conversion exits are performed. The output format additionally depends on the parameters CODEPAGE, TRUNC_TRAILING_BLANKS, and TRUNC_TRAILING_BLANKS_EOL.
'IBM' :
ASCII format with IBM codepage conversion (DOS). This format corresponds to the 'ASC' format when using target codepage 1103. This codepage is frequently used for data exchange via floppy disk.
'DAT' :
Column-by-column transfer. With this format, the data is transferred as text as with ASC. However, no conversion exits are performed and the columns are separated by tab characters. This format generates files than can be uploaded again using gui_upload or ws_upload.
'DBF' :
Data is downloaded in dBase format. Since in this format the data types of the individual columns are stored as well, you can often avoid import problems, for example, into Microsoft Excel, especially when interpreting numeric values.
'WK1' :
Data is downloaded in Lotus 1-2-3 format.
'BIN' :
Binary format. Data is transferred binarily. There is no formatting and no codepage conversion. The data is interpreted row by row; it is not formatted by columns. Specify the data length in parameter BIN_FILESIZE. The table should consist of a column of type X, because especially in Unicode systems, the conversion of structured into binary data causes errors.
EG.Download as excel
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
* BIN_FILESIZE =
filename = l_file
filetype = 'ASC'
* APPEND = ' '
write_field_separator = 'X'
* HEADER = '00'
* TRUNC_TRAILING_BLANKS = ' '
* WRITE_LF = 'X'
* COL_SELECT = ' '
* COL_SELECT_MASK = ' '
* DAT_MODE = ' '
* CONFIRM_OVERWRITE = ' '
* NO_AUTH_CHECK = ' '
codepage = '8400'
* IGNORE_CERR = ABAP_TRUE
* REPLACEMENT = '#'
* WRITE_BOM = ' '
* TRUNC_TRAILING_BLANKS_EOL = 'X'
* WK1_N_FORMAT = ' '
* WK1_N_SIZE = ' '
* WK1_T_FORMAT = ' '
* WK1_T_SIZE = ' '
* WRITE_EOL = ABAP_TRUE
* IMPORTING
* FILELENGTH =
TABLES
data_tab = lt_main[]
fieldnames = tab_title
* 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
.
- adhibition
*&---------------------------------------------------------------------*
*& Report ZPDFDOWNLAOD
*&---------------------------------------------------------------------*
*&smartforms to PDF fields
*&
*&---------------------------------------------------------------------*
REPORT ZPDFDOWNLAOD.
DATA: l_formname TYPE tdsfname.
DATA: l_name TYPE rs38l_fnam.
DATA: ws_composer_param TYPE ssfcompop.
DATA: job_output TYPE ssfcrescl.
DATA:f_filename TYPE string,
f_path TYPE string,
f_fullpath TYPE string.
DATA: i_otf LIKE itcoo OCCURS 100 WITH HEADER LINE,
i_pdf LIKE tline OCCURS 100 WITH HEADER LINE.
PARAMETERS:p_001 TYPE c RADIOBUTTON GROUP grp ,
p_002 TYPE c RADIOBUTTON GROUP grp.
START-OF-SELECTION.
IF p_001 = 'X'.
l_formname = 'ZWENDY_001'.
ELSE.
l_formname = 'ZWENDY_002'.
ENDIF.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = l_formname
* VARIANT = ' '
* DIRECT_CALL = ' '
IMPORTING
fm_name = l_name
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE e398(00) WITH '没有获取打印的form表单'.
ENDIF.
***进行打印预览,获得输出otf数据
ws_composer_param-tdimmed = 'X'.
ws_composer_param-tddelete = 'X'.
ws_composer_param-tddest = 'LOCL'.
DATA: ls_control_param LIKE ssfctrlop OCCURS 0 WITH HEADER LINE.
ls_control_param-device = 'PRINTER'.
ls_control_param-no_dialog = 'X'.
ls_control_param-preview = 'X'.
ls_control_param-langu = 'E'.
ls_control_param-getotf = 'X' . "打印预览后生成otf数据
APPEND ls_control_param.
CALL FUNCTION l_name
EXPORTING
control_parameters = ls_control_param
output_options = ws_composer_param
user_settings = ''
IMPORTING
job_output_info = job_output. "包含otf输出数据
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
***将OTF数据转换为PDF数据
DATA:wa_toa_dara TYPE toa_dara.
DATA:f_filesize TYPE string.
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
format = 'PDF'
max_linewidth = 132
archive_index = wa_toa_dara
copynumber = 0
* ascii_bidi_vis2log = ' '
* pdf_delete_otftab = ' '
IMPORTING
bin_filesize = f_filesize "一定要加,否则会数据溢出
TABLES
otf = job_output-otfdata
lines = i_pdf
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.
***获取文件保存路径
CLEAR:f_filename,f_path,f_fullpath..
CALL METHOD cl_gui_frontend_services=>file_save_dialog
EXPORTING
default_file_name = '工厂外销报关文件'
default_extension = 'PDF'
file_filter = '*.PDF'
prompt_on_overwrite = 'X'
CHANGING
filename = f_filename
path = f_path
fullpath = f_fullpath
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4.
***下载PDF文件
IF f_fullpath IS NOT INITIAL.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = f_fullpath
filetype = 'BIN'
TABLES
data_tab = i_pdf.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
WRITE:/ '1、文件生成路径(双击可打开):', 30 f_path.
SKIP 1.
WRITE:/ '2、文件名(双击可打开):',30 f_filename.
ENDIF.
ELSE.
WRITE:/ '文件输出取消'.
ENDIF.