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

Часовой пояс: 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 часа


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

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


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

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