2020-09-07 14:55发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我想根据物料编号从表VBBE添加未结订单(VBBE-OMENG)。 和plant。我可以使用COLLECT语句吗? 我该如何利用它?
嗨..
这是代码:尝试.....
类型:ST_VBBE的开始,
MATNR类型VBBE-MATNR ,
WERKS类型VBBE-WERKS,
OMENG类型VBBE-OMENG,
ST_VBBE的结尾。
数据:IT_VBBE类型表 在ST_VBBE中,
WA_VBBE类型为ST_VBBE。 。
将IT_VBBE放入WA_VBBE。
将WA_VBBE放入IT_VBBE。
ENDLOOP。
如果有帮助,则奖励 b>
此消息已被审核。
Hello Vishal,
通常用于收集记录以附加到内部表中……
COLLECT语法图
基本形式COLLECT [wa INTO] itab。
添加:
...由f
排序在ABAP Objects上下文中,语法更为严格
在其他ABAP区域执行。 请参见行的短格式
操作。
效果COLLECT允许您创建唯一或汇总的数据集。
系统首先尝试查找表条目 对应于
表键(请参阅内部表的键定义)。
键值是从
内部表itab的标题行获取的,还是从明确指定的工作
区域wa获取的。 itab必须具有平面结构,也就是说,
可能不包含其他内部表。 所有不属于键的
部分的组件都必须具有数字类型(请参阅ABAP数字
类型)。
如果系统找到条目,则 不属于表键的
部分的数字字段(请参阅ABAP数字类型)被添加到现有条目的
总和中。 如果找不到
条目,则系统将创建一个新条目。
系统查找条目的方式取决于
类型 内部表的编号:
-标准表:
系统为
表创建临时哈希管理以查找条目。 这意味着找到它们所需的运行时
不取决于
表条目的数量。 该管理是临时的,因为它会被诸如DELETE,INSERT,MODIFY或
SORT之类的操作使
无效。 然后,后续的COLLECT将不再与表的大小无关,因为系统必须使用线性
搜索来查找条目。 因此,您只能
使用COLLECT填充标准表。
-排序表:
系统使用二进制搜索来查找条目。
表的数量
条目和搜索时间之间是对数关系。
-哈希表:
使用
表的内部哈希管理来查找记录。 由于(与标准表不同),即使在表修改操作之后,此
仍保持完整,因此
的搜索时间始终与表项的数量无关。
对于标准表和SORTED TABLE,系统字段
SY-TABIX包含APPEND之后现有或新添加的
表条目的编号。 对于HASHED TABLE,将SY-TABIX
设置为0。
注释1. COLLECT允许您创建唯一的或汇总的
数据集,您应该 仅在必要时使用它。
如果这两个特征都不是必需的,或者在应用程序中表的性质
表示它是
不可能发生重复的条目,您应该使用
INSERT [wa INTO] TABLE Itab而不是COLLECT。 如果您
需要表唯一或汇总,则COLLECT是实现表的最有效方法。
2.如果您将COLLECT与 工作区,工作区必须与内部表的线型兼容。
3.如果使用COLLECT编辑标准表,则只能
使用COLLECT或MODIFY ... TRANSPORTING f1 f2 ...
语句(其中f1,f2,...都不在键中)
热情的盛宴)。 只有这样,您才能确定:
-内部表实际上是唯一的或汇总的
-COLLECT有效地运行。 检查数据集
是否已经包含具有相同键的条目,并具有
常量
搜索时间(哈希过程)。
如果您使用任何其他表修改语句,
检查数据集中具有相同键的条目只能
使用线性搜索运行(并且将因此
更长)。 您可以使用功能模块
ABL_TABLE_HASH_STATE来测试COLLECT对于给定的标准表是否具有恒定的或线性的搜索时间。
汇总销售额示例 按公司分类:
类型:公司开始,
名称(20),类型C,
销售类型I,
公司。
数据:COMP类型公司,
具有唯一键名的公司COMPTAB类型哈希表
。
COMP-NAME ="鸭子"。 COMP-SALES =10。将COMP收集到
COMPTAB中。
COMP-NAME ='Tiger'。 COMP-SALES =20。将COMP收集到
COMP-NAME ='Duck'。 COMP-SALES =30。将COMP收集到
表COMPTAB现在具有以下内容:
名称销售
鸭子 40
Tiger 20
添加...按f排序
效果COLLECT ...按f排序已过时,不再应该
已使用。 它仅适用于标准表,并具有与APPEND ... SORTED BY f相同的功能
,您应该改用
。 (另请参见过时的语句。)
注意性能:
1.在使用带有标题行的内部表时,避免不必要地分配给标题行。 尽可能使用具有明确工作区域的
语句。
例如," APPEND wa TO itab"。 大约是" itab = wa。APPEND itab"的两倍。
COLLECT和INSERT也是如此。
2. COLLECT的运行时间随表键
的宽度和数字字段数量的增加而增加。
的内容求和。
注意运行时错误:
-COLLECT_OVERFLOW:
加法期间
-COLLECT_OVERFLOW_TYPE_P:在添加
期间,P型字段溢出。
-TABLE_COLLECT_CHAR_IN_FUNCTION:在非数字
字段上收集。 p>
奖励如果有用。
致谢
-
Sasidhar Reddy Matli。
嗨
通过这个简单的程序。
类型:公司开始时,
NAME(20)C型,
公司结尾。
数据:COMP TYPE COMPANY
公司的混合类型哈希表
具有唯一键名。
COMP-NAME ='Duck'。 COMP-SALES =10。将COMP收集到COMPTAB中。
COMP-NAME ="老虎"。 COMP-SALES =20。将COMP收集到COMPTAB中。
COMP-NAME ='Duck'。 COMP-SALES =30。将COMP收集到COMPTAB中。
NAME | 销售
鸭| 40
老虎| 20
在您的程序中使用collect VBBE-werks。
嗨,请注意,您在我的理解上犯了一个小错误,这就是为什么您无法通过collect获取数据
这是重新改正的代码,就像您感到满意一样。
我希望这能解决您的查询。
谢谢。
最多设置5个标签!
嗨..
这是代码:尝试.....
类型:ST_VBBE的开始,
MATNR类型VBBE-MATNR ,
WERKS类型VBBE-WERKS,
OMENG类型VBBE-OMENG,
ST_VBBE的结尾。
数据:IT_VBBE类型表 在ST_VBBE中,
WA_VBBE类型为ST_VBBE。 。
将IT_VBBE放入WA_VBBE。
将WA_VBBE放入IT_VBBE。
ENDLOOP。
如果有帮助,则奖励 b>
此消息已被审核。
此消息已被审核。
Hello Vishal,
< p>查找要收集的文档。通常用于收集记录以附加到内部表中……
COLLECT语法图
基本形式COLLECT [wa INTO] itab。
添加:
...由f
排序在ABAP Objects上下文中,语法更为严格
在其他ABAP区域执行。 请参见行的短格式
操作。
效果COLLECT允许您创建唯一或汇总的数据集。
系统首先尝试查找表条目 对应于
表键(请参阅内部表的键定义)。
键值是从
内部表itab的标题行获取的,还是从明确指定的工作
区域wa获取的。 itab必须具有平面结构,也就是说,
可能不包含其他内部表。 所有不属于键的
部分的组件都必须具有数字类型(请参阅ABAP数字
类型)。
如果系统找到条目,则 不属于表键的
部分的数字字段(请参阅ABAP数字类型)被添加到现有条目的
总和中。 如果找不到
条目,则系统将创建一个新条目。
系统查找条目的方式取决于
类型 内部表的编号:
-标准表:
系统为
表创建临时哈希管理以查找条目。 这意味着找到它们所需的运行时
不取决于
表条目的数量。 该管理是临时的,因为它会被诸如DELETE,INSERT,MODIFY或
SORT之类的操作使
无效。 然后,后续的COLLECT将不再与表的大小无关,因为系统必须使用线性
搜索来查找条目。 因此,您只能
使用COLLECT填充标准表。
-排序表:
系统使用二进制搜索来查找条目。
表的数量
条目和搜索时间之间是对数关系。
-哈希表:
使用
表的内部哈希管理来查找记录。 由于(与标准表不同),即使在表修改操作之后,此
仍保持完整,因此
的搜索时间始终与表项的数量无关。
对于标准表和SORTED TABLE,系统字段
SY-TABIX包含APPEND之后现有或新添加的
表条目的编号。 对于HASHED TABLE,将SY-TABIX
设置为0。
注释1. COLLECT允许您创建唯一的或汇总的
数据集,您应该 仅在必要时使用它。
如果这两个特征都不是必需的,或者在应用程序中表的性质
表示它是
不可能发生重复的条目,您应该使用
INSERT [wa INTO] TABLE Itab而不是COLLECT。 如果您
需要表唯一或汇总,则COLLECT是实现表的最有效方法。
2.如果您将COLLECT与 工作区,工作区必须与内部表的线型兼容。
3.如果使用COLLECT编辑标准表,则只能
>使用COLLECT或MODIFY ... TRANSPORTING f1 f2 ...
语句(其中f1,f2,...都不在键中)
热情的盛宴)。 只有这样,您才能确定:
-内部表实际上是唯一的或汇总的
-COLLECT有效地运行。 检查数据集
是否已经包含具有相同键的条目,并具有
常量
搜索时间(哈希过程)。
如果您使用任何其他表修改语句,
检查数据集中具有相同键的条目只能
使用线性搜索运行(并且将因此
>更长)。 您可以使用功能模块
ABL_TABLE_HASH_STATE来测试COLLECT对于给定的标准表是否具有恒定的或线性的搜索时间。
汇总销售额示例 按公司分类:
类型:公司开始,
名称(20),类型C,
销售类型I,
公司。
数据:COMP类型公司,
具有唯一键名的公司COMPTAB类型哈希表
。
COMP-NAME ="鸭子"。 COMP-SALES =10。将COMP收集到
COMPTAB中。
COMP-NAME ='Tiger'。 COMP-SALES =20。将COMP收集到
COMPTAB中。
COMP-NAME ='Duck'。 COMP-SALES =30。将COMP收集到
COMPTAB中。
表COMPTAB现在具有以下内容:
名称销售
鸭子 40
Tiger 20
添加...按f排序
效果COLLECT ...按f排序已过时,不再应该
已使用。 它仅适用于标准表,并具有与APPEND ... SORTED BY f相同的功能
,您应该改用
。 (另请参见过时的语句。)
注意性能:
1.在使用带有标题行的内部表时,避免不必要地分配给标题行。 尽可能使用具有明确工作区域的
语句。
例如," APPEND wa TO itab"。 大约是" itab = wa。APPEND itab"的两倍。
。
COLLECT和INSERT也是如此。
2. COLLECT的运行时间随表键
的宽度和数字字段数量的增加而增加。
的内容求和。
注意运行时错误:
-COLLECT_OVERFLOW:
加法期间
>-COLLECT_OVERFLOW_TYPE_P:在添加
期间,P型字段溢出。
-TABLE_COLLECT_CHAR_IN_FUNCTION:在非数字
字段上收集。 p>
奖励如果有用。
致谢
-
Sasidhar Reddy Matli。
嗨
通过这个简单的程序。
类型:公司开始时,
NAME(20)C型,
销售类型I,
公司结尾。
数据:COMP TYPE COMPANY
公司的混合类型哈希表
具有唯一键名。
COMP-NAME ='Duck'。 COMP-SALES =10。将COMP收集到COMPTAB中。
COMP-NAME ="老虎"。 COMP-SALES =20。将COMP收集到COMPTAB中。
COMP-NAME ='Duck'。 COMP-SALES =30。将COMP收集到COMPTAB中。
表COMPTAB现在具有以下内容:
NAME | 销售
-
鸭| 40
老虎| 20
在您的程序中使用collect VBBE-werks。
嗨,请注意,您在我的理解上犯了一个小错误,这就是为什么您无法通过collect获取数据
这是重新改正的代码,就像您感到满意一样。
MATNR类型VBBE-MATNR,
WERKS类型VBBE-WERKS,
OMENG类型VBBE-OMENG,
ST_VBBE的结尾。
数据:IT_VBBE类型表 ST_VBBE的类型,
WA_VBBE的类型ST_VBBE,
it_vbbe_f的st_vbbe的类型表,
WA_VBBE_F的ST_VBBE的类型。
开始选择。 最多500行。
断点。
将IT_VBBE放入WA_VBBE。
将WA_VBBE收集到IT_VBBE_f。
ENDLOOP。
我希望这能解决您的查询。
谢谢。
一周热门 更多>