Well, I disagree with the Joszsef variant, because addition WITHOUT MEMBERS
produces all group key values, it does NOT sum numeric fields automatically alike COLLECT
. You need additional actions for this.
Here is the enhanced Joszef's variant that fits your needs and collects NETWR field:
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 ) ) .
Another flavor based on two REDUCEs:
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 ) ) ) ).
I see that in your original post you also do not make summarizing, you just collecting key fields into table. If this is what you need, Joszef snippet is OK. Just to notice that COLLECT
does more than that.