Подписание исходящей отправки и постановка в очередь¶
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*" IMPORTING
*" VALUE(IV_RECORD_ID) TYPE /TRL/XDE_HEADER-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
*"----------------------------------------------------------------------
Функциональный модуль /TRL/XDE_API_SHIPM_SIGN_OUT выполняет подписание и постановку в очередь отправки исходящей отправки.
Параметр |
Описание |
|---|---|
|
|
|
Уникальный идентификатор отправки. |
|
Таблица сертификатов в разрезе видов документов 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попадет «Сертификат не найден». Снимаются блокировки, происходит выход из ФМ.
В цикле по списку отправлений находится имя ФМ для подписания исходящего отправления, которое хранится в таблице /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.
Если настройку удалить – не возникнет ошибки.
Если заполнить некорректно – вызова ФМ не произойдет.
Наименование параметра |
Тип |
Название словарного типа или класс |
|---|---|---|
|
||
|
Тип |
|
|
Тип |
|
|
||
|
Тип |
|
Примечание
Для использования пакетного подписания необходимо использовать новую API-функцию /TRL/XDE_API_SHIPM_SIGN_OUT_2.