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

Технология передача range на нижние уровни иерархии из CDS-view
https://www.sapboard.ru/forum/viewtopic.php?f=13&t=97157
Страница 1 из 1

Автор:  Plank [ Пт, дек 14 2018, 09:27 ]
Заголовок сообщения:  Технология передача range на нижние уровни иерархии из CDS-view

Коллеги, доброе утро.

Требуется мнение экспертов в разработке.
Есть отчет, он основан на нескольких CDS-view, которые представляют собой иерархию из нескольких уровней.
Сейчас на нижнем уровне выбирается очень много данных, далее выполняется много обогащенный (join) и только на верхнем уровне происходит фильтрация по параметрам селекционного экрана. В результате может остаться 1 запись, а выбирается несколько миллионов...
CDS-view параметрические, но на селекционном экране SELECT-OPTIONS, и их не передать на нижний уровень CDS-view.
Предлагается следующее решение:
0. Делаем таблицу БД, ключ: имя пользователя, таймштамп, имя поля, счетчик. Далее поля для range.
1. При запуске отчета данные с СЭ из SELECT-OPTIONS сохраняются в таблицу.
2. Commit and wait.
3. По иерархии CDS через параметры передаем имя пользователя и таймштамп.
4. В CDS нижнего уровня делаем join ACDOCA с данными выбранными из нашей таблицы по параметрам.
5. Выбираются только нужные данные.
6. При выводе ALV чистим таблицу по нашим ключам запуска. Чтобы не накапливался мусор при неудачных запусках отчета (дамп по причине недостатка памяти), чистим все данные в нашей таблице старее 1 суток. Commit and wait.

С виду бред, но почему нет?

Автор:  Besa [ Пт, дек 14 2018, 10:07 ]
Заголовок сообщения:  Re: Технология передача range на нижние уровни стека CDS-view

CDS не понимает SO в чистом виде, его можно передать только строкой, но и в таком случае его не применить в самом CDS.
Это делается через AMDP (можно использовать в "чистом виде" вызвав AMDP класс в ABAP, можно вызвать AMDP через CDS).

https://blogs.sap.com/2018/03/21/select-options-in-cds-using-table-function/

https://blogs.sap.com/2015/03/30/handling-of-select-options-parameters-within-amdp/

Автор:  Rizor [ Пт, дек 14 2018, 14:26 ]
Заголовок сообщения:  Re: Технология передача range на нижние уровни иерархии из CDS-view

Добрый день.
Интереса ради.

То есть вы делаете SELECT из верхнеуровнего CDS VIEW с WHERE par IN s_params, и наблюдается падение производительности из - за большого кол - ва записей в нижестоящих CDS ?
Или аномальное потребление оперативки в Hana?
Просто думал, что Hana должна объединить автоматом все CDS в один супер-джойн и как - то оптимально его отфильтровать.
Случай то в общем стандартный ...


По вопросу - вроде в версии 7.52 появились Global Temporary Tables, которые можно использовать для join-a в CDS

Автор:  trop [ Пн, дек 17 2018, 16:05 ]
Заголовок сообщения:  Re: Технология передача range на нижние уровни иерархии из CDS-view

Иногда проще заменить выборку из CDS ракурса на выборку из исходных таблиц,
например CDS ракурс VFCLMMMALL - http://files.rsdn.org/6151/VFCLMMMALL_groups.png

Автор:  Plank [ Пн, дек 17 2018, 16:52 ]
Заголовок сообщения:  Re: Технология передача range на нижние уровни иерархии из CDS-view

Спасибо за советы. Там уже часть CDS заменили на ABAP...

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