Понятно, логика завязана на символ
"Есть еще пара Фм-ов, но они также не понимают это.
Как вариант, сохранить csv в xls и загрузить.
TEXT_CONVERT_XLS_TO_SAP не обязательно (не суть), можно эксель грузить и через cl_gui_frontend_services=>gui_upload и через ALSM_EXCEL_TO_INTERNAL_TABLE например.
UPD: Не знаю, это фитча парсера экселя или особенности самого формата. С другой стороны, что если мне надо будет получить данные и распарсить именно строго по разделителю символа ; и при этом не учитывать последовательность отрытых/закрытых символов "
Code:
types:
begin of ty_csv,
field1 type text255,
field2 type text255,
field3 type text255,
field4 type text255,
field5 type text255,
field6 type text255,
field7 type text255,
field8 type text255,
field9 type text255,
field10 type text255,
field11 type text255,
field12 type text255,
end of ty_csv.
data lv_rawdata type pbeu0_t_raw_data.
data lv_file type string.
data lt_csv type standard table of ty_csv.
data lt_excel type standard table of ty_csv.
data lv_file_ type rlgrap-filename.
break-point.
lv_file = 'C:\Users---\Documents\SAP\SAP GUI\1.xls'.
"lv_file = 'C:\Users\---\Documents\SAP\SAP GUI\1.txt'.
"lv_file = 'C:\Users\---\Documents\SAP\SAP GUI\1.csv'.
* upload data from file into rawdata
call function 'GUI_UPLOAD'
exporting
filename = lv_file
filetype = 'ASC'
tables
data_tab = lv_rawdata
exceptions
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
others = 10.
if sy-subrc = 0.
** convert data - fill internal table with data
* call function 'HR_BE_CONVERT_CSV_TO_TAB'
* exporting
* it_tab_raw_data = lv_rawdata
* tables
* p_tab_converted_data = lt_csv
* exceptions
* conversion_failed = 1
* others = 2.
* call function 'TEXT_CONVERT_CSV_TO_SAP'
* exporting
** I_FIELD_SEPERATOR = ';'
** I_LINE_HEADER =
* i_tab_raw_data = lv_rawdata
** I_FILENAME =
* tables
* i_tab_converted_data = lt_csv
** EXCEPTIONS
** CONVERSION_FAILED = 1
** OTHERS = 2
* .
* if sy-subrc <> 0.
** Implement suitable error handling here
* endif.
lv_file_ = lv_file.
call function 'TEXT_CONVERT_XLS_TO_SAP'
exporting
* I_FIELD_SEPERATOR =
* I_LINE_HEADER =
i_tab_raw_data = lv_rawdata
i_filename = lv_file_
tables
i_tab_converted_data = lt_excel
* EXCEPTIONS
* CONVERSION_FAILED = 1
* OTHERS = 2
.
if sy-subrc <> 0.
* Implement suitable error handling here
endif.
endif.
break-point.