---
id: object/table/99000772
type: object
title: Table 99000772 "Production BOM Line"
summary: Table 99000772 "Production BOM Line" in Base Application (Microsoft.Manufacturing.ProductionBOM). 25 fields, 8 public procedures, 12 events. Present since at least BC23, still in BC30, changed in BC24, BC26-28.
tier: official
language: en
tags:
  - table
  - base application
versions:
  introduced: null
  last_changed: "28"
  deprecated: null
review:
  state: derived
  by: null
  at: null
  flags: []
generated:
  at: "2026-10-11T00:31:51.816Z"
  pipeline: 0.2.0
  prompts: {}
  input_hash: 6d498f0512aad4c8575d608f72229a53f0a64c29067b3e91c97d74ade1175f40
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Manufacturing/ProductionBOM/ProductionBOMLine.Table.al
    title: src/Layers/W1/BaseApp/Manufacturing/ProductionBOM/ProductionBOMLine.Table.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn:
    - https://learn.microsoft.com/dynamics365/business-central/production-how-to-create-production-boms
    - https://learn.microsoft.com/dynamics365/business-central/subcontract-components
    - https://learn.microsoft.com/dynamics365/business-central/subcontract-location-management
  objects: []
  features: []
  topics:
    - topic/business-central/business-functionality/manufacturing/subcontracting
    - topic/business-central/business-functionality/set-up-business-central/set-up-manufacturing
  localizations: []
  videos: []
  posts: []
  guidelines: []
  changes:
    - change/bcapps/9067
object_type: table
object_id: 99000772
name: Production BOM Line
namespace: Microsoft.Manufacturing.ProductionBOM
app: Base Application
extends: null
first_version: "23"
last_version: "30"
present_in:
  - "23"
  - "24"
  - "25"
  - "26"
  - "27"
  - "28"
  - "29"
  - "30"
changed_in:
  - "24"
  - "26"
  - "27"
  - "28"
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 25
  procedures: 20
  events: 12
  subscribers: 0
relations:
  out: 9
  referenced_by: 1
  pages: 2
  extended_by: 2
  event_subscribers: 2
  calls: 1
  called_by: 0
  implements: 0
---

# Table 99000772 "Production BOM Line"

> Table 99000772 "Production BOM Line" in Base Application (Microsoft.Manufacturing.ProductionBOM). 25 fields, 8 public procedures, 12 events. Present since at least BC23, still in BC30, changed in BC24, BC26-28.

Base Application · Microsoft.Manufacturing.ProductionBOM · BC23-30 · [source at ea08af5e](https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Manufacturing/ProductionBOM/ProductionBOMLine.Table.al) · facts from BC29

Learn documents this table through its pages: [Page 99000788 "Production BOM Lines"](../page/99000788.md) (3 Learn pages), [Page 99000789 "Production BOM Version Lines"](../page/99000789.md) (1).

## Properties

| Property | Value |
|---|---|
| Caption | Production BOM Line |
| DataClassification | CustomerContent |

## Fields

Explanation: the field's ToolTip in the code; without one, the ToolTip of a page control bound to the field (marked via the page); without that, its Caption (marked caption) when that differs from the name.

| No. | Name | Type | Explanation | Notes |
|---|---|---|---|---|
| 1 | Production BOM No. | Code[20] | — | TableRelation [Table 99000771 "Production BOM Header"](../table/99000771.md) (Production BOM Header); NotBlank |
| 2 | Line No. | Integer | — |  |
| 3 | Version Code | Code[20] | — | TableRelation [Table 99000779 "Production BOM Version"](../table/99000779.md) ("Production BOM Version"."Version Code" where("Production BOM No." = field("Production BOM No."))) |
| 10 | Type | Enum "Production BOM Line Type" | Specifies the type of production BOM line. | enum [Enum 99000772 "Production BOM Line Type"](../enum/99000772.md) |
| 11 | No. | Code[20] | Specifies the number of the involved entry or record, according to the specified number series. | TableRelation [Table 27 "Item"](../table/27.md), [Table 99000771 "Production BOM Header"](../table/99000771.md) (if (Type = const(Item)) Item where(Type = filter(Inventory \| "Non-Inventory")) else if (Type = const("Production BOM")) "Production BOM Header") |
| 12 | Description | Text[100] | Specifies a description of the production BOM line. |  |
| 13 | Unit of Measure Code | Code[10] | Specifies how each unit of the item is measured, such as in pieces or tons. By default, the value in the Base Unit of Measure field on the item card is inserted. | TableRelation [Table 204 "Unit of Measure"](../table/204.md), [Table 5404 "Item Unit of Measure"](../table/5404.md) (if (Type = const(Item)) "Item Unit of Measure".Code where("Item No." = field("No.")) else if (Type = const("Production BOM")) "Unit of Measure") |
| 14 | Quantity | Decimal | — | not editable |
| 15 | Position | Code[10] | Specifies the position of the component on the bill of material. |  |
| 16 | Position 2 | Code[10] | Specifies more exactly whether the component is to appear at a certain position in the BOM to represent a certain production process. |  |
| 17 | Position 3 | Code[10] | Specifies the third reference number for the component position on a bill of material, such as the alternate position number of a component on a print card. |  |
| 18 | Lead-Time Offset | DateFormula | Specifies the total number of days required to produce this item. |  |
| 19 | Routing Link Code | Code[10] | Specifies the routing link code. | TableRelation [Table 99000777 "Routing Link"](../table/99000777.md) (Routing Link) |
| 20 | Scrap % | Decimal | Specifies the percentage of the item that you expect to be scrapped in the production process. |  |
| 21 | Variant Code | Code[10] | Specifies the variant of the item on the line. | TableRelation [Table 5401 "Item Variant"](../table/5401.md) (if (Type = const(Item)) "Item Variant".Code where("Item No." = field("No."))) |
| 22 | Comment | Boolean | — | FlowField: exist("Production BOM Comment Line" where("Production BOM No." = field("Production BOM No."), "Version Code" = field("Version Code"), "BOM Line No." = field("Line No."))); not editable |
| 23 | Description 2 | Text[50] | Specifies additional description text. |  |
| 28 | Starting Date | Date | Specifies the date from which this production BOM is valid. |  |
| 29 | Ending Date | Date | Specifies the date from which this production BOM is no longer valid. |  |
| 40 | Length | Decimal | Specifies the length of one item unit when measured in the specified unit of measure. |  |
| 41 | Width | Decimal | Specifies the width of one item unit when measured in the specified unit of measure. |  |
| 42 | Weight | Decimal | Specifies the weight of one item unit when measured in the specified unit of measure. |  |
| 43 | Depth | Decimal | Specifies the depth of one item unit when measured in the specified unit of measure. |  |
| 44 | Calculation Formula | Enum "Quantity Calculation Formula" | Specifies how to calculate the Quantity field. | enum [Enum 5444 "Quantity Calculation Formula"](../enum/5444.md) |
| 45 | Quantity per | Decimal | Specifies how many units of the component are required to produce the parent item. |  |

## Keys

- Key1: Production BOM No., Version Code, Line No. (clustered)
- Key2: Type, No.

## Events published

- `OnAfterTestStatus(ProductionBOMLine: Record "Production BOM Line"; ProductionBOMHeader: Record "Production BOM Header"; ProductionBOMVersion: Record "Production BOM Version")` (integration)
- `OnAfterValidateNo(var ProductionBOMLine: Record "Production BOM Line")` (integration)
- `OnBeforeGetBOMHeaderQtyPerUOM(var ProductionBOMLine: Record "Production BOM Line"; Item: Record Item; var Result: Decimal; var IsHandled: Boolean)` (integration)
- `OnBeforeGetBOMLineQtyPerUOM(var ProductionBOMLine: Record "Production BOM Line"; Item: Record Item; var Result: Decimal; var IsHandled: Boolean)` (integration)
- `OnBeforeGetQtyPerUnitOfMeasure(var ProductionBOMLine: Record "Production BOM Line"; var Result: Decimal; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateRoutingLinkCode(var ProductionBOMLine: Record "Production BOM Line"; xProductionBOMLine: Record "Production BOM Line"; CallingFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeTestStatus(var ProductionBOMLine: Record "Production BOM Line"; var IsHandled: Boolean)` (integration)
- `OnDeleteOnCaseTypeElse(var ProductionBOMLine: Record "Production BOM Line")` (integration)
- `OnValidateCalculationFormulaEnumExtension(var ProductionBOMLine: Record "Production BOM Line")` (integration)
- `OnValidateNoOnAfterAssignItemFields(var ProductionBOMLine: Record "Production BOM Line"; Item: Record Item; var xProductionBOMLine: Record "Production BOM Line"; CallingFieldNo: Integer)` (integration)
  - subscribers: [Codeunit 6254 "Sust. Manufacturing Subscriber"](../codeunit/6254.md) OnValidateNoOnAfterAssignItemFields
- `OnBeforeValidateNo(var ProductionBOMLine: Record "Production BOM Line"; xProductionBOMLine: Record "Production BOM Line"; CallingFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnValidateNoOnAfterAssignProdBOMFields(var ProductionBOMLine: Record "Production BOM Line"; ProductionBOMHeader: Record "Production BOM Header"; var xProductionBOMLine: Record "Production BOM Line"; CallingFieldNo: Integer)` (integration)

## Trigger event subscribers

- OnBeforeInsertEvent: [Codeunit 99000788 "Mfg. Experience Tier"](../codeunit/99000788.md) BlockInsertProductionBOMLine

## Procedures

- `TestStatus()`
- `GetQtyPerUnitOfMeasure(): Decimal`
- `GetBOMHeaderQtyPerUOM(Item: Record Item): Decimal`
- `GetBOMLineQtyPerUOM(Item: Record Item): Decimal`
- `SelectMultipleItems()`: Opens a page for selecting multiple items to add to the document. Selected items are added to the document.
- `AddItems(SelectionFilter: Text)`: Adds items to the document based on the provided selection filter.
- `AddItem(var ProductionBOMLine: Record "Production BOM Line"; ItemNo: Code[20])`: Adds an item to the document.
- `InitNewLine(var NewProductionBOMLine: Record "Production BOM Line")`: Initializes a new Production BOM Line based on the current Production BOM Line.

## Triggers

OnDelete, OnInsert, OnModify

## Relations

- Unit of Measure Code: TableRelation [Table 204 "Unit of Measure"](../table/204.md) (conditional)
- No.: TableRelation [Table 27 "Item"](../table/27.md) (conditional)
- Variant Code: TableRelation [Table 5401 "Item Variant"](../table/5401.md)
- Unit of Measure Code: TableRelation [Table 5404 "Item Unit of Measure"](../table/5404.md) (conditional)
- No.: TableRelation [Table 99000771 "Production BOM Header"](../table/99000771.md) (conditional)
- Production BOM No.: TableRelation [Table 99000771 "Production BOM Header"](../table/99000771.md)
- Comment: CalcFormula [Table 99000776 "Production BOM Comment Line"](../table/99000776.md)
- Routing Link Code: TableRelation [Table 99000777 "Routing Link"](../table/99000777.md)
- Version Code: TableRelation [Table 99000779 "Production BOM Version"](../table/99000779.md)

## Referenced by

1 fields in 1 objects relate to this table (TableRelation or CalcFormula).

- [Table 99000776 "Production BOM Comment Line"](../table/99000776.md): BOM Line No.

## Pages and codeunits on this table

- [Page 99000788 "Production BOM Lines"](../page/99000788.md) (source table)
- [Page 99000789 "Production BOM Version Lines"](../page/99000789.md) (source table)

## Extended by

- [Table extension 20531 "Subc. Prod BOM Line Ext."](../tableextension/20531.md)
- [Table extension 6243 "Sust. Production BOM Line"](../tableextension/6243.md)

## Calls

From the extracted call graph of BC29 (graphify-al on the snapshot checkout): calls whose target is known from a declared type or an `Object::"Name"` argument. Interface dispatch and calls through events are not counted, so the list is not complete.

- [Codeunit 5402 "Unit of Measure Management"](../codeunit/5402.md) (3 calls: `GetBOMHeaderQtyPerUOM → GetQtyPerUnitOfMeasure`, `GetBOMLineQtyPerUOM → GetQtyPerUnitOfMeasure`, `GetQtyPerUnitOfMeasure → GetQtyPerUnitOfMeasure`)

## Recent changes

- 2026-08-16 [#9067 Production Definition Wizard - Implementation](../../changes/bcapps/9067.md) (main, BC30, feature)

## Across versions

- Present in: BC23-30
- Changed (declaration) in: BC24, BC26-28

Source: AL metadata extracted from the code (names, ids, signatures, properties); no code bodies (D10).

## Ask your agent

Procedure bodies are not stored here (D10). The call sections above are our own, per object, from the BC29 call graph. For a procedure body or the calls of one procedure, ask bc-code-atlas (external, by Stefan Maron, MIT; default corpus w1-28), which the bc-observatory plugin connects: `bcatlas_resolve_node(object_type: "table", object_name: "Production BOM Line")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
