Найти тему
rustabapclub

Агрегирующие функции в подзапросах ABAP SQL

Пусть у нас есть следующая модель данных (прообраз сбытовых VBAK-VBAP-BUT000)

Структура таблицы ZSLS_ORD_H
Структура таблицы ZSLS_ORD_H
Структура таблицы ZSLS_ORD_I
Структура таблицы ZSLS_ORD_I
Структура таблицы ZPARTNER_H
Структура таблицы ZPARTNER_H

Таблицы заполнены с помощью метода ниже (текстовая версия).

Предварительное заполнение таблиц для демо примера
Предварительное заполнение таблиц для демо примера

Нужно вывести список заказов с позицией с номер позиции с наибольшей суммой, наибольшую сумму, наименьшую сумму и наименование клиента.

Набор полей для отображения
Набор полей для отображения

Решение этой задачи средствами ABAP SQL будет зависеть от версии система.

Версия ABAP до 752. До версии 752 у нас есть возможность в подзапросах использовать скалярные значения других запросов. В данном случае в подзапросе вычислим максимальное и минимальное значения и укажем их в условии WHERE.

Вывод подытогов в версиях до 7.52
Вывод подытогов в версиях до 7.52

Версия 752 и выше (доступны Common Table Expressions). С версии 752 в ABAP SQL доступны общие табличные выражения (Common Table Expressions – CTE) и тогда решение может быть менее нагроможденным.

Использование CTE (Commont Table Expressions) в ABAP SQL
Использование CTE (Commont Table Expressions) в ABAP SQL

В качестве результата получим таким значения в данном случае.

Отображение вычислений на ABAP SQL с учетом разных версий систем
Отображение вычислений на ABAP SQL с учетом разных версий систем

Полный код-листинг демо-отчета доступен по ссылке.

ABAPclub - ABAP-канал с обучением