ABAP Mesh is also a new feature in 740. Let’s use an example to demonstrate how it works:
I have defined two types for developers and managers. developer type has a field manager which points to his manager, while manager type does not have any reference to his managing employee.
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.
I also use the new grammar – inline data declaration to fill developer and manager table. So far nothing special.
DATA: lt_developer TYPE tt_developer,
lt_manager TYPE tt_manager.
DATA(Jerry) = VALUE t_developer( name = 'Jerry' salary = 1000 manager = 'Jason' ).
DATA(Tom) = VALUE t_developer( name = 'Tom' salary = 2000 manager = 'Jason' ).
DATA(Bob) = VALUE t_developer( name = 'Bob' salary = 2100 manager = 'Jason' ).
DATA(Jack) = VALUE t_developer( name = 'Jack' salary = 1000 manager = 'Thomas' ).
DATA(David) = VALUE t_developer( name = 'David' salary = 2000 manager = 'Thomas' ).
DATA(John) = VALUE t_developer( name = 'John' salary = 2100 manager = 'Thomas' ).
DATA(Jason) = VALUE t_manager( name = 'Jason' salary = 3000 ).
DATA(Thomas) = VALUE t_manager( name = 'Thomas' salary = 3200 ).
INSERT Jerry INTO TABLE lt_developer.
INSERT Tom INTO TABLE lt_developer.
INSERT Bob INTO TABLE lt_developer.
INSERT Jack INTO TABLE lt_developer.
INSERT David INTO TABLE lt_developer.
INSERT John INTO TABLE lt_developer.
INSERT Jason INTO TABLE lt_manager.
INSERT Thomas INTO TABLE lt_manager.
Now I define one ABAP mesh t_team with two component managers and developers. With association ‘my_employee’, I connect the internal table managers to developers, so that I could easily find all developers of a given manager. The association ‘my_manager’ just enables the connection in opposite direction: find out the manager of a given developer.
You can compare how I find Jerry’s manager and find all developers whose manager are Thomas using new ABAP mesh and the traditional way.
The result are exactly the same.
Like!
nice 🙂
Excellent example!!
Why did you decide to throw an exception when you try to read invalid entries? I would expect an empty row instead of raising cx_sy_itab_line_not_found. Also why does the LOOP AT command implicitly catch this exception? This does not feel completely coherent.
Consider this example with your sample data:
This gives the following result:
With kind regards,
Tim
Hi Tim,
on the first look, this might look confusing. But that behaviour is exactly the same as it is without using a mesh:
Example:
With regards,
Welf
Hi,
i’m agree with Tim but in another context, if I use the FOR IN expression I should have the same result than the LOOP AT WHERE if I take your example: