Удаление отправки ================= .. code:: abap *"---------------------------------------------------------------------- *"*"Локальный интерфейс: *" IMPORTING *" VALUE(IV_RECORD_ID) TYPE /TRL/XDE_HEADER-RECORD_ID *" VALUE(IV_COMMENT) TYPE STRING OPTIONAL *" VALUE(IV_UNAME) TYPE SYUNAME DEFAULT SY-UNAME *" VALUE(IV_ONLY_CHECK) TYPE XFELD OPTIONAL *" EXPORTING *" VALUE(ES_RETURN) TYPE /TRL/XDE_RETURN *" VALUE(EV_COMMENT) TYPE STRING *"---------------------------------------------------------------------- Функциональный модуль ``/TRL/XDE_API_SHIPM_DELETE`` предназначен для удаления отправки. При удалении отправка остается в системе, ей присваивается статус «D» - «Удалена». .. table:: Описание интерфейса функционального модуля ``/TRL/XDE_API_SHIPM_DELETE`` :align: center :widths: 2 8 +------------------------------------+-------------------------------------------------------------------------------------------------------+ | Параметр | Описание | +====================================+=======================================================================================================+ | ``IMPORTING`` | +------------------------------------+-------------------------------------------------------------------------------------------------------+ | ``IV_RECORD_ID`` | Уникальный идентификатор удаляемой отправки. | +------------------------------------+-------------------------------------------------------------------------------------------------------+ | ``IV_COMMENT`` | Комментарий – причина удаления. | +------------------------------------+-------------------------------------------------------------------------------------------------------+ | ``IV_UNAME`` | Пользователь системы SAP, выполнивший удаление отправки. | +------------------------------------+-------------------------------------------------------------------------------------------------------+ | ``IV_ONLY_CHECK`` | Если параметр равен «X», то выполняется проверка возможности удаления отправки, при этом | | | непосредственно удаление не выполняется. | +------------------------------------+-------------------------------------------------------------------------------------------------------+ | ``EXPORTING`` | +------------------------------------+-------------------------------------------------------------------------------------------------------+ | ``ES_RETURN`` | Код и описание ошибки в случае, если операцию выполнить не удалось. | +------------------------------------+-------------------------------------------------------------------------------------------------------+ | ``EV_COMMENT`` | Если ``IV_COMMENT`` не заполнен, то содержит комментарий, введенный пользователем перед удалением. | | | В противном случае равен ``IV_COMMENT``. | +------------------------------------+-------------------------------------------------------------------------------------------------------+ Устанавливается блокировка по номеру GUID. Для режима проверки блокировка не ставится. Если блокировку поставить не удалось, поле ``es_return-code`` заполняется значением «1011» (Ошибка блокирования записи). В поле ``es_return-text`` попадет текущее системное сообщение, на этом работа ФМ заканчивается. Данные по отправлению получаются с помощью ФМ ``/TRL/XDE_GET_SHIPMENTS``. Если результат работы ФМ ``/TRL/XDE_GET_SHIPMENTS`` не успешен, в поле ``es_return-code`` записывается значение «1106» (Невозможно найти отправление). В поле ``es_return-text`` попадает текст «Внутренняя ошибка. Не удалось найти объект "Отправление"». После этого вызывается подпрограмма, которая снимает блокировку. На этом работа ФМ заканчивается. Выполняется проверка полномочий с помощью метода ``CHECK_XDE_FUNCTION`` класса ``/TRL/XDE_CL_AUTHORITY``. Если результат работы метода не успешен, в поле ``es_return-code`` записывается значение «1013» (Проверка не пройдена). В поле ``es_return-text`` попадает текст «Нет полномочий на выполнение операции». После этого вызывается подпрограмма, которая снимает блокировку. На этом работа ФМ заканчивается. Вызывается метод ``GET_STATE_SETTINGS``, который достает настройки статусов из таблиц ``/TRL/XDE_STATE`` и ``/TRL/XDE_STATE_T``. .. important:: В выборке учитывается язык входа в систему и значение настройки ``SETTINGS_SET`` из таблицы ``/TRL/XDE_CUST``. Если в результате работы метода данных по статусу не найдено и флаг возможности удаления не равен «X», в поле ``es_return-code`` попадает значение «9999» (Критическая ошибка). В поле ``es_return-text`` попадает текст «В статусе & операция невозможна». После этого вызывается подпрограмма снятия блокировки. На этом работа ФМ заканчивается. Вызывается метод ``GET_PERMISSION_TYPE``, который выполняет проверку по таблице условий в соответствии с конкретным действием (удаление). Для этого выполняется выборка из настроечной таблицы ``/TRL/XDE_CONDIT``. Далее вызывается ФМ ``/TRL/XDE_GET_STATUS_ALL``, который получает все статусы отправления, при этом может отсортировать их с помощью настраиваемого ФМ. Далее в цикле по всем полученным статусам ищется такая запись, для которой код статуса отправки будет равен коду статуса отправки из таблицы условий ``/TRL/XDE_CONDIT`` по выбранному действию (удаление). Если в результате выполнения метода получается тип доступа на операцию = 02 (запрещена) или 03 (невозможна), то в поле ``es_return-code`` попадает значение «9999» (Критическая ошибка). В поле ``es_return-text`` попадает текст «Операция невозможна». После этого вызывается подпрограмма для снятия блокировок, работа ФМ на этом заканчивается. После этого, если был установлен режим проверки, ФМ прекращает работу. В противном случае запускается ФМ ``/TRL/XDE_DSP_COMMENT_DLG``, который выводит для пользователя диалоговое окно для ввода комментария. Если пользователь нажимает кнопку «Отмена», в поле ``es_return-text`` попадает текст «Действие отменено пользователем». В поле ``es_return-code`` попадает значение «2209» (Действие отменено пользователем). Вызывается подпрограмма, которая снимает блокировки, и работа ФМ заканчивается. Извлекаются данные из настройки «STATUS_G_DELETED» и вызывается ФМ ``/TRL/XDE_SET_STATUS_FOR_SHIPM``, который добавляет статус для отправки. Внутри выполняются проверки о возможности установления такого статуса для данной отправки, проверяются уровни статусов, сохраняется комментарий и обновляются таблицы ``/TRL/XDE_HEADER``, ``/TRL/XDE_HDR_ATR``, ``/TRL/XDE_STATUS``, ``/TRL/XDE_SIGN``. Если в ходе выполнения ФМ ``/TRL/XDE_SET_STATUS_FOR_SHIPM`` возникли какие-либо особые ситуации, поле ``es_return-code`` заполняется значением «9999» (Критическая ошибка). Если текущее системное сообщение имеется, оно выводится в поле ``es_return-text``, в противном случае выводится сообщение «Не удалось обновить статус отправления. Обратитесь в службу поддержки». После этого вызывается подпрограмма снятия блокировки, работа ФМ на этом заканчивается. Данная API-функция подразумевает возможность расширения для заказчика. .. important:: При использовании явных или неявных операторов ``COMMIT WORK`` и ``ROLLBACK WORK`` в расширениях корректная работа API-функций не гарантируется! Функциональный модуль сортировки статусов ----------------------------------------- Имя функционального модуля сортировки статусов находится в таблице ``/TRL/XDE_CUST`` по имени настройки "FM_SORT_STATUS_NEW". .. image:: ris3.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//TRL/XDE_T_STATUS`` | +----------------------------+-------+------------------------------------+ Функциональный модуль обработки события смены статуса ----------------------------------------------------- Имя функционального модуля обработки события смены статуса отправления содержится в таблице ``/TRL/XDE_CUST`` по имени настройки "FM_SET_EVENT". Данный ФМ вызывается при изменении статуса отправления. .. image:: ris4.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`` | +----------------------------+-------+------------------------------------+ | ``EXPORTING`` (результаты ФМ на выходе) | +----------------------------+-------+------------------------------------+ | ``IT_DOCUMENTS`` | Тип | ``/TRL/XDE_DOCUM`` | +----------------------------+-------+------------------------------------+ Функциональный модуль для обработки после выставления статуса ------------------------------------------------------------- Имя функционального модуля для обработки после выставления статуса содержится в таблице ``/TRL/XDE_STATE``, поле ``FMAST``. .. image:: ris5.png :scale: 49 :align: center :alt: Поле ``FMAST`` Правила для ФМ из этой настройки касаются интерфейса ФМ, см. в таблице ниже. .. table:: Параметры модуля для обработки после выставления статуса :align: center :widths: 2 1 4 +----------------------------+-------+------------------------------------+ | Наименование параметра | Тип | Название словарного типа или класс | +============================+=======+====================================+ | ``IMPORTING`` (попадают в ФМ) | +----------------------------+-------+------------------------------------+ | ``IS_HEADER`` | Тип | ``/TRL/XDE_HEADER`` | +----------------------------+-------+------------------------------------+ | ``IS_STATUS`` | Тип | ``/TRL/XDE_STATUS`` | +----------------------------+-------+------------------------------------+