Получение всех отправок для заданной отправки

*"--------------------------------------------------------------------
*"*"Локальный интерфейс:
*"  IMPORTING
*"     VALUE(IV_RECORD_ID) TYPE  /TRL/XDE_HEADER-RECORD_ID
*"     VALUE(IV_REL_TYPE) TYPE  /TRL/XDE_SHIP_RL-RTYPE DEFAULT
*"       'RSP'
*"     VALUE(IV_MAX_LEVEL) TYPE  I DEFAULT 1
*"  EXPORTING
*"     VALUE(ET_RELATIONS) TYPE  /TRL/XDE_T_RECORD_ID
*"--------------------------------------------------------------------

Функциональный модуль /TRL/XDE_API_SHIPM_GET_RELATS предназначен для получения всех связанных (родительских, дочерних или без указания иерархии) отправок для заданной отправки.

Внимание

Для работы со связанными документами создан новый функциональный модуль /TRL/XDE_API_SHIPM_GET_RELATS2, принцип работы которого не изменился, но изменился выходной параметр ET_RELATIONS. В новом ФМ помимо списка идентификаторов возвращается и идентификатор документа, тип связи из идентификатор связанного документа.

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

Параметр

Описание

IMPORTING

IV_RECORD_ID

Уникальный идентификатор отправки, для которой выполняется поиск связанных отправок.

IV_REL_TYPE

Тип связи между отправками.

IV_MAX_LEVEL

Максимальная глубина поиска. Если указано значение больше 1, то выполняется рекурсивный поиск («дочерние к дочерним», «родительская к родительской»).

EXPORTING

ET_RELATIONS

Список связанных отправок. Содержит все записи из ET_CHILDREN, ET_PARENTS и ET_LINKS

Сразу вызывается ФМ /TRL/XDE_GET_SHIPMENTS_RELATS. Этот ФМ определяет связи с другими поставками до определенного максимального уровня. Если окажется, что текущий уровень выше максимального, работа ФМ закончится. Также ФМ является рекурсивным, т.е. вызывается сам в себе.

Вызывается ФМ /TRL/XDE_API_SHIPM_GET_PARENTS. Этот ФМ получает все родительские пакеты и также является рекурсивным. Логика поиска связанных документов основана на выборке из таблицы /TRL/XDE_SHIP_RL. В результате работы ФМ мы получим внутреннюю таблицу lt_parents.

Вызывается ФМ /TRL/XDE_API_SHIPM_GET_SHILD. Этот ФМ получает все дочерние пакеты и также является рекурсивным. Логика поиска связанных документов основана на выборке из таблицы /TRL/XDE_SHIP_RL. В результате работы ФМ мы получим внутреннюю таблицу lt_children.

Вызывается ФМ /TRL/XDE_API_SHIPM_GET_LINKS. Этот ФМ получает все связанные документы без указания иерархии. Логика поиска связанных документов основана на выборке из таблицы /TRL/XDE_SHIP_RL. В результате работы ФМ мы получим внутреннюю таблицу lt_links.

Из полученных lt_children, lt_parents и lt_links удаляются все записи по текущей отправке, после этого записи из этих таблиц добавляются в выходную таблицу et_reations.

Далее увеличиваем текущий уровень и в цикле по родительским пакетам и дочерним пакетам – запускаем для каждой записи ФМ /TRL/XDE_GET_SHIPMENT_RELATS, но уже с указанием уровня. Таким образом будет развернута вся цепочка родительских и дочерних пакетов.

После всех манипуляций, когда программа вернется в первый по очереди вызов ФМ, произойдет заключительная сортировка выходящей таблицы et_relations и удаление дубликатов.