Массовое подписание исходящей отправки и постановка в очередь¶
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*" IMPORTING
*" VALUE(IT_RECORD_ID) TYPE /TRL/XDE_T_RECORD_ID
*" VALUE(IT_CERTIFICATE) TYPE /TRL/XDE_T_SAP_DOC_TYPE_CERT
*" OPTIONAL
*" VALUE(IV_STATUS_READY) TYPE /TRL/XDE_HEADER-STATE OPTIONAL
*" EXPORTING
*" VALUE(ES_RETURN) TYPE /TRL/XDE_RETURN
*" VALUE(ES_HEADER) TYPE /TRL/XDE_HEADER
*"----------------------------------------------------------------------
Функциональный модуль /TRL/XDE_API_SHIPM_SIGN_OUT2
выполняет массовое подписание и постановку в очередь отправки исходящей отправки.
Параметр |
Описание |
---|---|
|
|
|
Набор уникальных идентификаторов отправки. |
|
Таблица сертификатов в разрезе видов документов SAP. |
|
Статус, который присваивается отправке после подписания. |
|
|
|
Код и описание ошибки в случае, если операцию выполнить не удалось. |
|
Заголовок отправки. |
Получаем все отправления для пакета с помощью ФМ /TRL/XDE_API_PACK_GET_ALL_SHIP
. Запускается цикл по найденным отправлениям и для каждого выполняется поиск данных с помощью ФМ /TRL/XDE_GET_SHIPMENTS
.
Если данных не будет найдено – в
es_return-code
попадет «1106», вes_return-text
попадет «Внутренняя ошибка. Не удалось найти объект «Отправление»». Снимаются блокировки, происходит выход из ФМ.
Проверяются полномочия и возможность подписания через настроечную таблицу /TRL/XDE_STATE
.
Если проверка полномочий не пройдена – в
es_return-code
попадет «1013», вes_return-text
попадет «Нет полномочий на выполнение операции». Снимаются блокировки, происходит выход из ФМ.Если возможность подписания в настройках не указана – в
es_return-code
попадет «1013», вes_return-text
попадет «Для вида документа & в статусе & операция невозможна», снимаются блокировки и происходит выход из ФМ.
Далее блокируется отправление.
Если не удалось заблокировать – в
es_return-code
попадет «1011», вes_return-text
попадет текст текущего системного сообщения. Снимаются блокировки, происходит выход из ФМ.
Далее нужно определить сертификат. Если нет данных по сертификату во входных параметрах – определяется ФМ определения способа подписания и сертификата.
Имя этого ФМ хранится в таблице /TRL/XDE_CUST
по имени настройки FM_GET_CERT
.
Если ФМ найден и существует в системе – будет выполнен его вызов.
Если ФМ не найден или не существует в системе – в
es_return-code
попадет «1108», вes_return-text
попадет ««& & Не задан ФМ Определения сертификата для подписания»». Снимаются блокировки, происходит выход из ФМ.Если в ходе выполнения найденного ФМ произошла ошибка – в
es_return-code
попадет «1005», вes_return-text
попадет текущее системное сообщение. Снимаются блокировки, происходит выход из ФМ.
Происходит поиск среди найденных сертификатов нужного по виду документа SAP.
Если не нашли подходящий – в
es_return-code
попадет «1105», вes_return-text
попадет «Сертификат не найден». Снимаются блокировки, происходит выход из ФМ.
Выполняется поиск пользовательских маршрутов с кастомными статусами для отправки. В случае ошибки заполняются переменные es_return
, es_header
, блокировки
снимаются. Если маршрут и кастомный статус был найден - происходит переход к следующей отправке.
Примечание
В текущей версии Продукта компонент для работы с кастомными статусами не поддерживается. Выполнение данного алгоритма не влияет на работу текущего функционала.
В цикле по списку отправлений находится имя ФМ для подписания исходящего отправления, которое хранится в таблице /TRL/XDE_CUST
по имени настройки FM_SHIP_OUT_SIGN
.
Если имя ФМ найдено и ФМ существует в системе – происходит вызов ФМ подписания исходящего отправления. Имя ФМ не обязательно нужно, если используется серверное подписание.
Если ФМ не найден и нет возможности использовать серверное подписание – в
es_return-code
попадает «1008», вes_return-text
попадет «& & & Не задан ФМ подписания». ВыполняетсяROLLBACK
, происходит выход из ФМ.
Документы сохраняются в архив с помощью ФМ /TRL/XDE_SHIP_OUT_ARCHIVE_DOCS
.
Если в ходе выполнения ФМ возникли ошибки – в
es_return-code
попадает «1014», вes_return-text
попадет текущее системное сообщение. ВыполняетсяROLLBACK
, происходит выход из ФМ.
Далее обновляются документы с помощью двух ФМ – /TRL/XDE_SHIPM_BEFORE_UPD_DOCS
и /TRL/XDE_SHIPMENT_UPD_DOCS
. На этом цикл закончится.
Снова запускается цикл по отправлениям. Обновляются данные в /TRL/XDE_HEADER
.
Если в ходе обновления данных возникли ошибки – в
es_return-code
попадает «1014», вes_return-text
попадет текущее системное сообщение. ВыполняетсяROLLBACK
, происходит выход из ФМ.
Считываются настройки оператора, технические имена статусов и добавляется статус для отправки с помощью ФМ /TRL/XDE_SET_STATUS_FOR_SHIPM
.
Если в ходе обновления данных возникли ошибки – в
es_return-code
попадает «1014», вes_return-text
попадет текущее системное сообщение. ВыполняетсяROLLBACK
, происходит выход из ФМ.
Цикл заканчивается.
Снимаются блокировки и происходит выход из ФМ.
Данная API функция подразумевает точки расширения для заказчика.
Важно
При использовании явных или неявных операторов COMMIT WORK и ROLLBACK WORK в расширениях корректная работа API-функций не гарантируется!
Функциональный модуль определения способа подписания и сертификата¶
Имя функционального модуля определения способа подписания и сертификата хранится в таблице /TRL/XDE_CUST
по имени настройки FM_GET_CERT
.

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

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

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

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

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

Если настройку удалить – не возникнет ошибки.
Если заполнить некорректно – вызова ФМ не произойдет.
Наименование параметра |
Тип |
Название словарного типа или класс |
---|---|---|
|
||
|
Тип |
|
|
Тип |
|
|
||
|
Тип |
|