Веб-сервис 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 и убедиться, что он активирован.
Затем вызовите тест узла через контекстное меню. Если узел активирован, откроется браузер.
Скопируйте часть из адресной строки, как показано на рисунке (часть, выделенная зеленым, до знака вопроса) и добавьте требуемый тип запроса и параметры (при необходимости), как описано ниже.
Возможно выполнение трех типов запросов:
Получение токена¶
Для выполнения данного GET-запроса необходимо в заголовке запроса (Headers) указать Authorization:Basic и X-CSRF-Token:Fetch.
Для авторизации в параметрах авторизации (Authorization) необходимо указать имя пользователя и пароль, актуальный для SAP системы.
В строке запроса нужно указать сервис trl_xde_serv и имя операции Token.
Запрос на получение токена может содержать параметр:
значение манданта SAP-системы (
sap-client).
Внимание
Указание данных манданта с помощью строки sap-client=NNN не является обязательным, однако, если в системе
существует несколько мандантов, нужно указывать тот, в котором ожидается обработка запросов.
Пример запроса:
http://xde-xxx-111.name.company:1010/trl_xde_serv/Token?sap-client=100
Значение токена придет в заголовке ответа.
Полученный токен авторизации действителен в течение 24 часов.
После истечения срока действия токена сервис возвращает код ошибки 403.
В этом случае следует запросить токен авторизации повторно.
Сохранение файла в архив SAP¶
Запрос на передачу файла в архив должен содержать следующие параметры:
тип хранилища (
astype);имя файла (
filename);размер файла (
filesize);ссылка (
linkid);значение манданта SAP-системы (
sap-client).
Примечание
Если не указать тип хранилища, то будет использован настроенный по умолчанию тип хранилища из таблицы
/TRL/XDE_CUST (настройка ASTYPE).
Примечание
Параметр ссылки (linkid) не является обязательным для заполнения и как правило не применяется для выполнения операции
сохранения файла в хранилище.
Внимание
Указание данных манданта с помощью строки sap-client=NNN не является обязательным, однако, если в системе
существует несколько мандантов, нужно указывать тот, в котором ожидается обработка запросов.
В заголовке запроса необходимо указать токен (X-CSRF-TOKEN:<значение_токена>), полученный ранее через запрос авторизации.
В строке запроса нужно также указать сервис 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- поле структуры, содержащее описание ошибки.
Получение файла из архива SAP¶
Запрос на получение файла из архива SAP должен содержать следующие параметры:
ссылка на файл (
linkid);тип хранилища (
astype);значение манданта SAP-системы (
sap-client).
Примечание
Если не указать тип хранилища, то будет использован настроенный по умолчанию тип хранилища из таблицы
/TRL/XDE_CUST (настройка ASTYPE).
Внимание
Указание данных манданта с помощью строки sap-client=NNN не является обязательным, однако, если в системе
существует несколько мандантов, нужно указывать тот, в котором ожидается обработка запросов.
В заголовке запроса необходимо указать токен (X-CSRF-TOKEN:<значение_токена>), полученный ранее через запрос авторизации.
В строке запроса нужно также указать сервис trl_xde_serv и имя операции GetDocument.
Пример запроса:
http://xde-xxx-111.name.company:1010/trl_xde_serv/GetDocument?linkid=1356&astype=IM&sap-client=100
В случае успешного выполнения запроса будет получен код 200 и файл в бинарном виде в теле ответа.
Обработка ошибок¶
В случае, если токен более не актуален, сервис возвращает код ошибки 403.
Для внутренних ошибок возвращается код 500 и заполняется структура RETURN.