Текущее время: Сб, авг 02 2025, 20:21

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 41 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: SPLIT
СообщениеДобавлено: Пт, июл 18 2008, 13:01 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, апр 25 2006, 15:14
Сообщения: 280
Есть длинная строка (длина около 200), в ней значения разделены спец символом (например пробелом), нужно такие строки записать в таблицу (т.к. заранее известно какое по порядку значение в строке, какому полю должно принадлежать)
Поэтому возник такой вопрос, можно ли результат SPLIT записать в структуру? Т.е. что-то типа SPLIT a TO b INTO struc


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июл 18 2008, 13:04 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
В структуру нет, можно в таблицу, что удобнее.

_________________
Я слышу и забываю,
Я вижу и помню долго,
Я делаю и — понимаю.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июл 18 2008, 13:08 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, апр 25 2006, 15:14
Сообщения: 280
Lars написал:
В структуру нет, можно в таблицу, что удобнее.


В хелпе описан примитивный случай, когда в таблицу из string просто складываются по очереди строки из результата SPLIT.
А если таблица будет обычная, (ну допустим там 20 полей), сложится ли результат SPLIT по полям (т.е. как изначально и надо)? или можно результат записать только в такую вот таблицу из одного string?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июл 18 2008, 13:15 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
Вы пробовали работать со split c записью в таблицу?
попробуйте, думаю, станет понятнее.
Ни какой таблицы с 20-ю полями там быть не должно.

_________________
Я слышу и забываю,
Я вижу и помню долго,
Я делаю и — понимаю.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июл 18 2008, 13:53 
Менеджер
Менеджер

Зарегистрирован:
Вт, дек 07 2004, 10:39
Сообщения: 610
а в чем проблема написать по полям в wa и append?

_________________
полный SAPец


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SPLIT
СообщениеДобавлено: Пт, июл 18 2008, 14:26 
Начинающий
Начинающий

Зарегистрирован:
Пт, июл 11 2008, 14:23
Сообщения: 24
tdebug написал(а):
Есть длинная строка (длина около 200), в ней значения разделены спец символом (например пробелом), нужно такие строки записать в таблицу (т.к. заранее известно какое по порядку значение в строке, какому полю должно принадлежать)
Поэтому возник такой вопрос, можно ли результат SPLIT записать в структуру? Т.е. что-то типа SPLIT a TO b INTO struc


SPLIT в структуру выводить не умеет, только в таблицу. А поля структуры пробегаются по порядку с помощью ASSIGN COMPONENT например:

Code:
CONSTANTS: c_separator(01) TYPE c VALUE space.

DATA: BEGIN OF ls_struct,
  comp1 TYPE string,
  comp2 TYPE string,
END OF ls_struct.

DATA: lh_string(200) TYPE c,
      lh_comp TYPE string,
      lh_rest TYPE string.

FIELD-SYMBOLS: <fs_struct> LIKE ls_struct,
               <fs_comp>   TYPE ANY.

lh_rest = lh_string.
ASSIGN ls_struct TO <fs_struct>.
DO.
  SPLIT lh_rest AT c_separator INTO lh_comp lh_rest.
  ASSIGN COMPONENT sy-index OF STRUCTURE <fs_struct> TO <fs_comp>.
  IF sy-subrc NE 0. EXIT. ENDIF.
  <fs_comp> = lh_comp.
ENDDO.


До вести до ума этот кусок кода нужно только...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июл 18 2008, 14:29 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
жесть ...

_________________
Я слышу и забываю,
Я вижу и помню долго,
Я делаю и — понимаю.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июл 18 2008, 14:33 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Ср, ноя 01 2006, 22:58
Сообщения: 794
Откуда: Заарбрюкен
Пол: Мужской
А вот если вы делить пробелами ее не будете, то можно просто присвоить :)
Тупо по длине компонент все разобьется... В смысла присвоить структуре и в аппендом в табличку...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июл 18 2008, 14:38 
Начинающий
Начинающий

Зарегистрирован:
Пт, июл 11 2008, 14:23
Сообщения: 24
Lars написал:
жесть ...

зато работает... помню как сам с этим бился - ну никак по-другому не получалось разбить строку в структуру....


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июл 18 2008, 14:46 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, апр 25 2006, 15:14
Сообщения: 280
Konstantin Anikeev написал:
А вот если вы делить пробелами ее не будете, то можно просто присвоить :)
Тупо по длине компонент все разобьется... В смысла присвоить структуре и в аппендом в табличку...


Там в файле значения разделены не пробелами а |, и я на это никак не повлияю...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июл 18 2008, 14:50 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Ср, ноя 01 2006, 22:58
Сообщения: 794
Откуда: Заарбрюкен
Пол: Мужской
А чего тогда правда сразу в табличку не читать?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июл 18 2008, 15:07 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
ДенисК написал(а):
Lars написал:
жесть ...

зато работает... помню как сам с этим бился - ну никак по-другому не получалось разбить строку в структуру....


"зато" - это не показатель.
Много чего в SAP работает "зато".

Вот нашел кусок, тоже "зато" работает.
Code:
select single bankn from knbk into bankn where kunnr eq kna1-kunnr.
select single bkont from knbk into bkont where kunnr eq kna1-kunnr.
select single bankl from knbk into bankl where kunnr eq kna1-kunnr.


Не в моих правилах коментировать чужой код, но...

Разбить строку можно сразу в таблицу split-ом.
И не делать ни какого do .. enddo.
Структура в которую вы потом пишите с компоненетами string, а что будет если там будет не только string?
Assign хорошо, но ... как минимум не плохо было бы сделать casting по этому полю, чтобы не получилось что в цифровое поле пишется string, что приведет к дампу.

А городить огород человеку в данном случае смысла нет, у него известна последовательность и поля. split, loop и больше ни чего, если только проверка на типы.

_________________
Я слышу и забываю,
Я вижу и помню долго,
Я делаю и — понимаю.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июл 18 2008, 15:20 
Начинающий
Начинающий

Зарегистрирован:
Пт, июл 11 2008, 14:23
Сообщения: 24
Точно! Помню же "что-то забыл" - casting не сделал.
2Lars, Зачем же делать SPLIT в таблицу, а потом заполнять структуру, если можно сразу заполнить компоненты структуры?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июл 18 2008, 15:22 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
Konstantin Anikeev написал:
А вот если вы делить пробелами ее не будете, то можно просто присвоить :)
Тупо по длине компонент все разобьется... В смысла присвоить структуре и в аппендом в табличку...


а если это unicode система?

_________________
Я слышу и забываю,
Я вижу и помню долго,
Я делаю и — понимаю.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июл 18 2008, 15:27 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
ДенисК написал(а):
Точно! Помню же "что-то забыл" - casting не сделал.
2Lars, Зачем же делать SPLIT в таблицу, а потом заполнять структуру, если можно сразу заполнить компоненты структуры?


То как писать, личное дело каждого. Если Вы считаете, что так удобнее и проще - пусть так.

Для меня проще сделать 1 раз split. и пробежать значения в loop с тем же самым assign.
Чем split в цикле do enddo.

_________________
Я слышу и забываю,
Я вижу и помню долго,
Я делаю и — понимаю.


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

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


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

Сейчас этот форум просматривают: Yandex [Bot]


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

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