Использование временных таблиц (GTT) в ABAP-разработках

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

GTT – global temporary tables, таблицы которые наполняются и очищаются в рамках ABAP-сессии (application session), но находятся при этом на уровне БД (то есть данные не передаются между Database и Application).

В ABAP-разработке их можно перевести как глобально сессионные таблицы или словарно-сессионные таблицы.

Что такое temporary tables?

В базах данных Temporary table – это объект на уровне базы данных, куда могут быть помещены данные после выборки из таблиц БД; при этом данные существуют в рамках сессии приложения и не передаются из базы на application, а остаются в базе. Это дает возможность применять SQL-операторы к «промежуточным» данным для вычислений и не делать дополнительные roundtrip между application и базой. В терминах ABAP-разработки temporary table можно рассматривать как альтернативу «промежуточным» внутренним таблицам или операторам UNION.

Temporary tables реализованы в различных базах: PostgreSQL, ORACLE, HANA . Назначение их, по сути, одно и то же: в течение сессии сложить данные в таблицу, а по итогу сессии забрать данные и очистить таблицу.

GTT в ABAP представляет собой отдельную прозрачную таблицу, в которую складываются данные в рамках DB LUW и могут быть считаны только в рамках текущей сессии. На начало сессии и на завершение таблица должна быть пустая (очищена принудительной командой через ABAP, если нужно). Цель GTT – это дать возможность разделить сложную выборку на несколько шагов. За счет того, что данные хранятся в рамках одной сессии, то «закулисное администрирование» такой таблицы немного меньше. Можно сказать, что временная таблица работает почти как внутренняя таблица, но остаётся на стороне базы данных.

Демонстрационный пример в ABAP

Как правило, temporary table полезна, когда нужно получить данные из источников, которые имеют разное смысловое назначение, но сводятся к одной и той же структуре данных.

Пример: нужно получить список (MATNR) материалов, которые указаны в заказах на дату DATE1 и указаны в фактурах на дату фактурирования DATE1.

В SAP ERP (и как правило, в других системах тоже) заказы и фактуры находятся в разных таблицах, а также заголовок и позиция этих сущностей также находятся в разных таблицах (и даже не в одной

Источник: https://habr.com/ru/articles/812985/


Интересные статьи

Интересные статьи

Привет, мир!Поскольку это моя первая статья, я просто обязан начать ее именно с этой фразы.В ходе работы над проектом появилась задача связать форму обратной связи на странице с гугл таблицами. Суть п...
Криптография — это наука о безопасном общении в присутствии враждебного поведения. Хотя большинство людей понимает роль криптографии в сохранении конфиденциальности коммуникации (например, приложения ...
Привет! Мы — команда тестирования производительности в Тинькофф, и мы любим инструмент Gatling. В цикле статей мы расскажем об использовании Gatling и дополнительных инструментов, упрощающих разработк...
Привет! Меня зовут Иван, я занимаюсь бэкенд-разработкой в Ozon: пишу микросервисы на Go для личного кабинета продавца. В прошлом году мы запустили новый процесс регистрации продавцов, в котором задейс...
Так уж вышло, что на момент постановки задачи я не обладал достаточной степенью опытности, чтобы разработать и запустить это решение в одиночку. И тогда я начал гуглить. Не знаю, в чем загвоздка...