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

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

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

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

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

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

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

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

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

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

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

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

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

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

Путь

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

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

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

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

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

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