Тип Шаблон Отчёт
Excel Скачать шаблон Скачать отчёт
Создать этот пример Выберите шаблон и создайте новый отчёт с помощью демонстрационного сервиса.

xtt->merge( iv_block_name = 'R' is_block =

JSON
{"TITLE":"Title","T":[{"GROUP":"GRP A","CAPTION":"<Caption 1 />","DATE":"2020-10-21","SUM1":5971.44,"SUM2":5021.46},{"GROUP":"GRP C","CAPTION":"<Caption 2 />","DATE":"2020-10-19","SUM1":2276.75,"SUM2":7717.2},{"GROUP":"GRP B","CAPTION":"<Caption 3 />","DATE":"2020-10-20","SUM1":3031.38,"SUM2":445.22},{"GROUP":"GRP A","CAPTION":"<Caption 4 />","DATE":"2020-10-21","SUM1":9476.79,"SUM2":3683.27},{"GROUP":"GRP A","CAPTION":"<Caption 5 />","DATE":"2020-10-21","SUM1":4604.0,"SUM2":5525.85},{"GROUP":"GRP C","CAPTION":"<Caption 6 />","DATE":"2020-10-19","SUM1":2159.71,"SUM2":2260.94},{"GROUP":"GRP B","CAPTION":"<Caption 7 />","DATE":"2020-10-20","SUM1":2490.3,"SUM2":6388.81},{"GROUP":"GRP A","CAPTION":"<Caption 8 />","DATE":"2020-10-21","SUM1":5476.81,"SUM2":406.18},{"GROUP":"GRP D","CAPTION":"<Caption 9 />","DATE":"2020-10-18","SUM1":689.66,"SUM2":518.6},{"GROUP":"GRP C","CAPTION":"<Caption 10 />","DATE":"2020-10-19","SUM1":5451.87,"SUM2":4061.85},{"GROUP":"GRP D","CAPTION":"<Caption 11 />","DATE":"2020-10-18","SUM1":4573.55,"SUM2":5436.0},{"GROUP":"GRP C","CAPTION":"<Caption 12 />","DATE":"2020-10-19","SUM1":1196.35,"SUM2":522.46},{"GROUP":"GRP C","CAPTION":"<Caption 13 />","DATE":"2020-10-19","SUM1":7686.95,"SUM2":2727.98},{"GROUP":"GRP D","CAPTION":"<Caption 14 />","DATE":"2020-10-18","SUM1":978.18,"SUM2":295.55},{"GROUP":"GRP D","CAPTION":"<Caption 15 />","DATE":"2020-10-18","SUM1":71.12,"SUM2":8878.56}]}

).


Создать демо 052

Aggregation functions

Предпросмотр запроса

Назначение

Демо-класс ZCL_XTT_DEMO_052 рассчитывает значения родителя по дочерним строкам. Для нестандартной логики используйте событие PREPARE_TREE; для обычных итогов - функции SUM, AVG, COUNT и FIRST в директиве ;func=.

Расчет в ABAP коде

Для расчета подитогов родительского уровня на основе дочерних элементов существует специальное событие

где можно написать простой цикл и рассчитать что нужно в конкретном случае

Кроме приведения к конкретному типу через ASSIGN нет ничего сложного Но данный метод также не совсем информативен

Функции агрегации

Для этого было введено дополнение ;func= с функциями SUM | AVG | COUNT | FIRST

Функцию можно указать 1 раз для всего уровня. Не обязательно ее писать в каждой ячейке с {R-T_CH_COUNT;func=COUNT} для level=1

Обратите внимание что в примере для уровня 0 среднее дочерних (AVG). А для уровня 1 сумма дочерних (SUM)

  • FIRST берет значение из первого дочернего элемента
  • COUNT возвращает их количество


Комбинировать программный способ и декларативный возможно. Но по моему мнению в шаблоне это выглядит немного понятнее