1

我拿了一个 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。

4

1 回答 1

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 endandsum构造loop at(或类似的东西)。在循环中处理表条目末尾的示例应该可以帮助您入门。

于 2011-03-08T06:30:47.237 回答