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

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

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

Параметр

Описание

IMPORTING

IV_RECORD_ID

Уникальный идентификатор отправки.

IT_CERTIFICATE

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

IV_STATUS_READY

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

EXPORTING

ES_RETURN

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

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

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

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

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

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

Тип

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

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``

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

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

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

Тип

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

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

IS_HEADER

Тип

/TRL/XDE_HEADER

IS_CERT

Тип

/TRL/XDE_S_SAP_DOC_TYPE_CERT

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

EV_CERT_NUM

Тип

/TRL/XDE_ED_THUMBPRINT

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

CT_DOCUMENTS

Тип

/TRL/XDE_T_DOCUMENTS_W_CONTENT

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

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

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

Поле ``FM_DOC_GET``

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

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

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

Тип

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

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``

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

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

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

Тип

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

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``

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

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

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

Тип

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

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``
  • Если настройку удалить – не возникнет ошибки.

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

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

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

Тип

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

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

IV_RECORD_ID

Тип

/TRL/XDE_ED_RECORD_ID_EXT

IT_STATUS

Тип

/TRL/XDE_T_STATUS

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

ET_STATUS

Тип

/TRL/XDE_T_STATUS

Примечание

Для использования пакетного подписания необходимо использовать новую API-функцию /TRL/XDE_API_SHIPM_SIGN_OUT_2.