SAPфорум.RU
https://www.sapboard.ru/forum/

Ведение динамических таблиц
https://www.sapboard.ru/forum/viewtopic.php?f=13&t=86986
Страница 2 из 2

Автор:  proga19 [ Пн, ноя 07 2022, 11:24 ]
Заголовок сообщения:  Re: Ведение динамических таблиц

broker.chelny написал:
Для сравнения 2 внутренних динамических таблиц я обычно использую поле-структуру с ключами.
Т.е. первым полем завожу структуру, а дальше уже остальные данные.



Можете наглядно написать пожалуйста, как это выглядит ?

Автор:  broker.chelny [ Вт, ноя 08 2022, 13:12 ]
Заголовок сообщения:  Re: Ведение динамических таблиц

Объявляешь переменную с нужной структурой.
Далее получаешь описание структуры по переменной (RTTS класс), хотя можно и по имени получить.
Далее в таблицу с компонентами будущей таблицы добавляешь описание этой структуры, например с именем KEY. Потом по таблице с компонентами создаешь описание структуры, по ней создаешь описание внутренней таблицы и создаешь ее в памяти.
Далее заполняешь внутреннюю таблицу.
Потом можно сделать сортировку
Code:
SORT <itab> BY ('KEY')

Потом можно искать запись через
Code:
READ TABLE <itab> WITH KEY ('KEY') = lv_key BINARY SEARCH...


Никто не мешает в памяти создавать отсортированные и хэшированные таблицы, тогда можно уже искать так:
Code:
FIELD-SYMBOL: <fs_key> TYPE ts_key.
assign component 1 of structure <wa_data> to <fs_key>.
<fs_key> = lv_key.
Или <fs_key>-comp1 = '...'. <fs_key>-comp2 = '...'.
READ TABLE <itab> FROM <wa_data>...

Только в памяти еще нужно будет создать рабочую область (<wa_data>) со структурой внутренней таблицы

Автор:  proga19 [ Чт, ноя 10 2022, 13:23 ]
Заголовок сообщения:  Re: Ведение динамических таблиц

Благодарю!

Подскажите а существует ли способ выполнить операцию COLLECT для динамической таблицы или можно как то по другому быстро сгруппировать строки по ДТ?
На форуме в самом конце человек аналогичный вопрос задает.....
https://blogs.sap.com/2013/06/11/dynami ... nal-table/

Автор:  broker.chelny [ Пт, ноя 11 2022, 09:24 ]
Заголовок сообщения:  Re: Ведение динамических таблиц

Не знаю.
Я пользуюсь самописным методом, который принимает на вход ANY TABLE и меняет HASHED TABLE.
Группировка идет по ключам определенными в хэшированной таблице.
+ дополнительно передаю по каким поля считать сумму, по каким находить минимум или максимум, по каким брать первое попавшееся значение.

Страница 2 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/