1

タイプty_marcの内部テーブルを取得しました。この内部テーブルでは、matnrとwerks_dの2つのフィールドを取得しました。ユーザーからの入力に基づいて、工場で製造された材料(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

2 つの簡単なオプションがあります。

実際にプラント (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 は、2 番目の位置に整数フィールドを持つ必要があります (明らかに最初の位置には matnr があります)。

ワークが必要な場合は、it_marc を matnr で並べ替えてから、ループ内でat endandsum構造loop at(または類似のもの) を使用するのが最も簡単です。ループでのテーブル エントリの処理の最後にある例を参考にしてください。

于 2011-03-08T06:30:47.237 に答える