Группировка в цикле ABAP LOOP GROUP

Группировка в цикле ABAP GROUP BY

В версии 7.40 в ABAP появилась возможность группировать данные в цикле и обрабатывать эти группы необходимым образом. Это дополнение не только уменьшает количество строк кода для реализации задач, но и улучшает производительность.

В этой статье на примере задачи по суммированию в цикле и выделению промежуточных итогов разберём использование дополнения LOOP GROUP BY. Задача состоит в группировке:

  • По сбытовым организациям и заводам
  • По материалам
  • И у нас так же было требование выводить и подробные записи без группировки, поэтому нельзя было организовать группировку раньше, например на уровне базы данных.
LOOP GROUP ABAP Группировка в цикле

Суммирование в цикле ABAP. Пример

«1» — DATA(ls_data) — динамически определяем структуру.
«2» — Задаём поля, по которым хотим сгруппировать записи таблицы.
«3» — group_ref_werks — Динамически определяем переменную в которую по очереди будут помещаться группы записей с одинаковыми ключевыми полями.
«4» — Используя конструкцию LOOP GROUP пройдём по выделенной группе записей group_ref_werks.
«5» — Здесь можем обработать группу цикла и не группировать, но нам нужна дополнительная группировка ещё и по материалу.
«6» — Помещаем подгруппу уже по новому ключу состоящему не из двух полей, как на уровне выше, а из трёх.
«7» — Обрабатываем группу полученную выше и суммируем значения всех записей находящихся в ней.
«8» — Если это первая строка, из группы, то копируем значения.
«9» — Выйдя из этого цикла обработана вся первая группа с одинаковым набором трёх полей.
«10» — После этого можно произвести расчёт зависимых от суммированных полей.
«11» — Сохраняем полученную запись суммы в структуру результата для дальнейшего использование.
«12» — Далее суммируем значения уже для внешнего цикла который проходит по уникальным значениям внешней группировки.
«13» — После выхода из цикла так же обрабатываем необходимым образом поля сумм.
«14» — И сохраняем данные по этому проходу цикла в итоговую таблицу.

Добавить комментарий