Mesh или немного синтаксического сахара.


Mesh – это специальный тип который представляет собой связанные внутренние таблицы(узлы). Структура в целом похожа на структуру БД.
Mesh появился в ABAP 7.40 бла-бла-бла… Основная проблема в том ,что он не прижился, возможно из-за слабой осведомленности разработчиков, возможно из-за не перспективности подхода. Однако, в некоторых случаях данная концепция ложится довольно хорошо. 


Синтаксис:
ASSOCIATION – имя узла. В дальнейшем его будет необходимо указывать для навигации по структуре.
TO – указывает на узел, к которому относится ассоциация
ON – ключ связывающий узлы
Кроме этого, типы таблиц для узлов MESH должны иметь ключевые поля.

Заполним получившуюся структуру:

Теперь попробуем выбрать данные. Примеры  не имеют особого смысла и служат просто для показа функционала.

Мы по виду материала  из таблицы mara  хотим получить  название самого материала. Без Mesh  код выглядит так.

Тот же результат с MESH

На выходе получим строку из ms_matnr-makt
Это называется прямой связью. Также мы можем получить данные узла ms_matnr-mara по каким либо критериям из  узла ms_matnr-makt. Хотя прямая связь в эту сторону у нас не описана.  Это называется обратной связью. Для этого после “\” необходимо добавить “^” и указать целевой узел через “~”.

В результате получим строку  matnr = ‘00000002’ maktx = ‘Материал 2’ spras = ‘R’.
Также можно использовать более сложные соединения для этого надо указывать последующие узлы через ‘\’. 
… mesh-node1\to_node2[ mesh-node1[ … ] ]\to_node3[  ] …

При помощи FOR  можно  выбрать несколько строк:

Результат

Дополнительная информация

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

ABAP 740 – Meshes – A new complex type of Structures

Еще примеры

 

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *