我获取了一个ty_marc类型的内部表。在这个内部表格中,我取了两个字段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。
发布于 2011-03-08 14:30:47
有两个简单的选择。
如果您实际上并不关心工厂(werks),那么可以在select语句中使用group by子句和count函数。类似于:
select matnr, count(*)
from marc
where matnr in so_matnr
group by matnr
into table it_marc_count.结构it_marc_count需要在第二个位置有一个整型字段(显然在第一个位置有一个整型字段)。
如果确实需要werks,最简单的方法是按matnr对it_marc进行排序,然后在loop at循环(或类似的循环)中使用at end和sum结构。Processing Table Entries in Loops结尾处的示例应该可以帮助您入门。
https://stackoverflow.com/questions/5228976
复制相似问题