特定の品目を構成品に持っている品目を調べたいです。対処法を教えてください。
品目の構成品を一覧出力したいです。対処法を教えてください。
■BOM構成について
品目とBOMは以下のテーブルで管理されています。
テーブルID | 内容説明 | 備考 |
---|---|---|
STKO | BOM ヘッダ | |
STPO | BOM 明細 | BOMの構成品の一覧を保持 |
MAST | 品目の BOM へのリンク | 品目とBOMの紐付きを保持 |
BOMはBOMIDをキーとして管理されています。これはBOMは同じ品目に対して、複数のBOMをもつことができるためです(BOM用途や代替BOMなどで、複数のBOMを管理可能)。
■対処法
各テーブルをそれぞれ検索することでも対応できますが、テーブルを結合して検索した方がやりやすいです。
以下のトランザクションを起動後、診断>SQL Editor(ECCだと、SQLコマンドエディタ)でSQL Editorを開きます。
- DB02
- DBACOCKPIT
- ST04
目的に応じたSQLを以下からコピペし、品目コードを書き換えて実行してください。
特定の品目を構成品に持っている品目を調べる
SELECT
MAST.MATNR /*品目*/
,MAST.WERKS /*プラント*/
,MAST.STLAN /*用途*/
,MAST.STLAL /*代替BOM*/
,STPO.STLNR /*BOM*/
,STPO.IDNRK /*構成品目*/
FROM
STPO
INNER JOIN MAST
ON MAST.MANDT = STPO.MANDT
AND MAST.STLNR = STPO.STLNR
WHERE
STPO.MANDT = '100' /*ここにクライアントを入れる*/
AND STPO.IDNRK = 'A123456789' /*ここに構成品目を入れる*/
品目の構成品を調べる
SELECT
MAST.MATNR /*品目*/
,MAST.WERKS /*プラント*/
,MAST.STLAN /*用途*/
,MAST.STLAL /*代替BOM*/
,STPO.STLNR /*BOM*/
,STPO.IDNRK /*構成品目*/
FROM
STPO
INNER JOIN MAST
ON MAST.MANDT = STPO.MANDT
AND MAST.STLNR = STPO.STLNR
AND MAST.MATNR = 'A123456789' /*ここに品目を入れる*/
WHERE
STPO.MANDT = '100' /*ここにクライアントを入れる*/
コメント