Подписание/отклонение входящей отправки (и запроса на аннулирование)¶
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*" IMPORTING
*" VALUE(IV_RECORD_ID) TYPE /TRL/XDE_HEADER-RECORD_ID
*" VALUE(IV_COMMENT) TYPE STRING OPTIONAL
*" VALUE(IV_ACCEPT) TYPE XFELD OPTIONAL
*" VALUE(IS_CERT) TYPE /TRL/XDE_S_SAP_DOC_TYPE_CERT OPTIONAL
*" VALUE(IV_SIGN_ONLY) TYPE /TRL/XDE_ED_FLAG_SIGN DEFAULT ''
*" VALUE(IV_UNAME) TYPE SYUNAME DEFAULT SY-UNAME
*" VALUE(IV_ONLY_CHECK) TYPE XFELD OPTIONAL
*" VALUE(IT_DOC_TYPE_DATA) TYPE /TRL/XDE_T_DOC_TYPE_DAT OPTIONAL
*" VALUE(IV_UPD_ACCEPT_CODE) TYPE /TRL/XDE_ED_TIT_RESULT_CODE OPTIONAL
*" EXPORTING
*" VALUE(ES_RETURN) TYPE /TRL/XDE_RETURN
*" VALUE(EV_COMMENT) TYPE STRING
*"----------------------------------------------------------------------
Функциональный модуль /TRL/XDE_API_SHIPM_SIGN_IN
выполняет подписание/отклонение входящей отправки, а также подтверждение/отклонение запроса на аннулирование отправки.
Параметр |
Описание |
---|---|
|
|
|
Уникальный идентификатор отправки. |
|
Комментарий – причина отклонения. |
|
Если равен «X», то выполняется согласование отправки/подтверждение запроса на аннулирование. Если не равен «X», то выполняется отклонение отправки/запроса на аннулирование. |
|
Сертификат для подписания. |
|
Если равен «X», то при раздельном подписании выполняется только подписание, без отправки в систему ОЭД. |
|
Пользователь системы SAP, выполняющий операцию. |
|
Если равен «X», то выполняется проверка возможности выполнения подписания/отклонения, при этом непосредственно подписание/отклонение не выполняется. |
|
Бинарные данные документов отправки. |
|
Код итога для УПД(820). |
|
|
|
Код и описание ошибки в случае, если операцию выполнить не удалось. |
|
Если |
Если ФМ запущен не в режиме проверки – блокируется запись по номеру отправления.
Если возникла ошибка при блокировке – в
es_return-code
попадет «1011», вes_return-text
попадает текущее системное сообщение. После этого работа ФМ закончится.
Получаем данные по отправке с помощью /TRL/XDE_GET_SHIPMENTS
.
Если возникла ошибка в ходе выполнения – в
es_return-code
попадет «1106», вes_return-text
попадет «Внутренняя ошибка. Не удалось найти объект «Отправление»». Снимается блокировки и происходит выход из ФМ.
Происходит получение технических значений для статусов по имени настроек STATUS_G_ERROR
и STATUS_G_REV_REQ_RECEIVED
из таблицы /TRL/XDE_CUST
.
Проверяется, что код статуса отправки равен значению из настройки STATUS_G_REV_REQ_RECEIVED
. Если код статуса отправки равен значению настройки STATUS_G_ERROR
- происходит получение значений настроек STATUS_G_REV_REQ_REJECTED
и STATUS_G_REVOKED
. Далее происходит получение данных по статусам по номеру отправления с помощью ФМ /TRL/XDE_GET_SHIPMENTS
и поиск такого, который был бы равен значению из настройки STATUS_G_REV_REQ_RECEIVED
. Если какое-либо из этих условий выполнено – нужно выполнять аннулирование, в противном случае – подписание/отклонение.
Выполняется поиск пользовательских маршрутов с кастомными статусами для отправки. В случае ошибки заполняется переменная es_return
, блокировки снимаются.
Если маршрут и кастомный статус был найден - снимаются блокировки и происходит выход из функционального модуля.
Примечание
В текущей версии Продукта компонент для работы с кастомными статусами не поддерживается. Выполнение данного алгоритма не влияет на работу текущего функционала.
Для аннулирования ищется ФМ в таблице /TRL/XDE_CUST
по имени настройки FM_REVOKE_ACPT
.
Если ФМ не найден или не существует в системе – в
es_return-code
попадет «1008», вes_return-text
попадет «& & & Не задан ФМ обработки аннулирования (/TRL/XDE_OED_TY)». После этого снимаются блокировки и происходит выход из ФМ.
Для подписания/отклонения нужно проверить, что сообщение является входящим и после этого выполнить поиск ФМ в таблице /TRL/XDE_CUST
по имени настройки FM_SHIP_IN_SIGN
или FM_SHIP_SIGN_ONLY
, если нужно только подписать.
Если ФМ не найден или не существует в системе – в
es_return-code
попадет «1008», вes_return-text
попадет «& & & Не задан ФМ Согл-ния/отклонения входящего документа (/TRL/XDE_OED_T)». Снимаеются блокировки и происходит выход из ФМ.Если в ходе вызова ФМ только подписания возникли ошибки – в
es_return-code
попадет «1011», вes_return-text
текущее системное сообщение. Снимаеются блокировки и происходит выход из ФМ.Если действие – не аннулирование и не подписание/отклонение, то в
es_return-code
попадет «9999», вes_return-text
попадет «В статусе & операция невозможна». Снимаются блокировки и происходит выход из ФМ.
Выполняется проверка полномочий.
Если проверка полномочий не пройдена – в
es_return-code
попадет «1013», вes_return-text
попадет «Нет полномочий на выполнение операции». Снимаеются блокировки и происходит выход из ФМ.
Повторная блокировка и проверка полномочий для всех отправлений пакета, если для этого есть настройки оператора.
Далее происходит вызов найденного ФМ (ФМ аннулирования или подписания/отклонения).
Снимаются блокировки.
Данная API функция предполагает точки расширения для заказчика.
Важно
При использовании явных или неявных операторов COMMIT WORK
и ROLLBACK WORK
в расширениях корректная работа API-функций не гарантируется!
Функциональный модуль подтверждения/отклонения запроса аннулирования¶
Имя ФМ подтверждения/отклонения запроса аннулирования хранится в таблице /TRL/XDE_CUST
по имени настройки FM_REVOKE_ACPT
.

Правила для ФМ из этой настройки касаются интерфейса ФМ, см. в таблице ниже.
Наименование параметра |
Тип |
Название словарного типа или класс |
---|---|---|
|
||
|
Тип |
|
|
Тип |
|
|
Тип |
|
|
Тип |
|
|
Тип |
|
|
Тип |
|
|
||
|
Тип |
|
|
Тип |
|
Функциональный модуль может иметь и другие параметры, но они должны быть необязательными.
Функциональный модуль, используемый по умолчанию, содержит внедрение BAdI /TRL/XDE_CHECK_BADI
для выполнения кастомных проверок после проверок, выполняемых в продукте xDE,
в методах CHECK_IN_REVOKE_ACCEPT
и CHECK_IN_REVOKE_REJECT
. Кроме того, функциональный модуль, используемый по умолчанию, содержит внедрение BAdI
/TRL/XDE_SHIPMENT_BADI
для работы с отправлениями, а именно для возможности создания комментария перед выводом диалогового окна пользователю.
Создание комментария выполняется в методе SET_COMMENT
.
Функциональный модуль подписания входящих сообщений¶
Имя ФМ подписания входящих сообщений хранится в таблице /TRL/XDE_CUST
по имени настройки FM_SHIP_IN_SIGN
.

Правила для ФМ из этой настройки касаются интерфейса ФМ, см. в таблице ниже.
Наименование параметра |
Тип |
Название словарного типа или класс |
---|---|---|
|
||
|
Тип |
|
|
Тип |
|
|
Тип |
|
|
Тип |
|
|
Тип |
|
|
Тип |
|
|
Тип |
|
|
Тип |
|
|
||
|
Тип |
|
|
Тип |
|
Функциональный модуль может иметь и другие параметры, но они должны быть необязательными.
Функциональный модуль определения отложенной отправки¶
Имя ФМ определения отложенной отправки находится в таблице /TRL/XDE_CUST
по имени настройки FM_SHIP_SIGN_ONLY
.

Наименование параметра |
Тип |
Название словарного типа или класс |
---|---|---|
|
||
|
Тип |
|
|
||
|
Тип |
|
Функциональный модуль может иметь и другие параметры, но они должны быть необязательными.
Функциональный модуль сортировки статусов¶
Имя функционального модуля сортировки статусов находится в таблице /TRL/XDE_CUST
по имени настройки FM_SORT_STATUS_NEW
.

Если настройку удалить – не возникнет ошибки.
Если заполнить некорректно – вызова ФМ не произойдет.
Наименование параметра |
Тип |
Название словарного типа или класс |
---|---|---|
|
||
|
Тип |
|
|
Тип |
|
|
||
|
Тип |
|
Примечание
Для использования пакетного подписания необходимо использовать новую API-функцию /TRL/XDE_API_SHIPM_SIGN_IN2
.