如所述
ABAP documentation, a mesh path expression
,“网格路径表达式的结果是
一行
从网格路径的最后一个路径节点”。
注意:这里有程序demo_mesh_expression*来播放网格路径表达式。下面是一个较短的独立演示程序,取自
chapter 12 of blog post ABAP 7.40 Quick Reference
:
TYPES: BEGIN OF t_manager,
name TYPE char10,
salary TYPE int4,
END OF t_manager,
tt_manager TYPE SORTED TABLE OF t_manager WITH UNIQUE KEY name.
TYPES: BEGIN OF t_developer,
name TYPE char10,
salary TYPE int4,
manager TYPE char10,
END OF t_developer,
tt_developer TYPE SORTED TABLE OF t_developer WITH UNIQUE KEY name.
TYPES: BEGIN OF MESH m_team,
managers TYPE tt_manager ASSOCIATION my_employees TO developers
ON manager = name,
developers TYPE tt_developer ASSOCIATION my_manager TO managers
ON name = manager,
END OF MESH m_team.
DATA: ls_team TYPE m_team.
LS_TEAM-MANAGERS = value #(
( Name = 'Jason' Salary = 3000 )
( Name = 'Thomas' Salary = 3200 ) ).
LS_TEAM-DEVELOPERS = value #(
( Name = 'Bob' Salary = 2100 manager = 'Jason' )
( Name = 'David' Salary = 2000 manager = 'Thomas' )
( Name = 'Jack' Salary = 1000 manager = 'Thomas' )
( Name = 'Jerry' Salary = 1000 manager = 'Jason' )
( Name = 'John' Salary = 2100 manager = 'Thomas' )
( Name = 'Tom' Salary = 2000 manager = 'Jason' ) ).
" Get details of Jerry's manager
ASSIGN ls_team-developers[ name = 'Jerry' ] TO FIELD-SYMBOL(<ls_jerry>).
DATA(ls_jmanager) = ls_team-developers\my_manager[ <ls_jerry> ].
WRITE: / |Jerry's manager: { ls_jmanager-name }|,30
|Salary: { ls_jmanager-salary }|.
" Get Thomas' developers
SKIP.
WRITE: / |Thomas' developers:|.
ASSIGN ls_team-managers[ name = 'Thomas' ] TO FIELD-SYMBOL(<ls_thomas>).
LOOP AT ls_team-managers\my_employees[ <ls_thomas> ]
ASSIGNING FIELD-SYMBOL(<ls_emp>).
WRITE: / |Employee name: { <ls_emp>-name }|.
ENDLOOP.
" the result of a mesh path expression is a row from the last path node of the mesh path
DATA(thomas_employee) = ls_team-managers\my_employees[ <ls_thomas> ].
SKIP.
WRITE: / |Thomas's "any" Employee name: { thomas_employee-name }|.