Описание работы сервиса¶
В xDE для SAP имеются отдельные REST-сервисы для работы с ИМ и архивом.
Для работы с REST-сервисом для архива используются класс CL_HTTP_CLIENT
.
В глобальном классе /TRL/XDE_CL_REST используются следующие атрибуты.
Имя атрибута |
Тип |
Видимость |
Технический тип |
Описание |
|
---|---|---|---|---|---|
MC_REST_ARCH |
Конст. |
Private |
/TRL/XDE_ED_REST_ID |
Имя идентификатора сервиса |
„REST_ARCH“ |
MC_PATH_TOKEN |
Конст. |
Private |
CHAR10 |
Часть пути к xDE-архиву |
„Token“ |
Описание методов класса для работы с архивом приведено ниже.
SEND_FILE
Имя метода |
Вид метода |
Видимость |
Описание |
---|---|---|---|
SEND_FILE |
Static Method |
Public |
Отправить файл в архив |
Имя параметра |
Вид |
Тип |
Описание |
---|---|---|---|
IV_OPERATION |
Importing |
CHAR100 |
Код операции |
IS_INPUT |
Importing |
/TRL/XDE_S_BIN_DATA |
Бинарные данные и имя файла |
IV_ATTACHMENT_TYPE |
Importing |
/TRL/XDE_ED_ATTACHMENT_TYPE |
Тип вложения |
EV_LINK |
Exporting |
/TRL/XDE_ED_LINK |
Ссылка на файл на сервере |
ES_RETURN |
Exporting |
/TRL/XDE_RETURN |
Код и текст сообщения |
Сначала вызывается метод GET_REST_SV
, который заполняет нужные статические атрибуты класса.
Далее запускается цикл на два повторения выполнения запроса для сохранения
файла в архиве. Делается это для того чтобы, в случае получения ошибки
с кодом 401 или 403 (авторизация неуспешна), запросить новый токен для
авторизации и повторения попытки. В противном случае, независимо от
успеха или неуспеха, будет выполнен выход из цикла.
Чтобы выполнить сохранение файла, сначала выполняется вызов метода
GET_TOKEN
, который получает актуальный токен. Затем вызывается метод
GET_URI
, который вернет необходимый адрес для выполнения http-запроса.
На основании этого адреса создается объект с помощью вызова метода CREATE_BY_URL
класса CL_HTTP_CLIENT
.
Далее устанавливаются заголовки для выполнения запроса, устанавливается тип передаваемого контента.
После этого с помощью метода ADD_NULTIPART
создаются еще два объекта, для которых также
устанавливаются заголовки и тип контента. Первый объект - это сам файл в бинарном виде, бинарные
данные прикрепляются с помощью метода SET_DATA
. Второй объект - это тело JSON, для JSON собирается
тело и прикрепляется к запросу с помощью запроса SET_CDATA
.
Далее с помощью вызова метода SEND
выполняется запрос. Если вызов метода прошел успешно -
вызывается метод RECEIVE
, который получает ответ запроса. Для того, чтобы узнать, насколько
успешно был выполнен запрос, - вызывается метод GET_STATUS
. Если возвращается код 401 или 403
- чистится токен в MS_REST_SV-TOKEN
. Если возвращается код, отличный от 200, - произошла
ошибка, вызывается особая ситуация HTTP_ERROR
. Если возвращается код 200 - запрос выполнен успешно.
Далее вызывается метод GET_CDATA
, в результате которого будет получена ссылка на файл.
GET_FILE
Имя метода |
Вид метода |
Видимость |
Описание |
---|---|---|---|
GET_FILE |
Static Method |
Public |
Получить файл из архива |
Имя параметра |
Вид |
Ссылочный тип |
Описание |
---|---|---|---|
IV_OPERATION |
Importing |
CHAR100 |
Код операции |
I_INPUT |
Importing |
ANY |
Данные в любом виде |
ES_OUTPUT |
Exporting |
/TRL/XDE_S_BIN_DATA |
Бинарные данные файла |
ES_RETURN |
Exporting |
/TRL/XDE_RETURN |
Код и текст сообщения |
Сначала вызывается метод GET_REST_SV
, который заполняет нужные статические атрибуты класса.
Далее запускается цикл на два повторения выполнения запроса для сохранения
файла в архиве. Делается это для того чтобы, в случае получения ошибки
с кодом 401 или 403 (авторизация неуспешна), запросить новый токен для
авторизации и повторения попытки. В противном случае, независимо от
успеха или неуспеха, будет выполнен выход из цикла.
Чтобы выполнить получение файла - сначала выполняется вызов метода
GET_TOKEN
, который получает актуальный токен. Затем вызывается метод
GET_URI
, который вернет необходимый адрес для выполнения http-запроса.
На основании этого адреса создается объект с помощью вызова метода CREATE_BY_URL
класса CL_HTTP_CLIENT
.
Далее устанавливаются заголовки для выполнения запроса, устанавливается тип передаваемого
контента.
Далее с помощью вызова метода SEND
выполняется запрос . Если вызов метода прошел успешно -
вызывается метод RECEIVE
, который получает ответ запроса. Для того, чтобы узнать насколько
успешно был выполнен запрос, - вызывается метод GET_STATUS
. Если возвращается код 401 или 403
- чистится токен в MS_REST_SV-TOKEN
. Если возвращается код, отличный от 200, - произошла
ошибка, вызывается особая ситуация HTTP_ERROR
. Если возвращается код 200 - запрос выполнен успешно.
Далее вызывается метод GET_DATA
, в результате которого будет получен файл в бинарном виде. С помощью
метода GET_DATA_LENGTH
будет получена длина файла.