ABAP для SAP HANA
В данной статье я хотел бы осветить новые подходы к разработке на ABAP, применительно к SAP HANA. Мы рассмотрим новые элементы языка ABAP, которые позволят эффективнее использовать возможности, предоставляемые SAP HANA.
Компания SAP вкладывает огромные ресурсы в развитие и продвижение платформы SAP HANA. В данной статье я хотел бы осветить новые подходы к разработке на ABAP, применительно к SAP HANA. Мы рассмотрим новые элементы языка ABAP, которые позволят эффективнее использовать возможности, предоставляемые SAP HANA.
Допустим, у нас есть отчет, написанный на языке ABAP, время работы которого нас не устраивает. Мы хотим оптимизировать работу этого отчета. Основная идея того, как мы будем менять логику работы отчета, заключается в том, что часть логики отчета, которая интенсивно использует данные из СУБД (в нашем случае это SAP HANA), будет делегирована на уровень СУБД.
Рис.1. Code to Data pushdown
Для осуществления этого подхода могут быть использованы следующие конструкции:
- Расширенный Open SQL
- FOR ALL ENTRIES
- ABAP Managed Database Procedures
1. Расширенный Open SQL
Начиная с Application Server ABAP 7.4 SP5 были значительно расширены возможности встроенного в ABAP языка работы с базами данных – Open SQL.
Рис.2. Расширенный Open SQL
Новые возможности Open SQL:
- Расширенный JOIN БД таблиц
- Арифметические выражения
- Строковые выражения
- CASE, COALESCE выражения
Дополнительную информацию по расширенному Open SQLвы можете найти в курсе от Open SAP под названием “ABAP Development for SAP HANA” (link).
2. FOR ALL ENTRIES
Новые возможности касаются, как правило, оперирования с таблицами на уровне СУБД. Но часто возникают ситуации, когда нужно совместно «манипулировать» как внутренними таблицами, так и таблицами базы данных. Для этих целей можно использовать конструкцию SELECT … FORALLENTRIES (FAE).
SELECT <result> FROM <table> FOR ALL ENTRIES IN <itab> WHERE ... <col><op><itab_comp> ...
Эта конструкция не имеет соответствия в стандарте языка SQL, поэтому интерпретатор осуществляет преобразование к семантически эквивалентному SELECT выражению, которое может быть выполнено базой данных.
Управлять процессом преобразования можно с использованием ProfileParameters:
profileparameter |
description |
defaultvaluefor HDB |
---|---|---|
rsdb/max_blocking_factor |
Верхний предел для кол-ва строк из <itab> |
50 |
rsdb/max_in_blocking_factor |
Верхний предел для кол-ва строк из<itab> в случае с IN выражением |
1024 |
rsdb/prefer_in_itab_opt |
= 1 :преобразование с использованием IN |
1 |
rsdb/prefer_join |
= 1 :преобразование с использованием JOIN |
0 |
rsdb/prefer_join_with_fda |
= 1: тожесамое, что и JOIN, но itab будет передана на уровень SAP HANA с использованием FDA (fastdataaccess). Доступно начиная с SAPNW 7.42и SAPHANARev. 70. |
1 |
rsdb/prefer_union_all |
Если rsdb/prefer_join = 0 |
0 |
Таблица 1. Profile Parameters.
Эти параметры могут быть заданы с использованием транзакции RZ11.
Пример конструкции:
ABAP
|
Конструкция, в зависимости от настроек может быть преобразована следующими способами:
UNION
|
OR |
Если хотите прочитать статью полностью и оставить свои комментарии присоединяйтесь к sapland
ЗарегистрироватьсяУ вас уже есть учетная запись?
Войти