2007 Mar 26 1:03 PM
Hi Experts,
I have an internal table with fields category, amt1,amt2,amt3...amt100,city1 say with 100 rows and 10 category.
I want to sum amt1...amt100 for each category So the result would be in 10 rows.
Points gauranteed.
--Ragu
Hi Raguraman,
Use the Collect stmt to group all the related category fields along with the internal table.
Hope this resolves your query.
Reward all the helpful answers.
Regards
2007 Mar 26 1:06 PM
Hi Raguraman,
Use the Collect stmt to group all the related category fields along with the internal table.
Hope this resolves your query.
Reward all the helpful answers.
Regards
2007 Mar 26 1:07 PM
Sort itab by category.
Looop at Itab.
AT end of itab1-category.
Collect itab1.
endat.
Endloop.
Message was edited by:
Alexander
2007 Mar 26 1:16 PM
hi,
You can use following code to resolve the your problem.
*" Data declarations...................................................
"----
Data declaration of the structure to hold material information *
"----
data:
begin of fs_material,
material(7) type c, " Material
purchase(4) type c, " Purchase order
podate like sy-datum, " Po date
quantity type i, " Quantity
unit(2) type c, " Unit
end of fs_material.
*" Data declarations...................................................
"----
Data declaration of the structure to hold units details *
"----
data:
begin of fs_unit,
quantity type i, " Quantity
unit(2) type c, " Unit
end of fs_unit.
*" Data declarations...................................................
"----
Work variables *
"----
data:
w_material(7) type c. " Material
"----
Internal table to hold material information *
"----
data:
t_material like
standard table
of fs_material
with non-unique key material.
"----
Internal table to hold material information *
"----
data:
t_unit like
standard table
of fs_unit
with non-unique key unit.
clear fs_material .
fs_material-material = 'MAT_001'(001).
fs_material-purchase = '6001'(002).
fs_material-podate = '20020304'(003).
fs_material-quantity = '10'.
fs_material-unit = 'EA'(004).
append fs_material to t_material.
clear fs_material .
fs_material-material = 'MAT_001'(001).
fs_material-purchase = '6002'(005).
fs_material-podate = '20021901'(006).
fs_material-quantity = '5'.
fs_material-unit = 'CA'(007).
append fs_material to t_material.
clear fs_material .
fs_material-material = 'MAT_003'(008).
fs_material-purchase = '6003'(009).
fs_material-podate = '20021901'(006).
fs_material-quantity = '20'.
fs_material-unit = 'EA'(004).
append fs_material to t_material.
clear fs_material .
fs_material-material = 'MAT_001'(001).
fs_material-purchase = '6004'(010).
fs_material-podate = '20021005'(011).
fs_material-quantity = '15'.
fs_material-unit = 'EA'(004).
append fs_material to t_material.
clear fs_material .
fs_material-material = 'MAT_003'(008).
fs_material-purchase = '6005'(012).
fs_material-podate = '20020805'(013).
fs_material-quantity = '6'.
fs_material-unit = 'CA'(007).
append fs_material to t_material.
clear fs_material .
fs_material-material = 'MAT_002'(014).
fs_material-purchase = '6006'(015).
fs_material-podate = '20023001'(016).
fs_material-quantity = '40'.
fs_material-unit = 'EA'(004).
append fs_material to t_material.
clear fs_material .
fs_material-material = 'MAT_003'(008).
fs_material-purchase = '6007'(017).
fs_material-podate = '20022402'(018).
fs_material-quantity = '10'.
fs_material-unit = 'CA'(007).
append fs_material to t_material.
clear fs_material .
fs_material-material = 'MAT_002'(014).
fs_material-purchase = '6008'(019).
fs_material-podate = '20022402'(018).
fs_material-quantity = '5'.
fs_material-unit = 'EA'(004).
append fs_material to t_material.
clear fs_material .
write:'Material'(020).
uline at /(8).
write: /20 'Purchase Order'(021),
35 'P O Date'(022),
50 'Quantity'(023),
65 'Unit'(024).
uline : /20(14),35(8),50(10),65(5).
sort t_material by material.
loop at t_material into fs_material.
fs_unit-unit = fs_material-unit.
fs_unit-quantity = fs_material-quantity.
collect fs_unit into t_unit.
if w_material ne fs_material-material.
w_material = fs_material-material.
write:/ w_material.
endif. " IF W_MATERIAL NE FS_MATERIAL..
write:/25 fs_material-purchase,
35 fs_material-podate,
45 fs_material-quantity,
65 fs_material-unit.
at end of material.
skip .
write: / 'Total quantity ordered'(025).
loop at t_unit into fs_unit.
write:45 fs_unit-quantity ,
65 fs_unit-unit,/.
endloop. " LOOP AT T_UNIT INTO FS_UNIT
clear t_unit[].
skip 2.
endat. " AT END OF MATERIAL
endloop. " LOOP AT T_MATERIAL INTO ....
regards,
veeresh
2007 Mar 26 1:45 PM
Hi...
you can acheive that using the following example...
apply it to your problem
REPORT ZYH642_TEST_2.
data:
sum type i,
tsum type i.
data:
begin of itab occurs 0,
c1 type c,
f1 type i,
f2 type i,
f3 type i,
f4 type i,
end of itab.
do 10 times.
itab-c1 = 'A'.
itab-f1 = sy-index.
itab-f2 = sy-index.
itab-f3 = sy-index.
itab-f4 = sy-index.
append itab.
enddo.
do 10 times.
do 4 times varying sum from itab-f1 next itab-f2.
tsum = tsum + sum.
enddo.
write: / tsum.
clear tsum.
| User | Count |
|---|---|
| 6 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |