Время чтения ~5 минут.

В далеком 2013 году в версии Abap 7.40 появился новый составной тип данных — mesh.

С тех пор прошло уже 6 лет. Почти половину этого времени я работаю abap разработчиком. За все это время я ни разу не встречал использование мешей в реальных задачах. Ниразу! Будь то стандартный код или Z.

Скорее всего это связано со специфичностью модуля HCM, а также с тем, что большинство разработчиков привыкли использовать операторы LOOP AT и READ TABLE. Не подумайте, что я имею что-то против них. Разумеется это не так.

Я лишь говорю о том, что при решении некоторых задач используя меш можно добиться более чистого, понятного кода, чем при использовании LOOP AT и READ TABLE .

Итак, согласно определению, меш — это специальная структура. Компоненты этой структуры называют узлами. Узлы являются либо структурированными внутренними таблицами, либо ссылочными переменными, которые указывают на структурированные внутренние таблицы.

Как определить меш

Опишем два типа данных: «manager» и «developer».

Обратите внимание, что дополнение WITH UNIQUE KEY или WITH NON-UNIQUE KEY обязательно.

Ниже мы используем эти типы при создании меша.

Отношения между узлами

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

Опишем меш «team», состоящий из узлов managers и developers.

Как использовать Меш

Для того, чтобы его использовать выполните несколько шагов:

  • Объявите переменную с типом меша;
  • Присвойте значения узлам;
  • Используйте пути для получения результатов;
  • Чтобы выбрать компонент, используйте селектор компонента — или селектор объекта ->.

Путь

Доступ к узлам меша можно получить с помощью отношения. Отношения могут также быть объединены в цепочку для получения результата. Первое отношение должно иметь условие, чтобы найти узел в меше.

Обратите внимание, что в результате мы получим структуру с именем менеджера и его заработной платой (т.е. запись из узла manager).

Результат выполнения

Пример для самостоятельного изучения

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

А вы используете Mesh?

Полезные ссылки:

раз, два, три, четыре.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.