点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
你好
我必须实现一些并行处理逻辑,因此必须创建定义包大小的数据包。
标准文档(Horst Keller)中的示例使第一步变得容易。
使用此编码打包非常容易
DATA(n)=10。
cl_demo_input => request(导出文本="包装尺寸"
更改字段= n)。
如果n <= 0。 。
ENDIF。
cl_demo_output => begin_section(| {n包||的包)。
数据组像itab。 (sy-tabix-1)DIV n + 1.
清除组。
组上的循环wa分配字段符号(
ENDLOOP。
cl_demo_output => write(group)。
ENDLOOP。
但是对于此软件包构建,我还有其他条件。 我正在处理定价条件,并且在处理包裹时,定价表的所有部分都必须位于同一包裹中。
我可以在声明后添加其他表达式。
GROUP BY(sy-tabix-1)DIV n + 1。
我还可以使用哪种说法将定价比例打包在一个包中,同时正确地跳到下一个包? (包装可能小于包装尺寸n)
问题中用于创建包的示例与行内容无关。 但是,您的要求也确实取决于行的内容。 而且您的包装尺寸要求也使它变得稍微复杂一点,因为包装只允许较小,但绝对不允许更大。
我假设,您要使用GROUP BY函数,因为与您自己编程该逻辑背后的函数相比,它看起来更有条理,编码更少。 请注意,更少的编码并不一定意味着更高的性能。
根据您的要求,有几项要计算并要按条件分组。 因此,您将最终以一种或另一种方式再次进行更多的编码。
在使用LOOP AT语句的GROUP BY参数进行所有可能的操作之前,您肯定可以使用方法( 请参阅内部表,使用方法使用LOOP分组):
对于第3点),我使用LOOP ... GROUP BY ...,使用一种方法来创建所需的软件包。 请注意,如果密钥中有许多重复的密钥条目大于程序包大小,则这些程序包最终将大于程序包大小,以避免不必遗漏那些记录。 另外,如果下一个具有重复键条目的键不适合当前程序包,则还会有较小的程序包。
您能提供输入数据和预期结果的示例吗?
对于那些感兴趣的人,您的示例摘自ABAP文档-内部表,以包中的LOOP分组。
托马斯剧院,请继续回答您的公开问题。
一周热门 更多>