如何计算select语句中内部表中字段的记录数?

时间:2011-03-08 06:06:25

标签: abap

我采用了ty_marc类型的内部表。 在这个内部表中我采用了2个字段matnr和werks_d。 我想根据用户提供的条目计算工厂生产的材料数量(marc-werks)。

我把代码写成......

if so_matnr is not initial.
select matnr werks from marc 
into table it_marc
where matnr in so_matnr.
endif.

loop at it_marc into w_marc.
write :/ w_marc-matnr. ( how to count total number of material eg:- material number : 100-100 to 100-110).
       w_marc-werks.
endloop.

我想计算材料的总数,并在同一内部表的另一个字段中显示计数。 注意:材料编号100-100可能有10个材料,所以我希望在同一个内部表的另一个字段中计数为10,而100-110可以有n个记录,并且字段中的计数应为n。

1 个答案:

答案 0 :(得分:3)

有两个简单的选择。

如果您实际上并不关心工厂(werks),请在group by语句中使用count子句和select函数。类似的东西:

select matnr, count(*)
from marc
where matnr in so_matnr
group by matnr
into table it_marc_count.

结构it_marc_count需要在第二个位置有一个整数字段(显然在第一个位置有matnr)。

如果确实需要werks,最简单的方法是使用matnr对it_marc进行排序,然后使用at end循环中的sumloop at结构(或类似的东西)。 Processing Table Entries in Loops末尾的示例可以帮助您入门。