在使用GUI_DOWNLOAD下载的时候出现中文乱码的时候需要更改一下CODEPAGE
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
* BIN_FILESIZE =
FILENAME = LV_FULLPATH
FILETYPE = 'DAT'
* 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 = '8404' "防止中文乱码
* 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_LF_AFTER_LAST_LINE = ABAP_TRUE
* SHOW_TRANSFER_STATUS = ABAP_TRUE
* VIRUS_SCAN_PROFILE = '/SCET/GUI_DOWNLOAD'
* IMPORTING
* FILELENGTH =
TABLES
DATA_TAB = GT_DOWN[]
FIELDNAMES = GT_FIELDNAME[]
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.
* Implement suitable error handling here
ENDIF.
在使用GUI_DOWNLOAD下载的时候出现换行是因为,文本内容中有特殊符号(TAB,换行等),在读取数据的时候需要剔除这些特殊字符
CONSTANTS :
C_TAB TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB,
C_CR_LF TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>CR_LF,
C_VERTICAL_TAB TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>VERTICAL_TAB,
C_NEWLINE TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>NEWLINE ,
C_FORM_FEED TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>FORM_FEED,
C_BACKSPACE TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>BACKSPACE,
C_LITTLE TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>BYTE_ORDER_MARK_LITTLE,
C_UTF8 TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>BYTE_ORDER_MARK_UTF8.
"除去特殊字符,防止Excel下载换行
LOOP AT GT_DOWN ASSIGNING FIELD-SYMBOL(<FS_DOWN>).
REPLACE c_tab WITH '' INTO <FS_DOWN>-FIELDNAME.
REPLACE c_CR_LF WITH '' INTO <FS_DOWN>-FIELDNAME.
REPLACE c_VERTICAL_TAB WITH '' INTO <FS_DOWN>-FIELDNAME.
REPLACE c_NEWLINE WITH '' INTO <FS_DOWN>-FIELDNAME.
REPLACE c_FORM_FEED WITH '' INTO <FS_DOWN>-FIELDNAME.
REPLACE c_BACKSPACE WITH '' INTO <FS_DOWN>-FIELDNAME.
REPLACE c_LITTLE WITH '' INTO <FS_DOWN>-FIELDNAME.
REPLACE c_UTF8 WITH '' INTO <FS_DOWN>-FIELDNAME.
ENDLOOP.