好吧,我不同意 Joszsef 变体,因为加法WITHOUT MEMBERS
会产生所有组键值,它不会自动对数字字段求和COLLECT
。为此,您需要采取其他措施。
这是适合您需要并收集 NETWR 字段的增强型 Joszef 变体:
TYPES: BEGIN OF ty_ekpo,
ebeln TYPE ebeln,
ebelp TYPE ebelp,
netwr TYPE ekpo-netwr,
END OF ty_ekpo,
tty_ekpo TYPE STANDARD TABLE OF ty_ekpo WITH EMPTY KEY.
DATA: it_ekpo TYPE SORTED TABLE OF ty_ekpo WITH UNIQUE KEY ebeln ebelp.
DATA(lt1_ekpo) = VALUE tty_ekpo(
FOR GROUPS <group_key> OF <g> IN it_ekpo GROUP BY ( ebeln = <g>-ebeln ebelp = <g>-ebelp )
LET coll_line = REDUCE #( INIT line TYPE ty_ekpo FOR <m> IN GROUP <group_key>
NEXT line-ebeln = <m>-ebeln line-ebelp = <m>-ebelp line-netwr = line-netwr + <m>-netwr )
IN ( coll_line ) ) .
基于两个 REDUCE 的另一种风味:
DATA(lt2_ekpo) = REDUCE tty_ekpo( INIT cline = VALUE tty_ekpo( )
FOR GROUPS <group_key> OF <g> IN it_ekpo GROUP BY ( ebeln = <g>-ebeln ebelp = <g>-ebelp )
NEXT cline = VALUE #( BASE cline ( ebeln = <group_key>-ebeln ebelp = <group_key>-ebelp
netwr = REDUCE netwr( INIT val TYPE netwr
FOR wa IN
FILTER #( it_ekpo WHERE ebeln = <group_key>-ebeln AND ebelp = <group_key>-ebelp )
NEXT val = val + wa-netwr ) ) ) ).
我看到在您的原始帖子中您也没有进行总结,您只是将关键字段收集到表格中。如果这是您需要的,Joszef 片段就可以了。只是要注意它的COLLECT
作用远不止于此。