Создание запроса на аннулирование отправки ========================================== .. code:: abap *"---------------------------------------------------------------------- *"*"Локальный интерфейс: *" IMPORTING *" VALUE(IV_RECORD_ID) TYPE /TRL/XDE_HEADER-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 *"---------------------------------------------------------------------- *"---------------------------------------------------------------------- Функциональный модуль ``/TRL/XDE_API_SHIPM_REVOKE_REQ`` создает запрос на аннулирование отправки. .. table:: Описание интерфейса функционального модуля ``/TRL/XDE_API_SHIPM_REVOKE_REQ`` :align: center :widths: 2 8 +------------------------------------+-------------------------------------------------------------------------------------------------------+ | Параметр | Описание | +====================================+=======================================================================================================+ | ``IMPORTING`` | +------------------------------------+-------------------------------------------------------------------------------------------------------+ | ``IV_RECORD_ID`` | Уникальный идентификатор отправки. | +------------------------------------+-------------------------------------------------------------------------------------------------------+ | ``IV_COMMENT`` | Комментарий – причина запроса на аннулирование. | +------------------------------------+-------------------------------------------------------------------------------------------------------+ | ``IS_CERT`` | Сертификат для подписания запроса на аннулирование. | +------------------------------------+-------------------------------------------------------------------------------------------------------+ | ``IV_UNAME`` | Пользователь системы SAP, запросивший аннулирование. | +------------------------------------+-------------------------------------------------------------------------------------------------------+ | ``IV_ONLY_CHECK`` | Если равен «X», то выполняется проверка возможности создания запроса на аннулирование отправки, | | | при этом непосредственно отправка запроса в систему ОЭД не выполняется. | +------------------------------------+-------------------------------------------------------------------------------------------------------+ | ``EXPORTING`` | +------------------------------------+-------------------------------------------------------------------------------------------------------+ | ``ES_RETURN`` | Код и описание ошибки в случае, если операцию выполнить не удалось. | +------------------------------------+-------------------------------------------------------------------------------------------------------+ | ``EV_COMMENT`` | Если ``IV_COMMENT`` не заполнен – содержит комментарий, введенный пользователем. | | | Иначе равен ``IV_COMMENT``. | +------------------------------------+-------------------------------------------------------------------------------------------------------+ В случае если ФМ запущен не в режиме проверки – ставится блокировка на запись в БД. * Если блокировка не удалась, то ``es_return-code`` присваивается «1011» (ошибка блокирования записи). Также в ``es_return-text`` записывается текущее системное сообщение, после этого происходит выход из ФМ. Получаем данные по отправлению с помощью ``/TRL/XDE_GET_SHIPMENTS``. * Если работа ФМ ``/TRL/XDE_GET_SHIPMENTS`` завершилась с ошибкой – ``es_header-code`` заполняется «1106» (не удалось найти отправление). ``es_header-text`` будет присвоен текст «Внутренняя ошибка. Не удалось найти объект "Отправление"». Далее выполняется проверка полномочий и блокировка всех отправлений пакета. Если функция запущена не с целью проверки, то выполняется поиск пользовательских маршрутов с кастомными статусами для отправки. В случае ошибки заполняется переменная ``es_return``, блокировки снимаются. Если маршрут и кастомный статус был найден - снимаются блокировки и происходит выход из функционального модуля. .. note:: В текущей версии Продукта компонент для работы с кастомными статусами не поддерживается. Выполнение данного алгоритма не влияет на работу текущего функционала. * Если в результате этих операций поле ``es_return-code`` не пусто – снимаются блокировки и происходит выход из ФМ. Затем находится имя ФМ для отправки запроса на аннулирование и проверяется, что он существует в системе и активен. * Если в результате получена пустая переменная (название ФМ для аннулирования) - ``es_return-code`` будет заполнено значением «1008» (проблемы с настройками). В ``es_return-text`` попадет сообщение «Не задан ФМ обработки аннулирования (``/TRL/XDE_OED_TY``)». Снимаются блокировки и происходит выход из ФМ. Вызов найденного ФМ. После чего снимаются блокировки и работа ФМ завершается. Данная API функция подразумевает возможность расширения для заказчика. .. important:: При использовании явных или неявных операторов ``COMMIT WORK`` и ``ROLLBACK WORK`` в расширениях корректная работа API-функций не гарантируется! Функциональный модуль запроса на аннулирование ---------------------------------------------- Имя ФМ отправки запроса на аннулирование хранится в таблице ``/TRL/XDE_CUST`` по имени настройки ``FM_REVOKE_REQ``. .. image:: ris20.png :scale: 86 :align: center :alt: Настройка ``FM_REVOKE_REQ`` Правила для ФМ из этой настройки касаются интерфейса ФМ, см. в таблице ниже. .. table:: Параметры модуля запроса на аннулирование :align: center :widths: 2 1 4 +----------------------------+-------+------------------------------------+ | Наименование параметра | Тип | Название словарного типа или класс | +============================+=======+====================================+ | ``IMPORTING`` (попадают в ФМ) | +----------------------------+-------+------------------------------------+ | ``I_RECORD_ID`` | Тип | ``/TRL/XDE_ED_RECORD_ID_EXT`` | +----------------------------+-------+------------------------------------+ | ``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`` | +----------------------------+-------+------------------------------------+ Функциональный модуль может иметь и другие параметры, но они должны быть не обязательными. Функциональный модуль, используемый по умолчанию, содержит внедрение BAdI ``/TRL/XDE_CHECK_BADI`` для выполнения кастомных проверок после проверок, выполняемых в продукте xDE, в методе ``CHECK_REQUEST_REVOKE``. Кроме того, функциональный модуль, используемый по умолчанию, содержит внедрение BAdI ``/TRL/XDE_SHIPMENT_BADI`` для работы с отправлениями, а именно для возможности создания комментария перед выводом диалогового окна пользователю. Создания комментария выполняется в методе ``SET_COMMENT``. .. note:: Для использования пакетного подписания с целью оптимизации времени следует использовать новую API-функцию ``/TRL/XDE_API_SHIPM_REVOKE_REQ2``.