Создание запроса на массовое аннулирование пакета отправок

*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*"  IMPORTING
*"     VALUE(IT_RECORD_ID) TYPE  /TRL/XDE_T_RECORD_ID OPTIONAL
*"     VALUE(IV_COMMENT) TYPE  STRING OPTIONAL
*"     VALUE(IS_CERT) TYPE  /TRL/XDE_S_SAP_DOC_TYPE_CERT OPTIONAL
*"     VALUE(IV_UNAME) TYPE  SYUNAME DEFAULT SY-UNAME
*"     VALUE(IV_ONLY_CHECK) TYPE  XFELD OPTIONAL
*"  EXPORTING
*"     VALUE(ES_RETURN) TYPE  /TRL/XDE_RETURN
*"     VALUE(EV_COMMENT) TYPE  STRING
*"     VALUE(ES_HEADER) TYPE  /TRL/XDE_HEADER
*"----------------------------------------------------------------------
*"----------------------------------------------------------------------

Функциональный модуль /TRL/XDE_API_SHIPM_REVOKE_REQ2 создает запрос на массовое аннулирование отправки.

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

Параметр

Описание

IMPORTING

IT_RECORD_ID

Набор уникальных идентификаторов отправки.

IV_COMMENT

Комментарий – причина запроса на аннулирование.

IS_CERT

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

IV_UNAME

Пользователь системы SAP, запросивший аннулирование.

IV_ONLY_CHECK

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

EXPORTING

ES_RETURN

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

EV_COMMENT

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

ES_HEADER

Заголовок отправки.

Запускается цикл по набору идентификаторов отправок. В случае если ФМ запущен не в режиме проверки – ставится блокировка на запись в БД.

  • Если блокировка не удалась, то es_return-code присваивается «1011» (ошибка блокирования записи). Также в es_return-text записывается текущее системное сообщение, после этого происходит выход из ФМ. Также заполняется es_header для того, чтобы вывести информацию о типе документа и номере пакета, с которым возникла проблема.

    Получаем данные по отправлениям с помощью /TRL/XDE_GET_SHIPMENTS.

  • Если работа ФМ /TRL/XDE_GET_SHIPMENTS завершилась с ошибкой – es_return-code заполняется «1106» (не удалось найти отправление). es_return-text будет присвоен текст «Внутренняя ошибка. Не удалось найти объект «Отправление»». Также заполняется es_header для того, чтобы вывести информацию о типе документа и номере пакета, с которым возникла проблема.

    Далее выполняется проверка полномочий и блокировка всех отправлений пакета.

    Если функция запущена не с целью проверки, то выполняется поиск пользовательских маршрутов с кастомными статусами для отправки. В случае ошибки заполняется переменная es_return и es_header, блокировки снимаются. Если маршрут и кастомный статус был найден, происходит переход к следуюшей отправке.

    Примечание

    В текущей версии Продукта компонент для работы с кастомными статусами не поддерживается. Выполнение данного алгоритма не влияет на работу текущего функционала.

  • Если в результате этих операций поле es_return-code не пусто – снимаются блокировки и происходит выход из ФМ.

    На этом заканчивается цикл по идентификаторам отправок. Затем находится имя ФМ для отправки запроса на аннулирование и проверяется, что он существует в системе и активен.

  • Если в результате получена пустая переменная (название ФМ для аннулирования) - es_return-code будет заполнено значением «1008» (проблемы с настройками). А в es_return-text попадет сообщение «Не задан ФМ обработки аннулирования (/TRL/XDE_OED_TY)». Снимаются блокировки и происходит выход из ФМ.

    Вызов найденного ФМ. После чего снимаются блокировки и работа ФМ завершается.

Данная API функция подразумевает возможность расширения для заказчика.

Важно

При использовании явных или неявных операторов COMMIT WORK и ROLLBACK WORK в расширениях корректная работа API-функций не гарантируется!

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

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

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

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

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

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

Тип

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

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

IT_RECORD_ID

Тип

/TRL/XDE_T_RECORD_ID

I_COMMENT

Тип

STRING

IS_CERT

Тип

/TRL/XDE_S_SAP_DOC_TYPE_CERT

I_UNAME

Тип

SYUNAME

I_ONLY_CHECK

Тип

XFELD

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

ES_RETURN

Тип

/TRL/XDE_RETURN

E_COMMENT

Тип

STRING

ES_HEADER

Тип

/TRL/XDE_HEADER

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

Функциональный модуль, используемый по умолчанию, содержит внедрение BAdI /TRL/XDE_CHECK_BADI для выполнения кастомных проверок после проверок, выполняемых в продукте xDE, в методе CHECK_REQUEST_REVOKE. Кроме того, функциональный модуль, используемый по умолчанию, содержит внедрение BAdI /TRL/XDE_SHIPMENT_BADI для работы с отправлениями, а именно для возможности создания комментария перед выводом диалогового окна пользователю. Создания комментария выполняется в методе SET_COMMENT.