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_BOM | 13項目 | BOM ヘッダー(親品目・タイプ・用途・リビジョン) |
| 翻訳 | PP_Product_BOM_Trl | 9項目 | BOM 名称・説明の翻訳 |
| 部品表の構成品目 | PP_Product_BOMLine | 10項目 | 構成品目と数量の定義 |
| 翻訳 | PP_Product_BOMLine_Trl | 8項目 | 構成品目明細の翻訳 |
💡 ヒント: 翻訳タブは多言語運用しない場合は使用不要です。通常の登録作業は「親品目」タブと「部品表の構成品目」タブの 2 つで完結します。
基本操作手順
Section titled “基本操作手順”graph TD
A["🚀 メニューから開く<br/>生産管理 > 部品表(BOM & 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 を参照して明細生成"]
アクセス方法
Section titled “アクセス方法”メニューから「生産管理(Manufacturing Lite) > 部品表(Bill of Materials & Formula)」を開きます。
- ツールバーの「新規」ボタンをクリック
- 親品目タブで基本情報を入力:
- 品目: BOM の親品目(完成品)を選択。品目選択時に検索キー・名称等の初期値が自動セットされます
- 検索キー: BOM の一意コード
- 名称: BOM 名
- 部品表タイプ / 部品表使用用途: いずれもデフォルトは
A。製造指図伝票の既定 BOM にするには両方Aのままにします - リビジョン: 設計変更時の版数管理に使用(任意)
- 「保存」をクリック
- 「部品表の構成品目」タブに移動し、各構成品目を登録:
- 品目: 構成品目(部品・原材料)
- Quantity(QtyBOM): 親品目 1 単位あたりの所要数量
- 構成品目タイプ: デフォルトは部品(
CO)。連産品・副産物の場合は該当タイプを選択 - 明細番号: 空欄のまま保存すると 10 刻みで自動採番されます
- 「保存」をクリック
⚠️ 注意: 構成品目タイプを連産品(Co-Product)・副産物(By-Product)にした明細は、数量を負数で入力する必要があります。0 以上の数量で保存するとエラー(
Qty > 0)になります。
項目リファレンス
Section titled “項目リファレンス”| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| 品目 | 必須 | 検索 | BOM の親品目(完成品) |
| 検索キー | 必須 | 文字列 | BOM の一意コード |
| 名称 | 必須 | テキスト | BOM 名 |
| リビジョン | - | 文字列 | 設計版数 |
| 部品表タイプ | - | リスト | BOM のタイプ(デフォルト A) |
| 部品表使用用途 | - | リスト | BOM の用途(デフォルト A) |
| 属性セットインスタンス | - | 品目属性 | 親品目の属性(ロット等) |
| Copy BOM Lines From | - | ボタン | 既存 BOM から明細をコピー |
部品表の構成品目タブ
Section titled “部品表の構成品目タブ”| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| 明細番号 | 必須 | 整数 | 明細行番号(10 刻みで自動採番) |
| 品目 | 必須 | 検索 | 構成品目(部品・原材料) |
| 構成品目タイプ | - | リスト | 部品/連産品/副産物等(デフォルト CO) |
| Quantity | - | 数値 | 親品目 1 単位あたりの所要数量 |
| 属性セットインスタンス | - | 品目属性 | 構成品目の属性指定 |
| Feature | - | 文字列 | 品目コンフィグ用の特性 |
よくある質問(FAQ)
Section titled “よくある質問(FAQ)”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 です。
アーキテクチャ概要
Section titled “アーキテクチャ概要”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
パッケージ: org.eevolution.model
ソースファイル: org.adempiere.base/src/org/eevolution/model/MPPProductBOM.java / MPPProductBOMLine.java
関連DBテーブル
Section titled “関連DBテーブル”PP_Product_BOM(BOM ヘッダー)
Section titled “PP_Product_BOM(BOM ヘッダー)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| PP_Product_BOM_ID | ID | PK | BOM ID | 主キー |
| M_Product_ID | Search | Y | 親品目 | callout: CalloutBOM.getdefaults |
| Value | String(80) | Y | 検索キー | |
| Name | Text(60) | Y | 名称 | |
| Revision | String(10) | N | リビジョン | |
| BOMType | List | N | 部品表タイプ | デフォルト A |
| BOMUse | List | N | 部品表使用用途 | デフォルト A |
| ValidFrom / ValidTo | Date | N | 有効期間 | ValidFrom デフォルト = ログイン日付 |
| C_UOM_ID | TableDirect | N | 単位 | |
| M_AttributeSetInstance_ID | Product Attribute | N | 属性セットインスタンス | |
| M_ChangeNotice_ID | TableDirect | N | 設計変更通知 | |
| CopyFrom | Button | N | 明細コピー |
PP_Product_BOMLine(BOM 明細)
Section titled “PP_Product_BOMLine(BOM 明細)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| PP_Product_BOMLine_ID | ID | PK | BOM 明細 ID | 主キー |
| PP_Product_BOM_ID | Search | Y | BOM ヘッダー FK | 親リンク |
| Line | Integer | Y | 明細番号 | デフォルト = MAX(Line)+10 |
| M_Product_ID | Search | Y | 構成品目 | callout: CalloutBOM.parent |
| ComponentType | List | N | 構成品目タイプ | デフォルト CO |
| QtyBOM | Number | N | 所要数量 | |
| QtyBatch | Number | N | 数量(%) | IsQtyPercentage=Y 時に使用 |
| IsQtyPercentage | YesNo | N | %指定フラグ | |
| Scrap | Number | N | 仕損率(%) | |
| IsCritical | YesNo | N | 重要部品フラグ | デフォルト N |
| IssueMethod | List | N | 払出方法 | デフォルト 1 |
| CostAllocationPerc | Number | N | 原価配賦率 | 連産品用、0〜100 |
| ValidFrom / ValidTo | Date | N | 明細の有効期間 | |
| LeadTimeOffset | Integer | N | リードタイムオフセット |
ビジネスロジック
Section titled “ビジネスロジック”MPPProductBOMLine.beforeSave()
Section titled “MPPProductBOMLine.beforeSave()”- 連産品/副産物の数量チェック:
isCoProduct()が true で数量が 0 以上の場合、例外(@Qty@ > 0)をスローして保存を拒否 - 明細番号の自動採番:
Lineが未設定ならMAX(Line)+10を自動セット
MPPProductBOMLine.afterSave()
Section titled “MPPProductBOMLine.afterSave()”- 低レベルコードの更新: 構成品目の
LowLevel(BOM 展開の階層レベル)を再計算し、大きくなった場合は品目マスタを更新 - 親品目の検証済みフラグのリセット: 変更対象が既定 BOM(
MPPProductBOM.getDefault()= BOMTypeA・BOMUseA)の場合、明細の新規追加・品目変更・有効化で親品目のIsVerifiedを false に戻す。明細を無効化して有効明細が 0 件になった場合も同様
既定 BOM の解決
Section titled “既定 BOM の解決”MPPProductBOM.getDefault(MProduct, trxName) が既定 BOM を返します。製造指図伝票(M_Production)の PP_Product_BOM_ID 初期値 SQL も同じ条件(BOMUse='A' AND BOMType='A' AND IsActive='Y'、組織一致優先)です。
拡張ポイント(カスタマイズ箇所)
Section titled “拡張ポイント(カスタマイズ箇所)”Callout
Section titled “Callout”| カラム | Callout | 動作 |
|---|---|---|
| PP_Product_BOM.M_Product_ID | org.eevolution.model.CalloutBOM.getdefaults | 親品目選択時に検索キー等の初期値をセット |
| PP_Product_BOMLine.M_Product_ID | org.eevolution.model.CalloutBOM.parent | 構成品目選択時のチェック(親品目との循環参照防止等) |
OSGi Model Validator(推奨)
Section titled “OSGi Model Validator(推奨)”BOM 明細に独自制約(例: 特定カテゴリ品目の登録禁止、リビジョン命名規則)を追加する場合は、MPPProductBOMLine を対象に TYPE_BEFORE_NEW / TYPE_BEFORE_CHANGE でチェックを実装します。コア改変は不要です。
関連プロセス
Section titled “関連プロセス”| プロセス名 | 説明 |
|---|---|
| Copy BOM Lines From | 既存 BOM の明細を現在の BOM にコピー(親品目タブのボタン) |
関連ドキュメント
Section titled “関連ドキュメント”iDempiereカスタマイズのご相談
Section titled “iDempiereカスタマイズのご相談”iDempiereの部品表は Model Validator や Callout で安全に拡張できます。 BOM の承認ワークフロー化や設計変更管理の強化も、コア改変なしで実現可能です。
As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。