Массовое подписание исходящей отправки и постановка в очередь

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

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

Параметр

Описание

IMPORTING

IT_RECORD_ID

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

IT_CERTIFICATE

Таблица сертификатов в разрезе видов документов SAP.

IV_STATUS_READY

Статус, который присваивается отправке после подписания.

EXPORTING

ES_RETURN

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

ES_HEADER

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

Получаем все отправления для пакета с помощью ФМ /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.

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

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

Таблица 135 Параметры модуля определения способа подписания и сертификата

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

Тип

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

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

I_UNAME

Тип

SYST_UNAME

IT_SAP_DOC_TYP

Тип

/TRL/XDE_T_SAP_DOC_TYPE

I_ID_OED

Тип

/TRL/XDE_ED_ID_OED

I_BUKRS

Тип

BUKRS

I_LIFNR

Тип

/TRL/XDE_ED_SENDER

I_KUNNR

Тип

/TRL/XDE_ED_RECIEVER

I_SKIP_CACHE

Тип

CLIKE

EXPORTING параметры (на выход ФМ)

ET_CERTS

Тип

/TRL/XDE_T_SAP_DOC_TYPE_CERT

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

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

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

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

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

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

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

Тип

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

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

IS_HEADER

Тип

/TRL/XDE_HEADER

IT_HEADER

Тип

/TRL/XDE_T_HEADER

IS_CERT

Тип

/TRL/XDE_S_SAP_DOC_TYPE_CERT

EXPORTING параметры (на выход ФМ)

ET_CERT_NUM

Тип

/TRL/XDE_T_RECORD_CERT

ES_HEADER

Тип

/TRL/XDE_HEADER

CHANGING параметры (изменяемые параметры ФМ)

CT_DOCUMENTS

Тип

/TRL/XDE_T_DOCUMENTS_W_CONTENT

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

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

Имя функционального модуля для получения данных их архива хранится в таблице /TRL/XDE_AS_CUST поле FM_DOC_GET.

Поле ``FM_DOC_GET``

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

Таблица 137 Параметры модуля получения данных их архива

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

Тип

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

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

I_LINK

Тип

/TRL/XDE_ED_LINK

I_ASTYPE

Тип

/TRL/XDE_ED_ASTYPE

EXPORTING параметры (на выход ФМ)

E_FILE_NAME

Тип

/TRL/XDE_ED_ARC_FILE_NAME

E_FILE_SIZE

Тип

/TRL/XDE_ED_FILE_SIZE

ES_RETURN

Тип

/TRL/XDE_RETURN

TABLES параметры (табличные параметры ФМ)

ET_BIN_DATA

Тип

/TRL/XDE_T_SOLIX_TAB

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

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

Имя функционального модуля удаления из архива лежит в таблице /TRL/XDE_AS_CUST поле FM_DOC_DEL.

Поле ``FM_DOC_GET``

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

Таблица 138 Параметры модуля удаления из архива

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

Тип

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

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

I_LINK

Тип

/TRL/XDE_ED_LINK

I_ASTYPE

Тип

/TRL/XDE_ED_ASTYPE

EXPORTING параметры (на выход ФМ)

ES_RETURN

Тип

/TRL/XDE_RETURN

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

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

Имя функционального модуля обработки события смены статуса отправления содержится в таблице /TRL/XDE_CUST по имени настройки FM_SET_EVENT. Данный ФМ вызывается при изменении статуса отправления.

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

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

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

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

Тип

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

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

IS_HEADER

Тип

/TRL/XDE_HEADER

IS_STATUS

Тип

/TRL/XDE_STATUS

TABLES (таблицы)

IT_DOCUMENTS

Тип

/TRL/XDE_DOCUM

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

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

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

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

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

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

Тип

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

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

IV_RECORD_ID

Тип

/TRL/XDE_ED_RECORD_ID_EXT

IT_STATUS

Тип

/TRL/XDE_T_STATUS

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

ET_STATUS

Тип

/TRL/XDE_T_STATUS