ABAP 7.40-网格限制?
是否有任何已知的网格限制? 我知道,表类型必须是非泛型的 但是,一个5键dbtable作为本地表类型定义的基础是不合适的吗???(我真的很怀疑) 我只是有一个两级表层次结构,并希望通过主表的键检索第二个表py的所有网格结果。我只有向前联想,看看,这就是我试图实现的(在一些网站上找到的模式): 此转储为“未找到CX_ITAB_行” 但我确实做到了,它是怎么写的。我认为,这一定行得通,因为我使用这种方法来根据第一个表的键条目从另一个表中获取子集。我尝试添加额外的关联参数,它不再转储,但无论如何,只返回第二个表的一条记录 我似乎忽略了一些基本的东西,但是哪一个呢?如中所述,“网格路径表达式的结果是从网格路径的最后一个路径节点开始的一行” PS:这里有演示网格表达式*的程序,用于播放网格路径表达式。以下是一个简短的独立演示程序,摘自:ABAP 7.40-网格限制?,abap,Abap,是否有任何已知的网格限制? 我知道,表类型必须是非泛型的 但是,一个5键dbtable作为本地表类型定义的基础是不合适的吗???(我真的很怀疑) 我只是有一个两级表层次结构,并希望通过主表的键检索第二个表py的所有网格结果。我只有向前联想,看看,这就是我试图实现的(在一些网站上找到的模式): 此转储为“未找到CX_ITAB_行” 但我确实做到了,它是怎么写的。我认为,这一定行得通,因为我使用这种方法来根据第一个表的键条目从另一个表中获取子集。我尝试添加额外的关联参数,它不再转储,但无论如何,只返
类型:从t_管理器开始,
名称类型char10,
薪酬类型int4,
t_经理结束,
tt_管理器类型具有唯一键名的t_管理器的排序表。
类型:从t_开发者开始,
名称类型char10,
薪酬类型int4,
经理类型char10,
t_developer的结尾,
tt_developer类型具有唯一键名的t_developer的排序表。
类型:网格m_团队的开始,
经理类型tt_经理协会我的员工与开发人员
在manager=name上,
开发人员键入tt_开发人员协会我的经理到经理
在name=manager上,
网格m_团队结束。
数据:ls_团队类型m_团队。
LS_团队经理=价值#(
(姓名='Jason'工资=3000)
(姓名='Thomas'薪金=3200))。
LS_团队开发人员=价值#(
(姓名='Bob'薪水=2100经理='Jason')
(姓名='David'薪水=2000经理='Thomas')
(姓名=‘杰克’薪水=1000经理=‘托马斯’)
(姓名='Jerry'薪水=1000经理='Jason')
(姓名='John'薪水=2100经理='Thomas')
(姓名='Tom'薪水=2000经理='Jason'))。
“了解杰瑞经理的详细情况
将ls_team-developers[name='Jerry']分配给FIELD-SYMBOL()。
数据(ls_jmanager)=ls_团队开发人员\my_经理[]。
写:/|杰瑞的经理:{ls|jmanager-name}|,30
|薪金:{ls_jmanager-Salary}}。
“找到托马斯的开发者
跳过
写:/|托马斯的开发者:|。
将ls_团队经理[name='Thomas']分配给字段-SYMBOL()。
在ls_团队经理\我的员工处循环[]
正在分配字段-SYMBOL()。
写:/|员工姓名:{-name}|。
结束循环。
“网格路径表达式的结果是网格路径的最后一个路径节点中的一行
数据(thomas_employee)=ls_团队经理\我的员工[]。
跳过
写:/|托马斯的“任何”员工姓名:{Thomas|u Employee-name}|。
我想应该是DATA(chk)=ls\u mesh-types\to\u排除[ls\u mesh-types[order\u type=wf\u check]].
,不是吗?是的,这是一个只显示一个结果的结果。我想一次显示所有结果。请注意我的代码,它与您的代码不同。我提到,我也尝试过这个,但我没有发布它。好吧,我错了,用作表达式的网格只返回文档中所述的一行,这与您在TYPES: lty_types TYPE STANDARD TABLE OF zordertype WITH NON-UNIQUE KEY table_line,
lty_excludes TYPE STANDARD TABLE OF zexcludeorder WITH NON-UNIQUE key table_line.
DATA: lt_types TYPE lty_types,
lt_excludes TYPE lty_excludes.
TYPES:
BEGIN OF MESH ty_type_excludes,
types TYPE lty_types
ASSOCIATION to_excludes
TO excludes ON order_type = order_type,
excludes TYPE lty_excludes,
END OF MESH ty_type_excludes.
DATA: ls_mesh TYPE ty_type_excludes.
START-OF-SELECTION.
SELECT * FROM zordertype
INTO TABLE @lt_types
ORDER BY order_type.
SELECT * FROM zexcludeorder
INTO TABLE @lt_excludes
ORDER BY order_type.
ls_mesh-types = lt_types.
ls_mesh-excludes = lt_excludes.
DATA wf_check TYPE zorder_type VALUE 'CAT'.
DATA(chk) = ls_mesh-types\to_excludes[ wf_check ].
break myuser.
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 }|.