Веб-сервис REST API для работы с архивом на стороне SAP

Для доступа к архиву SAP реализован сервис через транзакцию SICF. Узел в данной транзакции называется /TRL/XDE_SERV.

Авторизация

Для выполнения запросов необходимо сначала получить ключ (токен) авторизации.

Для получения токена нужно создать или использовать уже существующего пользователя XDEWSUSER, поскольку при запросе токена указывается имя пользователя и его актуальный пароль в системе SAP.

Важно

У пользователя должна быть заведена роль /TRL/XDE_ARCHIVEUSER.

Классы-обработчики

Для обработки входящих запросов созданы классы-обработчики /TRL/XDE_CL_REST_HANDLER и /TRL/XDE_CL_REST_RESOURCE.

Класс /TRL/XDE_CL_REST_HANDLER наследует два стандартных интерфейса IF_HTTP_EXTENSION и IF_REST_APPLICATION. Внутри класса переопределен метод GET_ROOT_HANDLER, который позволяет указать, какой класс-обработчик использовать для входящего запроса. В данном случае это класс /TRL/XDE_CL_REST_RESOURCE.

Класс /TRL/XDE_CL_REST_RESOURCE наследует два стандартных интерфейса IF_REST_RESOURCE и IF_REST_HANDLER. Внутри класса переопределены методы GET и POST, которые позволяют выполнять обработку соответствующих запросов.

Запросы к сервису

Для того чтобы выполнить http-запрос, необходимо указать путь. Для этого нужно зайти в транзакцию SICF, найти узел trl_xde_serv и убедиться, что он активирован.

../../_images/pic72.png

Затем вызовите тест узла через контекстное меню. Если узел активирован, откроется браузер.

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

../../_images/pic81.png

Возможно выполнение трех типов запросов:

Получение токена

Для выполнения данного GET-запроса необходимо в заголовке запроса (Headers) указать Authorization:Basic и X-CSRF-Token:Fetch.

../../_images/pic32.png

Для авторизации в параметрах авторизации (Authorization) необходимо указать имя пользователя и пароль, актуальный для SAP системы.

../../_images/pic12.png

В строке запроса нужно указать сервис trl_xde_serv и имя операции Token.

Запрос на получение токена может содержать параметр:

  • значение манданта SAP-системы (sap-client).

Внимание

Указание данных манданта с помощью строки sap-client=NNN не является обязательным, однако, если в системе существует несколько мандантов, нужно указывать тот, в котором ожидается обработка запросов.

Пример запроса: http://xde-xxx-111.name.company:1010/trl_xde_serv/Token?sap-client=100

Значение токена придет в заголовке ответа.

../../_images/pic22.png

Полученный токен авторизации действителен в течение 24 часов. После истечения срока действия токена сервис возвращает код ошибки 403. В этом случае следует запросить токен авторизации повторно.

Сохранение файла в архив SAP

Запрос на передачу файла в архив должен содержать следующие параметры:

  • тип хранилища (astype);

  • имя файла (filename);

  • размер файла (filesize);

  • ссылка (linkid);

  • значение манданта SAP-системы (sap-client).

Примечание

Если не указать тип хранилища, то будет использован настроенный по умолчанию тип хранилища из таблицы /TRL/XDE_CUST (настройка ASTYPE).

Примечание

Параметр ссылки (linkid) не является обязательным для заполнения и как правило не применяется для выполнения операции сохранения файла в хранилище.

Внимание

Указание данных манданта с помощью строки sap-client=NNN не является обязательным, однако, если в системе существует несколько мандантов, нужно указывать тот, в котором ожидается обработка запросов.

В заголовке запроса необходимо указать токен (X-CSRF-TOKEN:<значение_токена>), полученный ранее через запрос авторизации.

../../_images/pic42.png

В строке запроса нужно также указать сервис trl_xde_serv и имя операции PutDocument.

Пример запроса: http://xde-xxx-111.name.company:1010/trl_xde_serv/PutDocument?astype=AL&filename=st.pdf&filesize=99&sap-client=100

Ответ придет в теле ответа в формате JSON:

  • LINKID - ссылка на файл;

  • ASTYPE - тип используемого хранилища;

  • CR_USER - имя пользователя SAP, под которым была выполнена операция;

  • CR_DATE - дата выполнения операции;

  • CR_TIME - время выполнения операции;

  • RETURN-CODE - поле структуры, содержащее код ошибки;

  • RETURN-TEXT - поле структуры, содержащее описание ошибки.

../../_images/pic62.png

Получение файла из архива SAP

Запрос на получение файла из архива SAP должен содержать следующие параметры:

  • ссылка на файл (linkid);

  • тип хранилища (astype);

  • значение манданта SAP-системы (sap-client).

Примечание

Если не указать тип хранилища, то будет использован настроенный по умолчанию тип хранилища из таблицы /TRL/XDE_CUST (настройка ASTYPE).

Внимание

Указание данных манданта с помощью строки sap-client=NNN не является обязательным, однако, если в системе существует несколько мандантов, нужно указывать тот, в котором ожидается обработка запросов.

В заголовке запроса необходимо указать токен (X-CSRF-TOKEN:<значение_токена>), полученный ранее через запрос авторизации.

../../_images/pic42.png

В строке запроса нужно также указать сервис trl_xde_serv и имя операции GetDocument.

Пример запроса: http://xde-xxx-111.name.company:1010/trl_xde_serv/GetDocument?linkid=1356&astype=IM&sap-client=100

В случае успешного выполнения запроса будет получен код 200 и файл в бинарном виде в теле ответа.

../../_images/pic52.png

Обработка ошибок

В случае, если токен более не актуален, сервис возвращает код ошибки 403. Для внутренних ошибок возвращается код 500 и заполняется структура RETURN.