Чтение oData из SAP системы при помощи Python

SAP позволяет создавать полноценные Web-приложения. Для этих целей используется oData. Для создания API существует стандарт — транзакция SEGW.

В данной статье не будет описываться процесс создания oData сервиса, эта тема хорошо описана в этом цикле статей

Чтение данных oData в python будет полезно как минимум в следующих случаях:

  • Вариант получения данных не SAP системой;
  • Возможность создавать RESTful приложения, где во фронтеде не будет использоваться технологии SAP. Мир фронтеда ушел далеко от SAP’а. По моему мнения, даже SAPUI5 и fiori не исправляет ситуации.

Данные oData возвращает в json, либо в xml формате. Для доступа к сервису необходима аутентификация. Обычно она реализована средствами протокола HTTP — Basic access authentication. Так же при входе обязательно используется access token. Это необходимо учитывать при написании скрипта. Тема очень обширная, если интересно как это работает под капотом, то в свободно доступе огромное количество информации.

Реализация

Итак, допустим у нас есть вводные. Готовый oData, например для отображения в браузере URL будет выглядеть следующим образом

http://{ВАШ IP}:{ВАШ ПОРТ}/sap/opu/odata/SAP/ZEXAMPLE/DataSet

Тогда для того что бы получить данные в помощью Python нужно использовать следующий код

В переменной result будет Ваш json

Как видно для доступа к данным, Вам необходим SAP пользователь, который имеет права на вызова oData, а точнее логин и пароль. В данном примере он прописан на прямую в коде, но Вы можете вынести его в любое удобное место и считывать при необходимости.

Так же для работы скрипта нужно будет установить недостающие пакеты в терминале командой pip install

Улучшение/декомпозиция

Представленный код отлично работает, однако его можно декомпозировать для более удобного использования.

Разобьем его на создание сессии и вызов

Получаем 2 метода в отдельном файле, если обратите внимание на область подключения библиотек, то можно заметить подключение другого локального файла. Он у меня содержит настройки для подключения к SAP системе.

Выглядит так

т.е. ни чем не отличается от примера Выше.

Вызов

Итак, теперь для вызова oData из любого скрипта, необходимо подключить наш файл и вызвать метод get_oData_set

В коде прописана логика формирования get запроса. Соответственно в этой части можно прописать любые необходимые параметры

На этом все, описанный способ позволяет создать простой «мост» для объединения SAP и не SAP технологий. Что открывает огромный простор для разработок.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *