Время чтения ~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).
![](https://i0.wp.com/abapcode.ru/wp-content/uploads/2019/09/image.png?resize=513%2C239&ssl=1)
Пример для самостоятельного изучения
Чтобы лучше понять как работать с меш, предлагаю скопировать пример ниже и воспользоваться отладчиком.