К основному контенту

ABAP оптимизация: Хешированные таблицы (hashed table)

Одна из самых распространенных проблем при формировании отчетов - производительность. Конечно, нельзя исключать тот факт, что отчет имеет безумную подоплеку из бизнес-логики и обрабатывает огромное количество записей, прежде чем выдать результат. По своему опыту могу сказать, что есть множество случаев, когда используется SELECT SINGLE да и к тому же в цикле. БД в этом случае может чувствовать себя не очень хорошо, особенно, когда код написан совсем из рук вон плохо. Пока не прошла тенденция нагружать Application Server вместо сервера БД, есть отличная замена данного оператора. К серверу БД можно обратиться лишь раз и достать из него все необходимые данные. Чаще всего это не такое уж и большое количество записей, особенно если подумать и применить фильтр. После такой манипуляции можно смело заменить SELECT SINGLE на всем известный READ TABLE.
Но что если записей не так уж и мало? В этом случае READ TABLE будет сильно тормозить и мы не получим никакого ускорения. Но выход есть - хешированные таблицы. Доступ к данным - моментальный. Один нюанс - у них должен быть ключ. В нашем случае это не проблема, ведь вряд ли кто по своей воле использует SELECT SINGLE не по ключевым полям. Но если это все-таки случилось? Тогда нужно убрать дубликаты по ключам и все переложить в хеш-таблицу. Этот момент я мы и хотел отразить в виде кода.

Все, хеш-таблица заполнена, можно пользовать :)

Комментарии

Популярные сообщения из этого блога

Прямые ссылки на файлы Google диска

В предыдущей статье я рассказал, как подключить свой JavaScript файл к блогу BLOGSPOT . Но для того, что бы их подключить нужны прямые ссылки на файл, а Google диск при предоставлении общего доступа к файлу выдает ссылку на предварительный просмотр, которая никак напрямую не ссылается на файл. Для Google диска прямая ссылка на файл - это ссылка на скачивание. Ниже описаны два способа создания ссылки на скачивание на примере файла prism.js.

События для ведения таблиц

Как и всегда, в пылу проекта внезапно родилась Z табличка. Главный нюанс был в том, что она должна была хранить пароли для авторизации на стороннем сервере. Естественно, никто не хотел хранить пароли в открытом виде, а двустороннее шифрование SAP не умеет без сторонних пакетов и надстроек. Далее, все как обычно - придумали алгоритм, сделали табличку. Дело осталось за малым - нужно шифровать пароли, которые вводит пользователь. Делать отдельную программу нет смысла, поскольку ее функционал мало чем будет отличаться от сгенерированного. Вот здесь на помощь приходят события! С их помощью можно, наверное, все. По крайней мере, я не нашел чего-либо, что нельзя сделать с данными через события.

OOP ALV GRID с HTML шапкой

В этой статье хочу постараться подробно описать и привести пример, как можно создать ALV отчет с таблицей на весь экран и с HTML шапкой вверху. Я не буду описывать начальный этап, где пишется селекционный экран или делается выборка данных. Будем считать, что основа у нас есть и нам нужно просто вывести данные. Главной изюминкой является то, что нужно вывести ALV GRID на экран без использования каких-либо дополнительных элементов на экране. Step-By-Step Шаг 1. Создание окна Создаем самое простое окно с номером 100. На него не нужно кидать никаких контейнеров. Оно нам нужно только для модулей PAI и PBO и вывода на него ALV GRID.