SAP BI-IP в BW/4HANA часть 1: Hello world (ADSO + Aggregation Level + BEx Query).
Другие статьи цикла:
- SAP BI-IP в BW/4HANA часть 2. Отношение признаков на атрибутах инфо-объекта
- SAP BI-IP в BW4/HANA часть 3. Отношение признаков с деривацией
- SAP BI-IP в BW/4HANA часть 4. Функции планирования
- SAP BI-IP в BW/4HANA часть 5. User exit переменные
SAP BW как хранилище
Изначально SAP BW создавалось как хранилище данных для того, что бы решить следующие проблемы:
- Освободить ERP систему от тяжелых аналитических рассчетов;
- Освободить ERP систему от массива данных, необходимых только для построения отчетности (витрины данных);
- Упростить анализ и поиск ошибок в потоках данных (благодаря функционалу Data Flow и специальной архитектуре – см. SAP LSA++);
- Использовать решения SAP, позволяющие работать с функционалом “гибкой” отчетности (SAP Analysis For Microsoft Office, SAP BusinessObjects Web Intelligence, SAP Lumira и т.д.). Такие решения позволяют пользователям самостоятельно создавать отчеты, выбирая признаки и показатели.
SAP BW как транзакционная система
Предпосылкой к превращению SAP BW из аналитической в транзакционную систему стало решение SAP Analysis for Microsoft Office. Данное решение представляет из себя надстройку над MS Excel, которое позволяет в Excel напрямую работать с данные SAP. Данное решение стало популярным в тех бизнес процессах, где пользователи много использовали MS Excel, т.к. позволяло избежать лишних выгрузок из SAP в MS Excel и получать актуальные данные напрямую.
Использование SAP Analysis создало потребность на то, что бы через функционал MS Excel можно было не только просматривать данные напрямую из SAP, но и вводить данные в SAP. Что бы удовлетворить спрос на данные запрос, команда SAP разработала функционал SAP Business Intelligence Integrated Planning (SAP BI-IP), по сути доработав стандартный маханизм просмотра OLAP кубов.
Данное решение мы и будем изучать в этом цикле статей.
Ограничения SAP BW как транзакционной системы.
Т.к. SAP BI-IP проектировалась не как отдельное решение, а как доработка функционала по промотру OLAP кубов, то оно имеет ряд ограничений, которые стоит учитывать при проектировании архтектуры системы, которые описаны в SAP Note 1637199.
Практика
Что будем делать.
В этой статье мы сделаем “Hello world!” в мире SAP BI-IP – функционал, который позволит ввести в Microsoft Excel (при помощи SAP Analysis for Microsoft Office) данные по стоимости (в долларах) и мощности (в лошадиных силах) для автомобилей (один автомобиль будет характеризоваться брендом и моделью) и сохранить их в БД SAP при нажатии на кнопку “Сохранить”.
Функционал будет состоять из следующих элеметов: (подробнее о них будет ниже):
- BEx query – объект, позволяющий сформировать набор признаков и показателей, доступных для ввода;
- Aggregation level – объект SAP BW, позволяющий определить минимальный срез, на который будут записаны данные;
- ADSO – объект SAP BW, позволяющий физически хранить данные.
Наша модель данных будет состоять из следующих признаков и показателей:
- YEAR – календарный год, на который мы планируем данные;
- BRAND – марка автомобиля;
- MODEL – модель автомобиля;
- COLOR – цвет автомобиля;
- PRICE – стоимость автомобиля (в долларах США);
- POWER – мощность автомобиля (в лошадиных силах).
Результат работы будет выглядеть следующим образом:

IDE, используемая при написании статьи:
Eclipse IDE for Enterprise Java Developer 2020-03 (4.15.0) c компонентом Modeling Tools for SAP BW/4HANA and SAP BW powered by SAP HANA version 1.22.17.
Шаг 1. Создаем InfoArea
Правило хорошего тона – при проведении НИОКР или написании учебных статей использовать отдельную инфо-область, объекты которой никогда не поедут дальше стенда разработки. Обычно такие инфо-области называют (в зависимости от правил нейминга на проекте) ZZ, SANDBOX, ZSANDBOX, TEMP и т.д. В нашей статье назовем эту область ZZ (технический ключ) и SANDBOX (наименование).

Внутри данной инфо-области нам необходимо создать инфо-область для нашего проекта (ZZ_CARS), внутри которого еще несколько инфо-областей, согласно технологии LSA++ (на рисунке ниже инфо-областей чуть больше, они понадобятся в дальнейших статьях):
- Уровень справочников
- Уровень интегрированного планирования

Шаг 2. Создаем InfoObject
В инфо-области ZZ_CARS_U необходимо создать 3 признака и 2 показателя:
- ZZE0001 BRAND – Бренд автомобиля;
- ZZE0002 MODEL – Модель автомобиля;
- ZZE0003 COLOR – Цвет автомобиля.
- ZZI0001 POWER – Мощность двигателя в лс;
- ZZA0001 PRICE – Цена автомобиля, это стандартный показатель.

При создании признаков необходимо проставить галочки “Master data” и “Texts”. При создании показателей необходимо обратить внимание на “Key figure Type”. В итоговом варианте у вас должно получиться как на скриншотах ниже.





Шаг 3. Добавляем данные в Brand и Model
Вручную добавлять или редактировать данные в инфо-объектах можно с помощью функционала “Ведение основных данных”. Для этого необходимо нажать правой кнопкой мыши на инфо-объеки и нажать “Manage attributes” или “Manage texts”.

Откроется интерфейс Fiori, в котором необходимо выбрать “Другие действия” -> “Ведение основных данных”

Откроется web интерфейс ведения основных данных, в которых надо ввести необходимые данные и нажать на “Сохранить”. При желании можно ввести текстовую расшифровку. В нашем случае я ввел 2 бренда – BMW и Mercedes.

Аналогично заполняем и для моделей машин.

Шаг 4. Создаем ADSO
На данном шаге нам необходимо создать ADSO (Advaced Data Store Object) – объект SAP, который будет содержать данные по автомобилям.
ADSO необходимо создать в инфо-области “Интеграционное планирование” (CARS_I). Нажимаем правой кнопкой мыши и выбираем Create -> ADSO (Advances Data Store Object).

Заполняем как на скриншотах ниже.



Данные в ADSO могут попадать двумя способами:
- Через трансформации – SAP BW
- Через уровень агрегации – SAP BI-IP
Что бы выбрать второй вариант необходимо проставить галку “Planning-Enabled” и выбрать подходящий для этого тип ADSO.
Логика выбора простая: если планируете использовать “Признаки как показатели”, то выбирайте “DIrect Update DataStore Object”, если нет, то “Data Mart DataStore Object”.
На вкладке “Details” необходимо добавить все признаки и показатели как на картинке ниже. При добавлении признака Color проставьте “Use Characteristic as Keyfigure”.
После того, как вы добавили все признаки и показатели в ADSO необходимо выполнить активацию, нажав на значок активации на панели Eclipse.

Важно! После активации при первом создании ADSO необходимо переключить его из “режима загрузки” в “режим планирования”. Для этого нажмите на ADSO правой кнопкой мыши и нажмите “Manage the DataStore Object (advanced)”.

Выбираем сверху “Planning”

Шаг 5. Создаем Aggregation Level.
В SAP BI-IP планирование невозможно без уровня агрегации. Уровень агрегации – это набор полей, которые будут учавствовать в планировании. Набор признаков в уровне агрегации определяют минимальные срез, на который мы будем записывать данные. Для ADSO типа “Direct Update” уровень агрегации по-определению не может быть меньше, чем набор ключевых полей.
Уровень агрегации необходимо создать в инфо-области “Интеграционное планирование” (CARS_I).

Заполняем уровени агрегации как на рисунках ниже.


Необходимо сохранить и активировать уровень агрегации по аналогии с ADSO.
Шаг 6. Создаем BEx Query.
Теперь нам необходимо создать BEx Query для того, что бы определить как будет выглядеть форма ввода. Для этого нажмите на уровень агрегации правой кнопкой мыши и нажмите “Create” -> “Query”.

Настройте BEx запрос как на скриншотах ниже. При выполнении настроек на вкладке “Sheet definition” у показателей Price и Power в свойствах необходимо проставить”Input Ready”. На вкладке “General” необходимо проставить “Start Query in Input Mode”



Сохраняем запрос.
Ша7. Открываем запрос в SAP Analysis.
Заходим в транзакцию RSRT, выбираем Analysis Office и нажимаем “Execute”.

Если у вас установлен SAP Analysis, то откроется рабочая книга с BEx запросом, в которой можно ввести данные. Давайте введем новые строки, заполним показатели и сохраним данные

После сохранения данные будут записаны в ADSO.

