Подписание/отклонение входящей отправки (и запроса на аннулирование)

*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*"  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 выполняет подписание/отклонение входящей отправки, а также подтверждение/отклонение запроса на аннулирование отправки.

Таблица 117 Описание интерфейса функционального модуля /TRL/XDE_API_SHIPM_SIGN_IN

Параметр

Описание

IMPORTING

IV_RECORD_ID

Уникальный идентификатор отправки.

IV_COMMENT

Комментарий – причина отклонения.

IV_ACCEPT

Если равен «X», то выполняется согласование отправки/подтверждение запроса на аннулирование. Если не равен «X», то выполняется отклонение отправки/запроса на аннулирование.

IS_CERT

Сертификат для подписания.

IV_SIGN_ONLY

Если равен «X», то при раздельном подписании выполняется только подписание, без отправки в систему ОЭД.

IV_UNAME

Пользователь системы SAP, выполняющий операцию.

IV_ONLY_CHECK

Если равен «X», то выполняется проверка возможности выполнения подписания/отклонения, при этом непосредственно подписание/отклонение не выполняется.

IT_DOC_TYPE_DATA

Бинарные данные документов отправки.

IV_UPD_ACCEPT_CODE

Код итога для УПД(820).

EXPORTING

ES_RETURN

Код и описание ошибки в случае, если операцию выполнить не удалось.

EV_COMMENT

Если IV_COMMENT не заполнен – содержит комментарий, введенный пользователем. Иначе равен IV_COMMENT.

Если ФМ запущен не в режиме проверки – блокируется запись по номеру отправления.

  • Если возникла ошибка при блокировке – в 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.

Настройка ``FM_REVOKE_ACPT``

Правила для ФМ из этой настройки касаются интерфейса ФМ, см. в таблице ниже.

Таблица 118 Параметры модуля подтверждения/отклонения запроса аннулирования

Наименование параметра

Тип

Название словарного типа или класс

IMPORTING (попадают в ФМ)

I_RECORD_ID

Тип

/TRL/XDE_ED_RECORD_ID_EXT

I_COMMENT

Тип

STRING

IS_CERT

Тип

/TRL/XDE_S_SAP_DOC_TYPE_CERT

I_ONLY_CHECK

Тип

XFELD

I_UNAME

Тип

SYUNAME

I_ACCEPT

Тип

XFELD

EXPORTING (результаты ФМ на выходе)

ES_RETURN

Тип

/TRL/XDE_RETURN

E_COMMENT

Тип

STRING

Функциональный модуль может иметь и другие параметры, но они должны быть необязательными.

Функциональный модуль, используемый по умолчанию, содержит внедрение 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.

Настройка ``FM_SHIP_IN_SIGN``

Правила для ФМ из этой настройки касаются интерфейса ФМ, см. в таблице ниже.

Таблица 119 Параметры модуля подписания входящих сообщений

Наименование параметра

Тип

Название словарного типа или класс

IMPORTING (попадают в ФМ)

I_RECORD_ID

Тип

/TRL/XDE_ED_RECORD_ID_EXT

I_COMMENT

Тип

STRING

IS_CERT

Тип

/TRL/XDE_S_SAP_DOC_TYPE_CERT

I_ONLY_CHECK

Тип

XFELD

I_UNAME

Тип

SYUNAME

I_ACCEPT

Тип

XFELD

I_SIGN_ONLY

Тип

/TRL/XDE_ED_FLAG_SIGN

IT_DOC_TYPE_DATA

Тип

/TRL/XDE_T_DOC_TYPE_DAT

EXPORTING (результаты ФМ на выходе)

ES_RETURN

Тип

/TRL/XDE_RETURN

E_COMMENT

Тип

STRING

Функциональный модуль может иметь и другие параметры, но они должны быть необязательными.

Функциональный модуль определения отложенной отправки

Имя ФМ определения отложенной отправки находится в таблице /TRL/XDE_CUST по имени настройки FM_SHIP_SIGN_ONLY.

Настройка ``FM_SHIP_SIGN_ONLY``
Таблица 120 Параметры модуля определения отложенной отправки

Наименование параметра

Тип

Название словарного типа или класс

IMPORTING (попадают в ФМ)

IS_HEADER

Тип

/TRL/XDE_HEADER

EXPORTING (на выход ФМ)

EV_SIGN_ONLY

Тип

/TRL/XDE_ED_FLAG_SIGN

Функциональный модуль может иметь и другие параметры, но они должны быть необязательными.

Функциональный модуль сортировки статусов

Имя функционального модуля сортировки статусов находится в таблице /TRL/XDE_CUST по имени настройки FM_SORT_STATUS_NEW.

Настройка ``FM_SORT_STATUS_NEW``
  • Если настройку удалить – не возникнет ошибки.

  • Если заполнить некорректно – вызова ФМ не произойдет.

Таблица 121 Параметры модуля сортировки статусов

Наименование параметра

Тип

Название словарного типа или класс

IMPORTING (попадают в ФМ)

IV_RECORD_ID

Тип

/TRL/XDE_ED_RECORD_ID_EXT

IT_STATUS

Тип

/TRL/XDE_T_STATUS

EXPORTING (на выход ФМ)

ET_STATUS

Тип

/TRL/XDE_T_STATUS

Примечание

Для использования пакетного подписания необходимо использовать новую API-функцию /TRL/XDE_API_SHIPM_SIGN_IN2.