Mesh – это составной тип данных, появившейся в ABAP 7.40, который состоит из компонентов и связей между ними.

Компонентами (узлами) mesh могут быть как внутренние таблицы, так и ссылки, указывающие на внутренние таблицы.

Оглавление

Определение

Пример использования с проверкой эффективности

Постановка задачи

Решение

Первый вариант (с использованием mesh)

Второй вариант (с использованием сортированных внутренних таблиц)

Третий вариант (с использованием хешированных внутренних таблиц)

Сравнение производительности программ

Определение

Mesh – это составной тип данных, появившейся в ABAP 7.40, который состоит из компонентов и связей между ними.

Компонентами (узлами) mesh могут быть как внутренние таблицы, так и ссылки, указывающие на внутренние таблицы. Например:

TYPES:

  BEGIN OF MESH mesh,

    node1 TYPE lty_t_tab1 ASSOCIATION to_node2 TO node2 ON id = id,

    node2 TYPE lty_t_tab2,

  END OF MESH mesh.

DATA(mesh) = VALUE mesh( ).

С помощью ключевого слова ASSOCIATION в mesh задаются отношения между узлами. Как и при соединении таблиц в SQL необходимо указать условие связи при помощи оператора ON.

Обращение к узлу mesh такое же, как и в обычных структурах. Например (из объявленного выше):

mesh-node1 = lt_data_node1.

Для определения пути используется оператор \ (обратный слеш). Данный оператор считывает ассоциации как из корневого узла так и корневому. Пример:

mesh-node1\to_node2[ … ].

В квадратных скобках указывается условие чтения строки. Если запись по указанным условиям отсутствует, то возникает исключение CX_SY_ITAB_LINE_NOT_FOUND.

Стоит также отметить, что оператор чтения ассоциации можно использовать любое количество раз, главное, чтобы была связь с исходным узлом.

mesh-node1\to_node2[ … ]\to_node3[ .. ]\...

Ограничения:

  • имя ассоциации не должно превышать 30 символов;
  • имя ассоциации может иметь только буквы, цифры и «_», а также не может начинаться с цифры;
  • рекомендуется название ассоциации начинать с символа «_», а также в нем должно содержаться имя целевого узла (например, _to_node2).

Пример использования с проверкой эффективности

Постановка задачи

Необходимо получить данные о сотрудниках в системе:

ИТ0000: табельный номер, вид мероприятия;

ИТ0001: организационная единица, штатная должность, должность;

ИТ0002: ФИО сотрудника;

ИТ0105: ид пользователя.

Решение

В качестве примера были написаны три варианта программы. Первая с использованием mesh, вторая с использованием сортированных внутренних таблиц, третья с использование хеш таблиц. Также были произведены замеры времени для сравнения производительности каждого из вариантов.

В программе используется ЛБД PNPCE, для чтения записей инфотипов используется чтение узла GET peras. Все данные необходимых таблиц накапливаются в соответствующих атрибутах классов. Для первого варианта – это узлы mesh, для второго и третьего – соответствующая внутренняя таблица.

Первый вариант (с использованием mesh)

Объявляем типы и внутренние таблицы:

Для того чтобы объявить mesh нам потребуется:

1. Создать типы для каждого узла, причем, если используется STANDARD TABLE, то ключ также необходимо указать (TYPE STANDARD TABLE WITH DEFAULT KEY), Рис. 1:

Если хотите прочитать статью полностью и оставить свои комментарии присоединяйтесь к sapland

У вас уже есть учетная запись?

Войти