SAP BI-IP в BW/4HANA часть 2: Отношение признаков (Characteristic Relations).
Другие статьи цикла:
- SAP BI-IP в BW/4HANA часть 1. Hello World in SAP: ADSO + Aggregation Level + BEx Query
- SAP BI-IP в BW/4HANA часть 3. Отношение признаков с деривацией
- SAP BI-IP в BW/4HANA часть 4. Функции планирования
- SAP BI-IP в BW/4HANA часть 5. User exit переменные
О чем эта статья
В первой части данного цикла статей мы разработали модель, которая позволяет вводить данные по стоимости и мощности автомобилей.
Однако при вводе данных мы столкнулись с неудобством – несмотря на то, что мы заполнили поле BRAND и выбрали определенную марку автомобиля (например, BMW), в поле MODEL он все-равно предлагает к выбору все возможные модели – в том числе и те, которые принадлежат другим моделям (E200, S600).
Для решения этого неудобства система BI-IP предлагает функционал, которые будет ограничивать допустимые для ввода значения по заданному разработчиком алгоритму. Этот функционал называется “Отношение признаков” (Characteristic Relations).
В этой статье мы разработаем отношение признаков таким образом, что бы при выбранном значении поля Brand (например, BMW) система позволяла вводить только марки, относящиеся к этому бренду (например, X4, X5, X6).
Наглядный результат работы нашей модели (которую мы настроим в этой статье) можно посмотреть на рисунке ниже – до настроенного отношения признаков при заполненном поле BRAND (BMW) в поле MODEL система предлагает выбрать любое значение, а после – только те, которые принадлежат BMW.
Немного теории
Про отношение признаков в интернете довольно много полезной информации. Со своей стороны могу порекомендовать статьи:
Отношение признаков можно создать одним из 4-х способов:
- На атрибутах инфо-объекта – легкий, но довольно топорный метод реализации. Быстро настраивается, но никакой логики, кроме “возьми значение из атрибута” заложить не получится;
- На признаках DSO – такой же легкий, но и такой же топорный метод реализации, как и “на атрибутах инфо-объекта”. Разница лишь в том, что маппинг признаков берется из признаков в DSO, а не из атрибутов. Сложную логику, которая рассчитывается “на лету” вложить не получится;
- На иерархии инфо-объекта – средний по сложности, тк придется настраивать иерархию. Ни разу не встречал в реальных проектах;
- На Exit классе – относительно сложный, но и самый гибкий способ, который позволяет рассчитывать логику выбора “на лету”. Во всех проектах, где я принимал участие, мы делали отношение признаков именно таким образом.
Давайте попробуем реализовать один из самых простых способов настроить отношение признаков – на атрибутах инфо-объекта.
Практика
Перед тем, как приступить к шагам ниже, вам необходимо разработать модель из предыдущей статьи.
Шаг 1. Добавляем атрибут BRAND к инфо-объекту MODEL
Первым делом нам необходимо дообогатить инфо-объект MODEL добавив ему атрибут BRAND. Для этого переходим на вкладу “Attributes”, нажимаем на Add, откроется окно выбора инфо-объекта, который можно добавить как атрибут. Выбираем инфо-объект BRAND и нажимаем на “Ок”

Убеждаемся, что инфо-объект Brand добавлен как атрибут

Не забываем активировать инфо-объект Model

Шаг 2. Заполняем основные данные для атрибута BRAND в инфо-объекте MODEL
После того, как мы добавили атрибут BRAND инфо-объекту MODEL, нам необходимо заполнить данные. Для этого воспользуемся функционалом “Ведение основных данных”. Нажимаем правой кнопкой мыши на MODEL и выбираем “Manage Attributes”.

В открывшемся окне по управлению инфо-объектом необходимо нажать на “Среда” и выбрать “Ведение основных данных”.

Теперь необходимо заполнить каждой модели к какому бренду она принадлежит. Я определил, что E200 и S600 – это Mercedes, а X4, X5 и X6 – это BMW. После заполнения данных нажимаем на сохранить.

Шаг 3. Настраиваем отношение признаков
Отношение признаков создается на вкладке Details инфо-провайдера. Открываем ADSO CARS и нажимаем на Characteristic Relations.

В открывшемся окне выбираем пакет, в котором будет храниться разработка, и нажимаем Finish.

В появившемся окне открываем вкладку “Characteristic Relations”. На данной вкладке можно выбрать каким именно образом мы хотим настроить отношение признаков. Мы настраиваем на атрибутах инфо-объекта, поэтому наживаем на Add Attribute. В появившемся окне необходимо выбрать инфо-объект, который содержит необходимые атрибуты. В нашем случае это MODEL. Выбираем его и нажимаем OK.

Далее необходимо выбрать какие отношение каких характеристик мы будем настраивать. В нашем случае мы хотим определить зависимость BRAND и MODEL. Model мы добавили в абзаце выше, осталось добавить BRAND. Для этого нажимаем на Add и выбираем Brand.

Поздравляю, отношение признаков настроено! Не забываем активировать его и сохранить.

Далее рекомендую переактивировать уровень агрегации (по идее это не требуется, но иногда SAP косячит, так что поможем ему) и можно проверять результат.
Шаг 4. Открываем запрос в SAP Analysis.
Заходим в Analysis, открываем BEx запрос . В появившейся таблице в поле BRAND выбираем MERCEDES.

Далее нажимаем на знак вопроса в поле MODEL. Появится окно с возможными вариантами заполнение и, ура, тут будут только те модели, которые в атрибутах имеют BRAND MERCEDES.

Отношение признаков работает и в обратную сторону. Мы можем выбрать любую модель.

В поле BRAND система нам даст выбрать только те марки, которые относятся к выбранной модели автомобиля.
Нажимаем на Сохранить и проверяем, что данные в ADSO обновились.