Массовое подписание исходящей отправки и постановка в очередь ============================================================= .. code:: abap *"---------------------------------------------------------------------- *"*"Локальный интерфейс: *" 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`` выполняет массовое подписание и постановку в очередь отправки исходящей отправки. .. table:: Описание интерфейса функционального модуля ``/TRL/XDE_API_SHIPM_SIGN_OUT2`` :align: center :widths: 2 8 +------------------------------------+-------------------------------------------------------------------------------------------------------+ | Параметр | Описание | +====================================+=======================================================================================================+ | ``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``, блокировки снимаются. Если маршрут и кастомный статус был найден - происходит переход к следующей отправке. .. note:: В текущей версии Продукта компонент для работы с кастомными статусами не поддерживается. Выполнение данного алгоритма не влияет на работу текущего функционала. В цикле по списку отправлений находится имя ФМ для подписания исходящего отправления, которое хранится в таблице ``/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 функция подразумевает точки расширения для заказчика. .. important:: При использовании явных или неявных операторов COMMIT WORK и ROLLBACK WORK в расширениях корректная работа API-функций не гарантируется! Функциональный модуль определения способа подписания и сертификата ------------------------------------------------------------------ Имя функционального модуля определения способа подписания и сертификата хранится в таблице ``/TRL/XDE_CUST`` по имени настройки ``FM_GET_CERT``. .. image:: ris34.png :scale: 78 :align: center :alt: Настройка ``FM_GET_CERT`` Правила для ФМ из этой настройки касаются интерфейса ФМ, см. в таблице ниже. .. table:: Параметры модуля определения способа подписания и сертификата :align: center :widths: 2 1 4 +----------------------------+-------+------------------------------------+ | Наименование параметра | Тип | Название словарного типа или класс | +============================+=======+====================================+ | ``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``. .. image:: ris35.png :scale: 86 :align: center :alt: Настройка ``FM_SHIP_OUT_SIGN`` Правила для ФМ из этой настройки касаются интерфейса ФМ, см. в таблице ниже. .. table:: Параметры модуля подписания исходящего отправления :align: center :widths: 2 1 4 +----------------------------+-------+------------------------------------+ | Наименование параметра | Тип | Название словарного типа или класс | +============================+=======+====================================+ | ``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``. .. image:: ris36.png :scale: 100 % :align: center :alt: Поле ``FM_DOC_GET`` Правила для ФМ из этой настройки касаются интерфейса ФМ, см. в таблице ниже. .. table:: Параметры модуля получения данных их архива :align: center :widths: 2 1 4 +----------------------------+-------+------------------------------------+ | Наименование параметра | Тип | Название словарного типа или класс | +============================+=======+====================================+ | ``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``. .. image:: ris37.png :scale: 100 % :align: center :alt: Поле ``FM_DOC_GET`` Правила для ФМ из этой настройки касаются интерфейса ФМ, см. в таблице ниже. .. table:: Параметры модуля удаления из архива :align: center :widths: 2 1 4 +----------------------------+-------+------------------------------------+ | Наименование параметра | Тип | Название словарного типа или класс | +============================+=======+====================================+ | ``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``. Данный ФМ вызывается при изменении статуса отправления. .. image:: ris38.png :scale: 88 :align: center :alt: Настройка ``FM_SET_EVENT`` Правила для ФМ из этой настройки касаются интерфейса ФМ, см. в таблице ниже. .. table:: Параметры модуля обработки события смены статуса отправления :align: center :widths: 2 1 4 +----------------------------+-------+------------------------------------+ | Наименование параметра | Тип | Название словарного типа или класс | +============================+=======+====================================+ | ``IMPORTING`` (попадают в ФМ) | +----------------------------+-------+------------------------------------+ | ``IS_HEADER`` | Тип | ``/TRL/XDE_HEADER`` | +----------------------------+-------+------------------------------------+ | ``IS_STATUS`` | Тип | ``/TRL/XDE_STATUS`` | +----------------------------+-------+------------------------------------+ | ``TABLES`` (таблицы) | +----------------------------+-------+------------------------------------+ | ``IT_DOCUMENTS`` | Тип | ``/TRL/XDE_DOCUM`` | +----------------------------+-------+------------------------------------+ Функциональный модуль сортировки статусов ----------------------------------------- Имя функционального модуля сортировки статусов находится в таблице ``/TRL/XDE_CUST`` по имени настройки ``FM_SORT_STATUS_NEW``. .. image:: ris39.png :scale: 87 :align: center :alt: Настройка ``FM_SORT_STATUS_NEW`` * Если настройку удалить – не возникнет ошибки. * Если заполнить некорректно – вызова ФМ не произойдет. .. table:: Параметры модуля сортировки статусов :align: center :widths: 2 1 4 +----------------------------+-------+------------------------------------+ | Наименование параметра | Тип | Название словарного типа или класс | +============================+=======+====================================+ | ``IMPORTING`` (попадают в ФМ) | +----------------------------+-------+------------------------------------+ | ``IV_RECORD_ID`` | Тип | ``/TRL/XDE_ED_RECORD_ID_EXT`` | +----------------------------+-------+------------------------------------+ | ``IT_STATUS`` | Тип | ``/TRL/XDE_T_STATUS`` | +----------------------------+-------+------------------------------------+ | ``EXPORTING`` (результаты ФМ на выходе) | +----------------------------+-------+------------------------------------+ | ``ET_STATUS`` | Тип | ``/TRL/XDE_T_STATUS`` | +----------------------------+-------+------------------------------------+