Сервис OData и SAP Fiori: пошаговое руководство по созданию пользовательского приложения UI5 с помощью MM Data
Лукас Дитцч приводит пример создания приложения SAP Fiori в рамках пошагового подхода с переносом данных управления материальными потоками SAP на мобильное устройство. Этот реальный бизнес-случай, аналогичный любому запросу пользователя службы Open Data Protocol (OData), иллюстрирует весь процесс: создание приложения, обязательные службы, публикация и развертывание приложения.
Ключевое понятие |
Процесс разработки при создании приложения SAP Fiori (SAPUI5) состоит из двух частей. В бэкэнде выполняется создание, внедрение и публикация сервиса Open Data Protocol (OData). Во фронтэнде выполняется сборка приложения SAPUI5 и его развертывание в системе SAP Gateway. Далее приложение извлекает из бэкэнда SAP данные в реальном времени и выводит их на экран. |
В статье приводится пример сборки приложения SAP Fiori (с помощью пользовательского интерфейса SAPUI5/HTML5). В основе этого примера лежит реальный запрос пользователя. “Комплектовщику заказов на складе требуется возможность проверять запас и его доступность по всем складским материалам в реальном времени. Такую проверку необходимо выполнять немедленно, пока комплектовщик подбирает позиции для различных поставок. Требуется мобильное решение, чтобы получать информацию для каждого комплектовщика без использования бумажной описи груза/запасов.”
Этот запрос является отправной точкой для данной статьи, в которой дается вся информация, необходимая для создания рабочего приложения.
Получение доступа к критической во времени информации по управлению материальными потоками (MM), например, к информации о запасах в реальном времени, полученных и отпущенных материалах повышает эффективность управления бизнес-процессами. В статье показано, как разработать приложение SAP Fiori, извлекающее основные данные MM из бэкэнд-системы SAP Gateway. Далее эти данные можно просмотреть в виде списка материалов на экране в приложении SAP Fiori. Пользователь может осуществлять поиск конкретного материала по его описанию. Такой мобильный подход открывает новые возможности работы с данными MM.
В моем примере этого процесса основное внимание уделяется простой для понимания информации MM: данным материала с описанием.
SAP Gateway позволяет создать сервис Open Data Protocol (OData), который отображает информацию из одной или нескольких систем. Источниками могут являться системы SAP (например, SAP ERP/SAP Customer Relationship Management [CRM], SAP ERP Central Component [ECC]) или сторонние системы.
Приложение SAP Fiori работает на базе стандартных протоколов: OData и SAPUI5. OData — это протокол открытого стандарта для обмена (запроса и обновления) данных через сеть по стандартным проколам (HTTP, XML или Simple Object Access Protocol [SOAP]). Он предоставляет веб-интерфейс прикладного программирования (API), который полностью соответствует принципам проектирования Representational State Transfer (REST). Информацию приложения можно извлечь через JavaScript Object Notation (JSON) или XML.
В системе SAP Gateway выполняются следующие шаги:
- создание и генерация модели OData;
- внедрение сервиса OData;
- публикация и тестирование сервиса. Далее создается приложение SAP Fiori, использующее новый сервис SAP Gateway.
На рис. 1 представлен обзор процесса для примера приложения SAP Fiori.
Рис. 1. Обзор процесса для примера приложения SAP Fiori
Обратите внимание на то, что на рис. 1 InA означает набор инструментов инфодоступа для HTML5 (InA). Набор инструментов InA представляет собой набор шаблонов HTML5 и элементов управления пользовательского интерфейса (UI), с помощью которых можно сконфигурировать современный высокоинтерактивный пользовательский интерфейс, работающий в браузере. Технической предпосылкой для этого является наличие Eclipse Luna, SAP Gateway, модуля SAP ERP MM и SAP Fiori.
Для разработки сервиса SAP Gateway выполните вход в бэкэнд-систему SAP. Выполните транзакцию SEGW (построитель сервисов SAP Gateway), а затем щелкните по пиктограмме создания проектов , чтобы начать создание нового проекта. После этого появится всплывающее окно «Создание проекта», показанное на рис. 2.
Рис. 2. Всплывающее окно «Создание проекта»
Присвойте проекту имя и описание. В примере используется имя z_material_list. Изменить тип проекта или стратегию создания здесь невозможно. В данном примере используется стандартный подход.
Нажмите кнопку «Локальный объект» или присвойте проект транспортному пакету. В данном случае я создал локальный объект. Локальные объекты в другие системы не переносятся. Если в ландшафте SAP присутствует несколько систем и инстанций SAP, следует выбрать транспортный пакет для переноса разработок в связанные системы. Но в данном случае для упрощения мы будем работать локально.
На экране, представленном на рис. 2, пользователь может ввести подробные данные проекта: имя, описание, подробные атрибуты и подробные данные записи каталога объектов. Для сохранения в виде локального объекта нажмите кнопку «Локальный объект». В некоторых системах можно выбрать выделенный пакет для его сохранения в другом местоположении, но в данном случае в целях упрощения сохраним объект локально.
После нажатия кнопки «Локальный объект» появится экран, показанный на рис. 3. Н нем отображается структура созданного проекта Z_MATERIAL_LIST.
Рис. 3. Структура проекта Z_MATERIAL_LIST
Теперь создадим новый тип сущности. Типами сущностей являются физические или абстрактные объекты, представляющие определенный тип данных, например, позицию или понятие, которое можно отграничить от других информационных объектов. Сущности делятся по типам в зависимости от их свойств. Каждому типу сущности должны быть присвоены описывающие его атрибуты. Свойства сущностей описываются посредством значений атрибутов.
Щелкните правой кнопкой мыши по папке «Типы сущностей», а затем выберите опцию «Создать». Появится экран, показанный на рис. 4. В целях упрощения мой пример «Модель Gateway» содержит один новый тип сущности для материала.
Рис. 4. Всплывающее окно «Создание типа сущности»
Во всплывающем окне «Создание типа сущности» присвойте имя типа сущности («Материал») и имя набора сущностей («Материалы»). В наборах сущностей сгруппированы инстанции типа сущности с любым типом инстанции, полученные из определенного типа сущности. Типы сущностей описывают структуру данных, а наборы сущностей содержат инстанции данной структуры. В моем примере имя набора сущностей «Материалы» представляет все данные материалов, извлеченные из базы данных. В более сложных случаях сущностей может быть несколько.
Убедитесь, что выбрана опция «Создать связанный набор сущностей». Щелкните по пиктограмме с зеленой галочкой . Откроется папка «Свойства» для Z_MATERIAL_LIST, см. Рис. 5.
Рис. 5. Папка свойств в пути по меню к проекту Z_MATERIAL_LIST
Разверните структуру под новой сущностью «Материал». Затем дважды щелкните по папке «Свойства» для сущности «Материал». Появится экран справа, см. Рис. 6.
Рис. 6. Пустой обзор свойств сущности
Соответствующие свойства/поля добавляются только к сущности «Материал». Чтобы начать добавление данных свойств/полей (см. Табл. 1) к типу сущности, щелкните по пиктограмме создания на ленте, показанной на рис. 6. После заполнения всех данных согласно табл. 1, экран с Рис. 6 должен выглядеть так, как показано на рис. 7 (рис. 6 со значениями).
Табл. 1. Информация мэппинга
Рис. 7. Заполненные поля свойств «Номер материала», «Описание материала», «Тип материала», «Группа материала» и «Единица материала»
В табл. 1 отображаются критерии данных свойств/полей для отображаемого имени (SAPUI5), имени поля ABAP и максимальной длины по типу поля. Базовые типы OData определяют, какой тип модели данных объекта (EDM) разрешен в OData для данного свойства во время выполнения. Организация OData определяет типы так называемых простых данных. Каждый член этой организации применяет при обмене данными обязательные стандарты. Определение приводится по ссылке http://www.odata.org/documentation/odata-version-2-0/overview/.
Необходимо предоставить информацию мэппинга из свойства SAPUI5 с внутренними типами и полями данных SAP (Табл. 1). Ключом для этой сущности является номер материала. Проверьте, что все эти записи имеют тип Edm.String, который представляет собой обязательный префикс согласно определению Odata.org.
Отображаемое имя (SAPUI5) — это имя поля для внешнего мира (например, «Приложение SAPUI5»). Имя поля ABAP используется во время внедрения сервиса OData. Все поля являются строковыми, поэтому важно соблюдать максимальную длину значений. Максимальная длина указана в соответствующих таблицах. Для просмотра подробных данных соответствующих таблиц и характеристик их столбцов используйте транзакцию SE11 или SE16N.
В рассматриваемом примере используется таблица MARA (номер материала/код типа/код группы/код единицы) и таблицы MAKT (описание материала), T134T (описание типа материала), T023T (описание группы материала) и T006A (описание единицы).
После добавления всех строк свойств из табл. 1 появятся поля, показанные на рис. 7. В данном случае все значения, полученные из сервиса OData, изначально относились к строковому типу данных. Таким образом, укажите имя согласно Табл. 1 и вставьте Edm.String в поле «Базовый тип EDM». Далее укажите длину для типа данных (согласно Табл. 1) и, наконец, выполните мэппинг поля данных SAP для каждой добавленной строки.
Пример |
Шаг 1: В столбце «Имя» ключевым полем является «Номер материала». Оно должно быть помечено галочкой в столбце «Ключ», как видно на рис. 7. Шаг 2: В столбце «Базовый тип EDM» введите тип Edm.String и укажите длину 18 символов. Шаг 3: Выполните мэппинг нового поля OData с его столбцом в таблице SAP. Для поля «Номер материала» соответствующим столбцом таблицы SAP является MATNR. Он должен отображаться в той же строке в столбце «Имя поля ABAP». Повторите эти три шага для каждого поля/столбца («Номер материала», «Описание материала», «Тип материала», «Группа материала» и «Единица материала»). |
Снова убедитесь в том, что все поля относятся к типу Edm.String. Важно указать в столбце «Макс…» максимальное разрешенное число символов для каждого поля. На рис. 7 отображаются поля свойств, которые теперь содержат указанные свойства для полей «Номер материала», «Описание материала», «Тип материала», «Группа материала» и «Единица материала».
Щелкните по пиктограмме сохранения (не показана). Обработка модели SAP Gateway завершена. При редактировании сущности (добавлении новых полей, переименовании или обновлении типа) требуется повторная генерация модели.
На экране, появившемся после выбора пиктограммы сохранения (не показана), щелкните по пиктограмме создания динамических объектов . Появится всплывающее окно, показанное на рис. 8. Здесь показано всплывающее окно «Определение модели и сервиса», содержащее подробные данные класса провайдера модели, класса провайдера данных и регистрации сервиса.
Рис. 8. Всплывающее окно «Определение модели и сервиса»
Оставьте предложенные имена без изменений. При необходимости их все же можно изменить. Классы ZCL_Z_MATERIAL_LIST_MPC и ZCL_Z_MATERIAL_LIST_MPC_EXT являются классами провайдера модели. Классы ZCL_Z_MATERIAL_LIST_DPC и ZCL_Z_MATERIAL_LIST_DPC_EXT являются классами провайдера данных. Большая часть работы для внедрения выполняется при переопределении методов в классе ZCL_Z_MATERIAL_LIST_DPC_EXT (методы содержатся в созданном классе провайдера данных ZCL_Z_MATERIAL_LIST_MPC_EXT).
Щелкните по пиктограмме с зеленой галочкой. Появится всплывающее окно «Создание записи каталога сущностей» (рис. 9). Здесь указаны атрибуты объекта с возможностью сохранения объекта как локального или его присвоения пакету. Сохраните объект с помощью кнопки «Локальный объект».
Рис. 9. Сохранение объекта как локального
На рис. 10 показаны отображаемые системные сообщения.
Рис. 10. Отображаемые системные сообщения
Для каждого определенного типа сущности в модели OData создается ряд стандартных методов сущности. Например, на рис. 11 показаны стандартные методы сущности для сущности материала.
Рис. 11. Стандартные методы сущности для сущности материала
Теперь реализуем необходимые методы для приложения. Выберите «Внедрение сервиса ▶ Материалы ▶ Получить набор сущностей (запрос)» и щелкните правой кнопкой мыши по пункту «Получить набор сущностей (запрос)». В контекстном меню выберите «Перейти к инструментальным средствам ABAP». Появится всплывающее окно «Информация», см. Рис. 12.
Рис. 12. Информационное всплывающее окно
Это всплывающее окно уведомляет пользователя о том, что операция MATERIALS_GET_ENTITYSET еще не реализована. Для каждого типа сущности модели OData создается несколько методов. Метод GetEntitySet представляет собой автоматически создаваемый метод запроса для получения набора материалов. Выберите пиктограмму с зеленой галочкой (рис. 12). Появится папка «Унаследованные методы», см. Рис. 13.
Рис. 13. Опция переопределения для MATERIALS_GET_ENTITYSET
Теперь выберите и переопределите унаследованный метод MATERIALS_GET_ENTITYSET. Для этого щелкните правой кнопкой мыши по имени метода (MATERIALS_GET_ENTITYSET) и выберите опцию «Переопределить». Метод MATERIALS_GET_ENTITYSET является методом запроса для извлечения набора материалов (требуется для создания списка материалов). После переопределения методы сохраняются автоматически.
Регистрация сервиса Gateway
Следующим шагом является регистрация сервиса Gateway. Вернитесь к транзакции SEGW. На появившемся экране (рис. 14) выберите папку «Обслуживание сервиса» и нажмите кнопку «Зарегистрировать».
Рис. 14. Регистрация сервиса
На рис. 15 показано всплывающее предупреждение SAP. Это предупреждение уведомляет пользователей о том, что они будут перенаправлены в выбранную систему. Нажмите кнопку «Да» в этом всплывающем окне для перехода к экрану «Выбор псевдонима системы» (хаб к бэкэнду), представленному на рис. 16.
Рис. 15. Предупреждение в системе SAP
Рис. 16. Выбор псевдонима системы во всплывающем окне
Выберите псевдоним системы LOCAL (см. Рис. 16), а затем выберите пиктограмму с зеленой галочкой. Появится экран «Добавление сервиса», представленный на рис. 17. Псевдоним системы может быть локальным или иным псевдонимом в зависимости от параметров установки SAP Gateway.
Рис. 17. Всплывающее окно «Добавление сервиса»
Во всплывающем окне «Добавление сервиса» пользователь может выбрать опцию «Локальный объект», а также просмотреть подробные данные сервиса, модели, информацию о создании, подробные данные узла ICF и активации OAuth. Введите подробные данные сервиса по вашему проекту и нажмите кнопку «Локальный объект». Для продолжения и завершения процесса регистрации щелкните по пиктограмме с зеленой галочкой.
Тестирование сервиса Gateway
После успешной регистрации сервиса в поле «Статус регистрации» отображается зеленый сигнал светофора (рис. 18). Теперь протестируйте сервис с помощью клиента Gateway. Далее пометьте сервис и нажмите кнопку «Клиент Gateway» на панели инструментов. Появится всплывающее окно с предупреждением (рис. 19).
Рис. 18. Нажатие кнопки «Клиент Gateway»
Рис. 19. Всплывающее окно с предупреждением о переадресации
Во всплывающем окне с предупреждением нажмите кнопку «Да». Появится экран «Клиент SAP NetWeaver Gateway», см. Рис. 20, на котором отображаются подробные данные текущего URI запроса. Нажмите кнопку «Выполнить».
Рис. 20. Экран SAP NetWeaver Gateway Client и подробные данные запроса URI
Экран «Ответ HTTP» содержит пример сгенерированного ответа HTTP (рис. 21). Ответ поступает в формате Atom/XML.
Рис. 21. Сгенерированный ответ HTTP
Оформите подписку sappro и получите полный доступ к материалам SAPPRO
Оформить подпискуУ вас уже есть подписка?
Войти