Описание работы сервиса

В xDE для SAP имеются отдельные REST-сервисы для работы с ИМ и архивом.

Для работы с REST-сервисом для архива используются класс CL_HTTP_CLIENT.

В глобальном классе /TRL/XDE_CL_REST используются следующие атрибуты.

Таблица 285 Описание атрибутов класса для работы с архивом

Имя атрибута

Тип

Видимость

Технический тип

Описание

MC_REST_ARCH

Конст.

Private

/TRL/XDE_ED_REST_ID

Имя идентификатора сервиса

„REST_ARCH“

MC_PATH_TOKEN

Конст.

Private

CHAR10

Часть пути к xDE-архиву

„Token“


Описание методов класса для работы с архивом приведено ниже.


SEND_FILE

Таблица 286 SEND_FILE

Имя метода

Вид метода

Видимость

Описание

SEND_FILE

Static Method

Public

Отправить файл в архив

Таблица 287 Параметры метода

Имя параметра

Вид

Тип

Описание

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

Таблица 288 GET_FILE

Имя метода

Вид метода

Видимость

Описание

GET_FILE

Static Method

Public

Получить файл из архива

Таблица 289 Параметры метода

Имя параметра

Вид

Ссылочный тип

Описание

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 будет получена длина файла.