Skip to content

iDempiere 部品表(BOM & Formula)の使い方|製造 操作マニュアル・技術仕様

This content is not available in your language yet.

📖 製造の全体像: 製造の全体図 も合わせてご覧ください。

部品表(BOM & Formula)は、製品 1 単位を製造するために必要な構成品目(部品・原材料・中間品)とその数量を定義するマスタです。ここで定義した BOM は製造指図伝票(単品)の明細生成の元データとなり、業種によっては「配合表」「レシピ」とも呼ばれます。

📌 ポイント: 製造指図伝票が既定で参照するのは「部品表タイプ = A」かつ「部品表使用用途 = A」の有効な BOM です。1 品目に複数の BOM を登録できますが、既定 BOM はこの条件で決まります。

部品表(BOM & Formula)でできること

Section titled “部品表(BOM & Formula)でできること”
  • 親品目に対する構成品目(部品・原材料)と所要数量の定義
  • 1 品目に対する複数 BOM の登録(タイプ・用途・リビジョンで区別)
  • 有効期間(有効開始日・有効終了日)による BOM の世代管理
  • 既存 BOM から明細をコピーして新 BOM を作成(Copy BOM Lines From)
  • 構成品目タイプによる部品・連産品・副産物などの区別
  • BOM 名称・説明の多言語翻訳

部品表(BOM & Formula)は 4 タブ構成です。

タブ名テーブル項目数役割
親品目PP_Product_BOM13項目BOM ヘッダー(親品目・タイプ・用途・リビジョン)
翻訳PP_Product_BOM_Trl9項目BOM 名称・説明の翻訳
部品表の構成品目PP_Product_BOMLine10項目構成品目と数量の定義
翻訳PP_Product_BOMLine_Trl8項目構成品目明細の翻訳

💡 ヒント: 翻訳タブは多言語運用しない場合は使用不要です。通常の登録作業は「親品目」タブと「部品表の構成品目」タブの 2 つで完結します。

graph TD
    A["🚀 メニューから開く<br/>生産管理 > 部品表(BOM &amp; Formula)"] --> B["➕ 新規で親品目タブを入力<br/>(品目・検索キー・名称)"]
    B --> C{明細の作り方}
    C -->|手入力| D["📋 構成品目タブで<br/>品目・数量を 1 行ずつ登録"]
    C -->|既存BOMを流用| E["📑 Copy BOM Lines From ボタンで<br/>既存 BOM から明細コピー"]
    D --> F["💾 保存"]
    E --> F
    F --> G["🏭 製造指図伝票 (単品) で<br/>この BOM を参照して明細生成"]

メニューから開く 生産管理 > 部品表(BOM & Formula) 新規で親品目タブを入力 (品目・検索キー・名称) 構成品目タブで 品目・数量を 1 行ずつ登録 Copy BOM Lines From ボタンで 既存 BOM から明細コピー 保存 製造指図伝票 (単品) で この BOM を参照して明細生成 明細の作り方 手入力 既存BOMを流用

メニューから「生産管理(Manufacturing Lite) > 部品表(Bill of Materials & Formula)」を開きます。

  1. ツールバーの「新規」ボタンをクリック
  2. 親品目タブで基本情報を入力:
    • 品目: BOM の親品目(完成品)を選択。品目選択時に検索キー・名称等の初期値が自動セットされます
    • 検索キー: BOM の一意コード
    • 名称: BOM 名
    • 部品表タイプ / 部品表使用用途: いずれもデフォルトは A。製造指図伝票の既定 BOM にするには両方 A のままにします
    • リビジョン: 設計変更時の版数管理に使用(任意)
  3. 保存」をクリック
  4. 部品表の構成品目」タブに移動し、各構成品目を登録:
    • 品目: 構成品目(部品・原材料)
    • Quantity(QtyBOM): 親品目 1 単位あたりの所要数量
    • 構成品目タイプ: デフォルトは部品(CO)。連産品・副産物の場合は該当タイプを選択
    • 明細番号: 空欄のまま保存すると 10 刻みで自動採番されます
  5. 保存」をクリック

⚠️ 注意: 構成品目タイプを連産品(Co-Product)・副産物(By-Product)にした明細は、数量を負数で入力する必要があります。0 以上の数量で保存するとエラー(Qty > 0)になります。

項目名必須説明
品目必須検索BOM の親品目(完成品)
検索キー必須文字列BOM の一意コード
名称必須テキストBOM 名
リビジョン-文字列設計版数
部品表タイプ-リストBOM のタイプ(デフォルト A)
部品表使用用途-リストBOM の用途(デフォルト A)
属性セットインスタンス-品目属性親品目の属性(ロット等)
Copy BOM Lines From-ボタン既存 BOM から明細をコピー
項目名必須説明
明細番号必須整数明細行番号(10 刻みで自動採番)
品目必須検索構成品目(部品・原材料)
構成品目タイプ-リスト部品/連産品/副産物等(デフォルト CO)
Quantity-数値親品目 1 単位あたりの所要数量
属性セットインスタンス-品目属性構成品目の属性指定
Feature-文字列品目コンフィグ用の特性

全項目一覧はリファレンス参照

Q. 製造指図伝票で BOM が自動選択されません

Section titled “Q. 製造指図伝票で BOM が自動選択されません”

製造指図伝票の「部品表(BOM & Formula)」欄の初期値は、対象品目の BOM のうち 部品表タイプ = A かつ 部品表使用用途 = A かつ有効 のものから選択されます。BOM をこの条件で登録しているか確認してください。条件外の BOM も手動選択は可能です。

Q. 連産品・副産物の数量が保存できません

Section titled “Q. 連産品・副産物の数量が保存できません”

連産品(Co-Product)・副産物(By-Product)タイプの明細は、モデルクラスの保存前チェックにより数量が負数であることが強制されます。「産出される側」の品目のため、消費(正数)ではなく産出(負数)として登録してください。

Q. 構成品目を変更したのに品目マスタの BOM 検証済みフラグが外れるのはなぜですか?

Section titled “Q. 構成品目を変更したのに品目マスタの BOM 検証済みフラグが外れるのはなぜですか?”

既定 BOM(タイプ・用途とも A)の明細を追加・品目変更・有効化すると、親品目マスタの「検証済み(IsVerified)」フラグが自動的にリセットされます。BOM の整合性を再検証させるための標準動作です。

Q. 1 つの品目に複数の BOM を持てますか?

Section titled “Q. 1 つの品目に複数の BOM を持てますか?”

持てます。部品表タイプ・使用用途・リビジョン・有効期間(有効開始日/有効終了日)の組み合わせで複数登録し、世代管理や用途別の使い分けができます。

🛠 技術仕様(開発者向け)

部品表(BOM & Formula)はマスタデータ型のウィンドウ(AD_Window_ID: 53006)で、ヘッダーを PP_Product_BOM、明細を PP_Product_BOMLine に格納します。モデルクラスは MPPProductBOM(468行)と MPPProductBOMLine(420行)で、いずれも org.eevolution.model パッケージに属します(Manufacturing Lite の由来である Libero MFG 系の名残)。Document 型ではありません。アクセスレベルは Client+Org です。

classDiagram
    class MPPProductBOM {
        +get(ctx, PP_Product_BOM_ID) MPPProductBOM
        +getDefault(MProduct, trxName) MPPProductBOM
        +getProductBOMs(MProduct) List
        +getLines() MPPProductBOMLine[]
        +isValidFromTo(Timestamp) boolean
        +markImmutable() MPPProductBOM
    }
    class MPPProductBOMLine {
        #beforeSave(boolean) boolean
        #afterSave(boolean, boolean) boolean
        +getLowLevel() int
        +isByProduct() boolean
        +isCoProduct() boolean
        +getQty(boolean) BigDecimal
    }
    class X_PP_Product_BOM {
        <<generated>>
    }
    class X_PP_Product_BOMLine {
        <<generated>>
    }
    MPPProductBOM --|> X_PP_Product_BOM
    MPPProductBOMLine --|> X_PP_Product_BOMLine
    MPPProductBOM --> MPPProductBOMLine : has many
    MPPProductBOMLine --> MProduct : component

+get(ctx, PP_Product_BOM_ID) MPPProductBOM +getDefault(MProduct, trxName) MPPProductBOM +getProductBOMs(MProduct) List +getLines() MPPProductBOMLine[] +isValidFromTo(Timestamp) boolean +markImmutable() MPPProductBOM #beforeSave(boolean) boolean #afterSave(boolean, boolean) boolean +getLowLevel() int +isByProduct() boolean +isCoProduct() boolean +getQty(boolean) BigDecimal <> > X_PP_Product_BOM MPPProductBOMLine --

パッケージ: org.eevolution.model ソースファイル: org.adempiere.base/src/org/eevolution/model/MPPProductBOM.java / MPPProductBOMLine.java

カラム名必須説明備考
PP_Product_BOM_IDIDPKBOM ID主キー
M_Product_IDSearchY親品目callout: CalloutBOM.getdefaults
ValueString(80)Y検索キー
NameText(60)Y名称
RevisionString(10)Nリビジョン
BOMTypeListN部品表タイプデフォルト A
BOMUseListN部品表使用用途デフォルト A
ValidFrom / ValidToDateN有効期間ValidFrom デフォルト = ログイン日付
C_UOM_IDTableDirectN単位
M_AttributeSetInstance_IDProduct AttributeN属性セットインスタンス
M_ChangeNotice_IDTableDirectN設計変更通知
CopyFromButtonN明細コピー
カラム名必須説明備考
PP_Product_BOMLine_IDIDPKBOM 明細 ID主キー
PP_Product_BOM_IDSearchYBOM ヘッダー FK親リンク
LineIntegerY明細番号デフォルト = MAX(Line)+10
M_Product_IDSearchY構成品目callout: CalloutBOM.parent
ComponentTypeListN構成品目タイプデフォルト CO
QtyBOMNumberN所要数量
QtyBatchNumberN数量(%)IsQtyPercentage=Y 時に使用
IsQtyPercentageYesNoN%指定フラグ
ScrapNumberN仕損率(%)
IsCriticalYesNoN重要部品フラグデフォルト N
IssueMethodListN払出方法デフォルト 1
CostAllocationPercNumberN原価配賦率連産品用、0〜100
ValidFrom / ValidToDateN明細の有効期間
LeadTimeOffsetIntegerNリードタイムオフセット
  1. 連産品/副産物の数量チェック: isCoProduct() が true で数量が 0 以上の場合、例外(@Qty@ > 0)をスローして保存を拒否
  2. 明細番号の自動採番: Line が未設定なら MAX(Line)+10 を自動セット
  1. 低レベルコードの更新: 構成品目の LowLevel(BOM 展開の階層レベル)を再計算し、大きくなった場合は品目マスタを更新
  2. 親品目の検証済みフラグのリセット: 変更対象が既定 BOM(MPPProductBOM.getDefault() = BOMType A ・BOMUse A)の場合、明細の新規追加・品目変更・有効化で親品目の IsVerified を false に戻す。明細を無効化して有効明細が 0 件になった場合も同様

MPPProductBOM.getDefault(MProduct, trxName) が既定 BOM を返します。製造指図伝票(M_Production)の PP_Product_BOM_ID 初期値 SQL も同じ条件(BOMUse='A' AND BOMType='A' AND IsActive='Y'、組織一致優先)です。

拡張ポイント(カスタマイズ箇所)

Section titled “拡張ポイント(カスタマイズ箇所)”
カラムCallout動作
PP_Product_BOM.M_Product_IDorg.eevolution.model.CalloutBOM.getdefaults親品目選択時に検索キー等の初期値をセット
PP_Product_BOMLine.M_Product_IDorg.eevolution.model.CalloutBOM.parent構成品目選択時のチェック(親品目との循環参照防止等)

BOM 明細に独自制約(例: 特定カテゴリ品目の登録禁止、リビジョン命名規則)を追加する場合は、MPPProductBOMLine を対象に TYPE_BEFORE_NEW / TYPE_BEFORE_CHANGE でチェックを実装します。コア改変は不要です。

プロセス名説明
Copy BOM Lines From既存 BOM の明細を現在の BOM にコピー(親品目タブのボタン)

iDempiereの部品表は Model Validator や Callout で安全に拡張できます。 BOM の承認ワークフロー化や設計変更管理の強化も、コア改変なしで実現可能です。

As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。

OSS ERP導入・カスタマイズサービスの詳細はこちら