Текущее время: Чт, мар 28 2024, 15:51

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Перенос данных Excel => SAP
СообщениеДобавлено: Ср, сен 12 2018, 17:21 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Igor_Beruk написал(а):
Здравствуйте,коллеги! Может кто поможет или подскажет,может кто сталкивался. Такая ситуация. Есть csv файл,в самих полях которого могут присутствовать ';' - при считывании во внутреннюю таблицу стандартными ФМ происходит неверная интерпритация из-за этого. Как это обойти?

В смысле "как обойти"? :roll:
Представьте что это не стандартный Фм, а Ваш собственный, вот у Вас есть строка которую нужно распарсить, где по условию ";" является разделителем, как Вы сами поймете что является разделителем, а что нет? Что Вам говорит на этот счет источник который собрал такой файл?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перенос данных Excel => SAP
СообщениеДобавлено: Ср, сен 12 2018, 18:09 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, окт 23 2015, 14:48
Сообщения: 90
Ну,смотрите

есть,например,такие данные

1;2;3;;"";NULL;"NULL";Тест;"Тест";"""Тест""";"Verknüpfung Général Ää Öö Üü Ёё Русский текст ""Key=Value"";<1>;'';''";2017-01-10 12:12:43.331

если просто вставить их в текстовый файлик и сохранить как test.csv

то получится

field0 1
field1 2
field2 3
field3
field4
field5
field6 NULL
field7 Тест
field8 Тест
field9 "Тест"
field10 Verknüpfung Général Ää Öö Üü Ёё Русский текст "Key=Value";<1>;'';''
field11 10.01.2017 12:12:43


если я в сапе забираю этот csv файлик к примеру через gui_download он у меня преобразуется изначально в одну строку эту
1;2;3;;"";NULL;"NULL";Тест;"Тест";"""Тест""";"Verknüpfung Général Ää Öö Üü Ёё Русский текст ""Key=Value"";<1>;'';''";2017-01-10 12:12:43.331
а когда я пытаюсь его выгрузить ,например, через 'TEXT_CONVERT_CSV_TO_SAP' то уже например field10 выгружается неправильно - потому что внутри него самого есть ';'.

т.е. у меня ; может быть помимо разделителя полей в csv при выгрузке еще в любом месте


и изначально я имею файлик csv скажем так - такой какой мне нужно. Но как мне потом его распарсить так-чтобы знать какое значение к какому полю принадлежало изначально,ведь у меня забирается все в одну строку,и по умолчанию поля в csv разделяются ;. А у меня внутри самих полей могут быть ;. Понимаете меня?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Перенос данных Excel => SAP
СообщениеДобавлено: Чт, сен 13 2018, 08:00 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Понятно, логика завязана на символ "
Есть еще пара Фм-ов, но они также не понимают это.

Как вариант, сохранить 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.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перенос данных Excel => SAP
СообщениеДобавлено: Чт, сен 13 2018, 08:32 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
https://ru.wikipedia.org/wiki/CSV
Цитата:
Значения, содержащие зарезервированные символы (двойная кавычка, запятая, точка с запятой, новая строка) обрамляются двойными кавычками ("). Если в значении встречаются кавычки — они представляются в файле в виде двух кавычек подряд.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перенос данных Excel => SAP
СообщениеДобавлено: Чт, сен 13 2018, 08:53 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Во, вот это работает, так и думал, что где то в классах сделали.

cl_rsda_csv_converter

Код скопируйте отсюда, на строке 52 укажите Ваш separator - ';' и data : lw_struct type ztest_struc типизируйте как надо.
https://gist.github.com/viksingh/c794ef0ee5cdbafa1d76


Последний раз редактировалось Besa Чт, сен 13 2018, 09:01, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перенос данных Excel => SAP
СообщениеДобавлено: Чт, сен 13 2018, 08:59 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Этот Фм тоже проверил, работает как надо
Code:
    call function 'RSDS_CONVERT_CSV'


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перенос данных Excel => SAP
СообщениеДобавлено: Чт, сен 13 2018, 10:10 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, окт 23 2015, 14:48
Сообщения: 90
Спасибо,Вам,огромное! Все работает! СПАСИБО!Я ИДИЁТ, УБЕЙТЕ МИНЯ КТО-НИБУДЬ!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB