---
id: object/table/5407
type: object
title: Table 5407 "Prod. Order Component"
summary: Table 5407 "Prod. Order Component" in Base Application (Microsoft.Manufacturing.Document). 60 fields, 49 public procedures, 60 events. Present since at least BC23, still in BC30, changed in BC24-26, BC28-30.
tier: official
language: en
tags:
  - table
  - base application
versions:
  introduced: null
  last_changed: "30"
  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: cde83690a92aed9a982599f49e05134dffbe0007818ab0f1cb1762d619e2fc36
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Manufacturing/Document/ProdOrderComponent.Table.al
    title: src/Layers/W1/BaseApp/Manufacturing/Document/ProdOrderComponent.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
    - https://learn.microsoft.com/dynamics365/business-central/value-chain-howto-mfg
    - https://learn.microsoft.com/dynamics365/business-central/production-manage-manufacturing
    - https://learn.microsoft.com/dynamics365/business-central/production-about-production-orders
  objects: []
  features: []
  topics:
    - topic/business-central/business-functionality/manufacturing
    - topic/business-central/business-functionality/manufacturing/subcontracting
    - topic/business-central/business-functionality/set-up-business-central/set-up-manufacturing
    - topic/business-central/business-functionality/sustainability-management/sustainability-value-chain
  localizations: []
  videos: []
  posts: []
  guidelines: []
  changes:
    - change/bcapps/9067
    - change/bcapps/9118
object_type: table
object_id: 5407
name: Prod. Order Component
namespace: Microsoft.Manufacturing.Document
app: Base Application
extends: null
first_version: "23"
last_version: "30"
present_in:
  - "23"
  - "24"
  - "25"
  - "26"
  - "27"
  - "28"
  - "29"
  - "30"
changed_in:
  - "24"
  - "25"
  - "26"
  - "28"
  - "29"
  - "30"
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 60
  procedures: 128
  events: 60
  subscribers: 0
relations:
  out: 22
  referenced_by: 15
  pages: 5
  extended_by: 2
  event_subscribers: 16
  calls: 12
  called_by: 0
  implements: 0
---

# Table 5407 "Prod. Order Component"

> Table 5407 "Prod. Order Component" in Base Application (Microsoft.Manufacturing.Document). 60 fields, 49 public procedures, 60 events. Present since at least BC23, still in BC30, changed in BC24-26, BC28-30.

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

Learn documents this table through its pages: [Page 99000818 "Prod. Order Components"](../page/99000818.md) (4 Learn pages), [Page 5407 "Prod. Order Comp. Line List"](../page/5407.md) (1), [Page 99000898 "Available - Prod. Order Comp."](../page/99000898.md) (1).

## Properties

| Property | Value |
|---|---|
| Caption | Prod. Order Component |
| DataClassification | CustomerContent |
| Permissions | TableData "Prod. Order Component" = rimd |

## 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 | Status | Enum "Production Order Status" | Specifies the status of the production order to which the component list belongs. | enum [Enum 5405 "Production Order Status"](../enum/5405.md) |
| 2 | Prod. Order No. | Code[20] | Specifies the number of the related production order. | TableRelation [Table 5405 "Production Order"](../table/5405.md) ("Production Order"."No." where(Status = field(Status))) |
| 3 | Prod. Order Line No. | Integer | Specifies the number of the production order line to which the component list belongs. | TableRelation [Table 5406 "Prod. Order Line"](../table/5406.md) ("Prod. Order Line"."Line No." where(Status = field(Status), "Prod. Order No." = field("Prod. Order No."))) |
| 4 | Line No. | Integer | — |  |
| 11 | Item No. | Code[20] | Specifies the number of the item that is a component in the production order component list. | TableRelation [Table 27 "Item"](../table/27.md) (Item where(Type = filter(Inventory \| "Non-Inventory"))) |
| 12 | Description | Text[100] | Specifies a description of the item on the line. |  |
| 13 | Unit of Measure Code | Code[10] | Specifies how each unit of the item or resource is measured, such as in pieces or hours. By default, the value in the Base Unit of Measure field on the item or resource card is inserted. | TableRelation [Table 5404 "Item Unit of Measure"](../table/5404.md) ("Item Unit of Measure".Code where("Item No." = field("Item No."))) |
| 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 the components position in the BOM. It is copied from the production BOM when you calculate the production order. |  |
| 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 lead-time offset for the component line. It is copied from the corresponding field in the production BOM when you calculate the production order. |  |
| 19 | Routing Link Code | Code[10] | Specifies the routing link code when you calculate the production order. | 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) ("Item Variant".Code where("Item No." = field("Item No."))) |
| 22 | Qty. Rounding Precision | Decimal | — | not editable |
| 23 | Qty. Rounding Precision (Base) | Decimal | — | not editable |
| 25 | Expected Quantity | Decimal | Specifies the quantity of the component expected to be consumed during the production of the quantity on this line. | not editable |
| 26 | Remaining Quantity | Decimal | Specifies the difference between the finished and planned quantities, or zero if the finished quantity is greater than the remaining quantity. | not editable |
| 27 | Act. Consumption (Qty) | Decimal | Specifies the quantity of the component that has been posted as consumed by the production order. | FlowField: - sum("Item Ledger Entry".Quantity where("Entry Type" = const(Consumption), "Order Type" = const(Production), "Order No." = field("Prod. Order No."), "Order Line No." = field("Prod. Order Line No."), "Prod. Order Comp. Line No." = field("Line No."))); not editable |
| 28 | Flushing Method | Enum "Flushing Method" | Specifies how consumption of the item (component) is calculated and handled in production processes. Manual: Enter and post consumption in the consumption journal manually. Forward: Automatically posts consumption according to the production order component lines when the first operation starts. Bac... | enum [Enum 5417 "Flushing Method"](../enum/5417.md) |
| 29 | Description 2 | Text[50] | Specifies additional description text. |  |
| 30 | Location Code | Code[10] | Specifies the location where the component is stored. Copies the location code from the corresponding field on the production order line. | TableRelation [Table 14 "Location"](../table/14.md) (Location where("Use As In-Transit" = const(false))) |
| 31 | Shortcut Dimension 1 Code | Code[20] | Specifies the code for Shortcut Dimension 1, which is one of two global dimension codes that you set up in the General Ledger Setup window. | TableRelation [Table 349 "Dimension Value"](../table/349.md) ("Dimension Value".Code where("Global Dimension No." = const(1), Blocked = const(false))) |
| 32 | Shortcut Dimension 2 Code | Code[20] | Specifies the code for Shortcut Dimension 2, which is one of two global dimension codes that you set up in the General Ledger Setup window. | TableRelation [Table 349 "Dimension Value"](../table/349.md) ("Dimension Value".Code where("Global Dimension No." = const(2), Blocked = const(false))) |
| 33 | Bin Code | Code[20] | Specifies the bin in which the component is to be placed before it is consumed. | TableRelation [Table 7354 "Bin"](../table/7354.md) (Bin.Code where("Location Code" = field("Location Code"))) |
| 35 | Supplied-by Line No. | Integer | — | TableRelation [Table 5406 "Prod. Order Line"](../table/5406.md) ("Prod. Order Line"."Line No." where(Status = field(Status), "Prod. Order No." = field("Prod. Order No."), "Line No." = field("Supplied-by Line No."))) |
| 36 | Planning Level Code | Integer | — | not editable |
| 37 | Item Low-Level Code | Integer | — |  |
| 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. |  |
| 50 | Unit Cost | Decimal | Specifies the cost of one unit of the item or resource on the line. |  |
| 51 | Cost Amount | Decimal | Specifies the total cost on the line by multiplying the unit cost by the quantity. | not editable |
| 52 | Due Date | Date | Specifies the date when the produced item must be available. The date is copied from the header of the production order. |  |
| 53 | Due Time | Time | — |  |
| 60 | Qty. per Unit of Measure | Decimal | — | not editable |
| 61 | Remaining Qty. (Base) | Decimal | — | not editable |
| 62 | Quantity (Base) | Decimal | — |  |
| 63 | Reserved Qty. (Base) | Decimal | Specifies the reserved quantity of the item in base units of measure. <small>via [Page 99000898 "Available - Prod. Order Comp."](../page/99000898.md)</small> | FlowField: - sum("Reservation Entry"."Quantity (Base)" where("Source ID" = field("Prod. Order No."), "Source Ref. No." = field("Line No."), "Source Type" = const(5407), #pragma warning disable AL0603 "Source Subtype" = field(Status), #pragma warning restore "Source Batch Name" = const(''), "Source Prod. Order ... |
| 71 | Reserved Quantity | Decimal | Specifies how many units of this item have been reserved. | FlowField: - sum("Reservation Entry".Quantity where("Source ID" = field("Prod. Order No."), "Source Ref. No." = field("Line No."), "Source Type" = const(5407), #pragma warning disable AL0603 "Source Subtype" = field(Status), #pragma warning restore "Source Batch Name" = const(''), "Source Prod. Order Line" = f...; not editable |
| 73 | Expected Qty. (Base) | Decimal | — | not editable |
| 76 | Due Date-Time | DateTime | Specifies the due date and the due time, which are combined in a format called "due date-time". |  |
| 480 | Dimension Set ID | Integer | — | TableRelation [Table 480 "Dimension Set Entry"](../table/480.md) (Dimension Set Entry); not editable |
| 5702 | Substitution Available | Boolean | Specifies if an item substitute is available for the production order component. | FlowField: exist("Item Substitution" where(Type = const(Item), "Substitute Type" = const(Item), "No." = field("Item No."), "Variant Code" = field("Variant Code"))); not editable |
| 5703 | Original Item No. | Code[20] | — | TableRelation [Table 27 "Item"](../table/27.md); not editable |
| 5704 | Original Variant Code | Code[10] | — | TableRelation [Table 5401 "Item Variant"](../table/5401.md) ("Item Variant".Code where("Item No." = field("Original Item No."))); not editable |
| 5750 | Pick Qty. | Decimal | — | FlowField: sum("Warehouse Activity Line"."Qty. Outstanding" where("Activity Type" = filter(<> "Put-away"), "Source Type" = const(5407), #pragma warning disable AL0603 "Source Subtype" = field(Status), #pragma warning restore "Source No." = field("Prod. Order No."), "Source Line No." = field("Prod. Order Line N...; not editable |
| 7300 | Qty. Picked | Decimal | Specifies the quantity of the item you have picked for the component line. | not editable |
| 7301 | Qty. Picked (Base) | Decimal | Specifies the quantity of the item you have picked for the component line. <small>via [Page 99000818 "Prod. Order Components"](../page/99000818.md)</small> | not editable |
| 7302 | Completely Picked | Boolean | — | not editable |
| 7303 | Pick Qty. (Base) | Decimal | — | FlowField: sum("Warehouse Activity Line"."Qty. Outstanding (Base)" where("Activity Type" = filter(<> "Put-away"), "Source Type" = const(5407), #pragma warning disable AL0603 "Source Subtype" = field(Status), #pragma warning restore "Source No." = field("Prod. Order No."), "Source Line No." = field("Prod. Order...; not editable |
| 99000754 | Direct Unit Cost | Decimal | — |  |
| 99000755 | Indirect Cost % | Decimal | — |  |
| 99000756 | Overhead Rate | Decimal | — |  |
| 99000757 | Direct Cost Amount | Decimal | — |  |
| 99000758 | Overhead Amount | Decimal | — |  |

## Keys

- Key1: Status, Prod. Order No., Prod. Order Line No., Line No. (clustered)
- Key2: Prod. Order No., Prod. Order Line No., Line No., Status
- Key3: Status, Prod. Order No., Prod. Order Line No., Due Date
- Key4: Status, Prod. Order No., Prod. Order Line No., Item No., Line No.
- Key5: Status, Item No., Variant Code, Location Code, Due Date
- Key6: Item No., Variant Code, Location Code, Shortcut Dimension 1 Code, Shortcut Dimension 2 Code, Due Date
- Key7: Status, Prod. Order No., Routing Link Code, Flushing Method
- Key8: Status, Prod. Order No., Location Code
- Key9: Item No., Variant Code, Location Code, Status, Due Date
- Key10: Status, Prod. Order No., Prod. Order Line No., Item Low-Level Code
- Key11: Supplied-by Line No.

## Events published

- `OnAfterInitDefaultDimensionSources(var ProdOrderComponent: Record "Prod. Order Component"; var DefaultDimSource: List of [Dictionary of [Integer, Code[20]]])` (integration)
- `OnAfterAutoReserve(var Item: Record Item; var ProdOrderComp: Record "Prod. Order Component")` (integration)
- `OnAfterAssignDecsriptionFromItemOrVariant(var ProdOrderComponent: Record "Prod. Order Component"; xProdOrderComponent: Record "Prod. Order Component"; Item: Record Item; ItemVariant: Record "Item Variant")` (integration)
- `OnAfterCreateDim(var ProdOrderComponent: Record "Prod. Order Component"; DefaultDimSource: List of [Dictionary of [Integer, Code[20]]]; xProdOrderComponent: Record "Prod. Order Component")` (integration)
- `OnAfterCopyFromPlanningComp(var ProdOrderComponent: Record "Prod. Order Component"; PlanningComponent: Record "Planning Component")` (integration)
- `OnAfterFilterLinesWithItemToPlan(var ProdOrderComponent: Record "Prod. Order Component"; var Item: Record Item; IncludeFirmPlanned: Boolean)` (integration)
  - subscribers: [Codeunit 20518 "Subc. Planning Line Mgmt Ext."](../codeunit/20518.md) ProdOrderComponent_OnAfterFilterLinesWithItemToPlan
- `OnAfterFilterLinesForReservation(var ProdOrderComponent: Record "Prod. Order Component"; ReservationEntry: Record "Reservation Entry"; NewStatus: Option; AvailabilityFilter: Text; Positive: Boolean)` (integration)
- `OnAfterGetBinCodeFromLocation(var ProdOrderComponent: Record "Prod. Order Component"; Location: Record Location; var BinCode: Code[20])` (integration)
- `OnAfterGetSKU(ProdOrderComponent: Record "Prod. Order Component"; var Result: Boolean)` (integration)
- `OnAfterSetFilterFromProdBOMLine(var ProdOrderComponent: Record "Prod. Order Component"; ProdBOMLine: Record "Production BOM Line")` (integration)
- `OnAfterUpdateUnitCost(var ProdOrderComp: Record "Prod. Order Component"; GeneralLedgerSetup: Record "General Ledger Setup")` (integration)
- `OnAfterProdOrderNeeds(ProdOrderComponent: Record "Prod. Order Component"; ProdOrderLine: Record "Prod. Order Line"; ProdOrderRoutingLine: Record "Prod. Order Routing Line"; var NeededQty: Decimal)` (integration)
- `OnAfterRoundExpectedQuantity(var ProdOrderComponent: Record "Prod. Order Component")` (integration)
- `OnAfterSetReservationFilters(var ReservEntry: Record "Reservation Entry"; ProdOrderComponent: Record "Prod. Order Component")` (integration)
- `OnAfterUpdateDateTime(var ProdOrderComponent: Record "Prod. Order Component")` (integration)
- `OnAfterValidateShortcutDimCode(var ProdOrderComponent: Record "Prod. Order Component"; var xProdOrderComponent: Record "Prod. Order Component"; FieldNumber: Integer; var ShortcutDimCode: Code[20])` (integration)
- `OnBeforeAdjustQtyToQtyPicked(var ProdOrderComponent: Record "Prod. Order Component"; var QtyToPost: Decimal; var IsHandled: Boolean)` (integration)
- `OnBeforeAutoReserve(var Item: Record Item; var ProdOrderComp: Record "Prod. Order Component"; var IsHandled: Boolean)` (integration)
- `OnBeforeBinCodeOnLookup(var ProdOrderComponent: Record "Prod. Order Component"; var IsHandled: Boolean)` (integration)
- `OnBeforeCalcBaseQty(var ProdOrderComponent: Record "Prod. Order Component"; CurrentFieldNo: integer; Qty: Decimal; FromFieldName: Text; ToFieldName: Text; var Result: Decimal; var IsHandled: Boolean)` (integration)
- `OnBeforeUpdateExpectedQuantity(var ProdOrderComponent: Record "Prod. Order Component"; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateCalculationFormula(var ProdOrderComponent: Record "Prod. Order Component"; xProdOrderComponent: Record "Prod. Order Component"; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateShortcutDimCode(var ProdOrderComponent: Record "Prod. Order Component"; var xProdOrderComponent: Record "Prod. Order Component"; FieldNumber: Integer; var ShortcutDimCode: Code[20])` (integration)
- `OnBeforeValidateQuantityper(var ProdOrderComponent: Record "Prod. Order Component"; xProdOrderComponent: Record "Prod. Order Component"; var IsHandled: Boolean)` (integration)
- `OnBeforeGetDefaultConsumptionBin(var ProdOrderComponent: Record "Prod. Order Component"; var ProdOrderRoutingLine: Record "Prod. Order Routing Line"; var BinCode: Code[20])` (integration)
- `OnBeforeGetUpdateFromSKU(var ProdOrderComponent: Record "Prod. Order Component"; var IsHandled: Boolean)` (integration)
- `OnBeforeUpdateUnitCost(var ProdOrderComponent: Record "Prod. Order Component"; GLSetup: Record "General Ledger Setup"; var IsHandled: Boolean)` (integration)
- `OnBeforeUpdateUOMFromItem(var ProdOrderComponent: Record "Prod. Order Component"; Item: Record Item; var IsHandled: Boolean)` (integration)
- `OnDeleteOnBeforeGetProdOrderLine(var ProdOrderComponent: Record "Prod. Order Component"; var IsHandled: Boolean)` (integration)
- `OnGetDefaultConsumptionBinOnAfterGetBinCodeFromRtngLine(var ProdOrderComponent: Record "Prod. Order Component"; var ProdOrderRoutingLine: Record "Prod. Order Routing Line"; var BinCode: Code[20])` (integration)
- `OnGetNeededQtyAfterCalcCompQtyBase(var ProdOrderComp: Record "Prod. Order Component"; var CompQtyBase: Decimal; OutputQtyBase: Decimal)` (integration)
- `OnGetNeededQtyAfterCalcActConsumptionQty(var ProdOrderComp: Record "Prod. Order Component")` (integration)
- `OnGetNeededQtyOnBeforeCalcActNeededQtyBase(var ProdOrderComponent: Record "Prod. Order Component"; var OutputQtyBase: Decimal; var Result: Decimal; var IsHandled: Boolean)` (integration)
- `OnGetNeededQtyOnBeforeExitWithPreviousPosting(var ProdOrderComponent: Record "Prod. Order Component"; var CompQtyBase: Decimal; var Result: Decimal; var IsHandled: Boolean)` (integration)
- `OnGetNeededQtyOnAfterCalcBasedOn(var ProdOrderComponent: Record "Prod. Order Component")` (integration)
- `OnGetNeededQtyOnAfterLastOperationFound(var ProdOrderComponent: Record "Prod. Order Component"; var ProdOrderRoutingLine: Record "Prod. Order Routing Line")` (integration)
- `OnGetNeededQtyOnBeforeAddOutputQtyBase(var CapacityLedgerEntry: Record "Capacity Ledger Entry"; var OutputQtyBase: Decimal; var IsHandled: Boolean; var ProdOrderComponent: Record "Prod. Order Component")` (integration)
- `OnGetNeededQtyOnBeforeCalcBasedOn(var ProdOrderComponent: Record "Prod. Order Component"; var RoundingPrecision: Decimal)` (integration)
- `OnValidateCalculationFormulaEnumExtension(var ProdOrderComponent: Record "Prod. Order Component")` (integration)
- `OnValidateCalculationFormulaOnAfterSetQuantity(var ProdOrderComponent: Record "Prod. Order Component")` (integration)
- `OnValidateExpectedQuantityOnAfterCalcActConsumptionQty(var ProdOrderComp: Record "Prod. Order Component"; xProdOrderComp: Record "Prod. Order Component")` (integration)
  - subscribers: [Codeunit 6254 "Sust. Manufacturing Subscriber"](../codeunit/6254.md) OnValidateExpectedQuantityOnAfterCalcActConsumptionQty
- `OnValidateExpectedQtyBaseOnAfterCalcActConsumptionQty(var ProdOrderComp: Record "Prod. Order Component"; xProdOrderComp: Record "Prod. Order Component")` (integration)
- `OnValidateItemNoOnBeforeGetDefaultBin(var ProdOrderComponent: Record "Prod. Order Component"; var Item: Record Item)` (integration)
- `OnValidateRoutingLinkCodeBeforeValidateDueDate(var ProdOrderComponent: Record "Prod. Order Component"; var ProdOrderLine: Record "Prod. Order Line"; var ProdOrderRoutingLine: Record "Prod. Order Routing Line")` (integration)
- `OnBeforeShowItemSub(var ProdOrderComponent: Record "Prod. Order Component"; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateBinCode(var Rec: Record "Prod. Order Component"; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateExpectedQuantity(var ProdOrderComponent: Record "Prod. Order Component"; xProdOrderComponent: Record "Prod. Order Component"; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateExpectedQtyBase(var ProdOrderComponent: Record "Prod. Order Component"; xProdOrderComponent: Record "Prod. Order Component"; FieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeGetDefaultBin(var ProdOrderComponent: Record "Prod. Order Component"; var xProdOrderComponent: Record "Prod. Order Component"; var IsHandled: Boolean)` (integration)
- `OnBeforeRoundExpectedQuantity(var ProdOrderComponent: Record "Prod. Order Component"; var IsHandled: Boolean)` (integration)
- `OnBeforeShowReservation(var ProdOrderComponent: Record "Prod. Order Component"; var IsHandled: Boolean)` (integration)
- `OnValidateExpectedQtyBaseOnAfterCalcRemainingQuantity(var ProdOrderComponent: Record "Prod. Order Component"; xProdOrderComponent: Record "Prod. Order Component")` (integration)
- `OnValidateItemNoOnAfterUpdateUOMFromItem(var ProdOrderComponent: Record "Prod. Order Component"; xProdOrderComponent: Record "Prod. Order Component"; Item: Record Item)` (integration)
  - subscribers: [Codeunit 6254 "Sust. Manufacturing Subscriber"](../codeunit/6254.md) OnValidateItemNoOnAfterUpdateUOMFromItem
- `OnBeforeUpdateBin(var ProdOrderComponent: Record "Prod. Order Component"; FieldNo: Integer; FieldCaption: Text[30]; var IsHandled: Boolean)` (integration)
- `OnAdjustQtyToReservedFromInventory(var QtyToPost: Decimal; ReservedFromStock: Enum "Reservation From Stock")` (integration)
- `OnCheckIfProdOrderCompMeetsReservedFromStockSetting(QtyToPost: Decimal; ReservedFromStock: Enum "Reservation From Stock"; var Result: Boolean)` (integration)
- `OnAfterShowDimensions(var ProdOrderComponent: Record "Prod. Order Component"; xProdOrderComponent: Record "Prod. Order Component")` (integration)
- `OnValidateRoutingLinkCodeOnBeforeUpdateDueDateAndTime(var ProdOrderComponent: Record "Prod. Order Component"; var ProdOrderLine: Record "Prod. Order Line"; var ProdOrderRoutingLine: Record "Prod. Order Routing Line"; var IsHandled: Boolean)` (integration)
- `OnValidateUnitCostOnBeforeCheckCostingMethod(var ProdOrderComponent: Record "Prod. Order Component"; var IsHandled: Boolean)` (integration)
- `OnBeforeCreateDim(var ProdOrderComponent: Record "Prod. Order Component"; var DefaultDimSource: List of [Dictionary of [Integer, Code[20]]]; CurrentFieldNo: Integer; var IsHandled: Boolean)` (integration)

## Trigger event subscribers

- OnAfterValidateEvent(Bin Code): [Codeunit 20524 "Subc. Prod. Order Comp. Ext."](../codeunit/20524.md) OnAfterValidateBinCode
- OnAfterValidateEvent(Item No.): [Codeunit 6254 "Sust. Manufacturing Subscriber"](../codeunit/6254.md) OnAfterValidateNoEventOnProdOrderComponent
- OnAfterValidateEvent(Location Code): [Codeunit 20524 "Subc. Prod. Order Comp. Ext."](../codeunit/20524.md) OnAfterValidateLocationCode
- OnAfterValidateEvent(Routing Link Code): [Codeunit 20524 "Subc. Prod. Order Comp. Ext."](../codeunit/20524.md) OnAfterValidateRoutingLinkCode
- OnBeforeDeleteEvent: [Codeunit 20524 "Subc. Prod. Order Comp. Ext."](../codeunit/20524.md) OnBeforeDeleteProdOrderComponent
- OnBeforeInsertEvent: [Codeunit 99000788 "Mfg. Experience Tier"](../codeunit/99000788.md) BlockInsertProdOrderComponent
- OnBeforeValidateEvent(Bin Code): [Codeunit 20524 "Subc. Prod. Order Comp. Ext."](../codeunit/20524.md) OnBeforeValidateBinCode
- OnBeforeValidateEvent(Component Supply Method): [Codeunit 20524 "Subc. Prod. Order Comp. Ext."](../codeunit/20524.md) OnBeforeValidateComponentSupplyMethod
- OnBeforeValidateEvent(Expected Quantity): [Codeunit 20524 "Subc. Prod. Order Comp. Ext."](../codeunit/20524.md) OnBeforeValidateExpectedQuantity
- OnBeforeValidateEvent(Item No.): [Codeunit 20524 "Subc. Prod. Order Comp. Ext."](../codeunit/20524.md) OnBeforeValidateItemNo
- OnBeforeValidateEvent(Location Code): [Codeunit 20524 "Subc. Prod. Order Comp. Ext."](../codeunit/20524.md) OnBeforeValidateLocationCode
- OnBeforeValidateEvent(Quantity per): [Codeunit 20524 "Subc. Prod. Order Comp. Ext."](../codeunit/20524.md) OnBeforeValidateQuantityPer
- OnBeforeValidateEvent(Variant Code): [Codeunit 20524 "Subc. Prod. Order Comp. Ext."](../codeunit/20524.md) OnBeforeValidateVariantCode

## Procedures

- `Caption(): Text`
- `ProdOrderNeeds(): Decimal`
- `GetNeededQty(CalcBasedOn: Option "Actual Output","Expected Output"; IncludePreviousPosting: Boolean): Decimal`
- `ShowOrderTracking()`
- `ShowReservation()`
- `ShowReservationEntries(Modal: Boolean)`
- `CopyFromPlanningComp(PlanningComponent: Record "Planning Component")`
- `AdjustQtyToQtyPicked(var QtyToPost: Decimal)`
- `AdjustQtyToReservedFromInventory(var QtyToPost: Decimal; ReservedFromStock: Enum "Reservation From Stock")`
- `BlockDynamicTracking(SetBlock: Boolean)`
- `CreateDim(DefaultDimSource: List of [Dictionary of [Integer, Code[20]]])`
- `IsInbound(): Boolean`
- `OpenItemTrackingLines()`
- `ValidateShortcutDimCode(FieldNumber: Integer; var ShortcutDimCode: Code[20])`
- `LookupShortcutDimCode(FieldNumber: Integer; var ShortcutDimCode: Code[20])`
- `ShowShortcutDimCode(var ShortcutDimCode: array[8] of Code[20])`
- `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 ProdOrderComponent: Record "Prod. Order Component"; ItemNo: Code[20])`: Adds an item to the document.
- `InitNewLine(var NewProdOrderComponent: Record "Prod. Order Component")`: Initializes a new Prod. Order Component based on the current Prod. Order Component.
- `UpdateDatetime()`
- `RowID1(): Text[250]`
- `GetDefaultBin()`
- `GetDefaultConsumptionBin(var ProdOrderRtngLine: Record "Prod. Order Routing Line"): Code[20]`
- `GetRemainingQty(var RemainingQty: Decimal; var RemainingQtyBase: Decimal)`
- `GetReservationQty(var QtyReserved: Decimal; var QtyReservedBase: Decimal; var QtyToReserve: Decimal; var QtyToReserveBase: Decimal): Decimal`
- `GetSourceCaption(): Text`
- `SetReservationEntry(var ReservEntry: Record "Reservation Entry")`
- `SetReservationFilters(var ReservEntry: Record "Reservation Entry")`
- `ReservEntryExist(): Boolean`
- `CheckBin()`
- `AutoReserve()`
- `ShowItemSub()`
- `FilterLinesWithItemToPlan(var Item: Record Item; IncludeFirmPlanned: Boolean)`
- `FindLinesWithItemToPlan(var Item: Record Item; IncludeFirmPlanned: Boolean): Boolean`
- `LinesWithItemToPlanExist(var Item: Record Item; IncludeFirmPlanned: Boolean): Boolean`
- `FilterLinesForReservation(ReservationEntry: Record "Reservation Entry"; NewStatus: Option; AvailabilityFilter: Text; Positive: Boolean)`
- `ShowDimensions()`
- `SetIgnoreErrors()`
- `HasErrorOccured(): Boolean`
- `SetFilterByReleasedOrderNo(OrderNo: Code[20])`
- `SetFilterFromProdBOMLine(ProdBOMLine: Record "Production BOM Line")`
- `TestItemFields(ItemNo: Code[20]; VariantCode: Code[10]; LocationCode: Code[10])`
- `CalcBaseQty(Qty: Decimal; FromFieldName: Text; ToFieldName: Text): Decimal`
- `CreateDimFromDefaultDim()`
- `CheckIfProdOrderCompMeetsReservedFromStockSetting(QtyToPost: Decimal; ReservedFromStock: Enum "Reservation From Stock"): Boolean`
- `IsInventoriableItem(): Boolean`
- `ReserveFromInventory(var ProdOrderComponent: Record "Prod. Order Component")`
- `SuspendDeletionCheck(Suspend: Boolean)`

Plus 19 local procedures.

## Triggers

OnDelete, OnInsert, OnModify, OnRename

## Relations

- drill-down page [Page 5407 "Prod. Order Comp. Line List"](../page/5407.md)
- lookup page [Page 5407 "Prod. Order Comp. Line List"](../page/5407.md)
- Location Code: TableRelation [Table 14 "Location"](../table/14.md)
- Item No.: TableRelation [Table 27 "Item"](../table/27.md)
- Original Item No.: TableRelation [Table 27 "Item"](../table/27.md)
- Act. Consumption (Qty): CalcFormula [Table 32 "Item Ledger Entry"](../table/32.md)
- Reserved Qty. (Base): CalcFormula [Table 337 "Reservation Entry"](../table/337.md)
- Reserved Quantity: CalcFormula [Table 337 "Reservation Entry"](../table/337.md)
- Shortcut Dimension 1 Code: TableRelation [Table 349 "Dimension Value"](../table/349.md)
- Shortcut Dimension 2 Code: TableRelation [Table 349 "Dimension Value"](../table/349.md)
- Dimension Set ID: TableRelation [Table 480 "Dimension Set Entry"](../table/480.md)
- Original Variant Code: TableRelation [Table 5401 "Item Variant"](../table/5401.md)
- Variant Code: TableRelation [Table 5401 "Item Variant"](../table/5401.md)
- Unit of Measure Code: TableRelation [Table 5404 "Item Unit of Measure"](../table/5404.md)
- Prod. Order No.: TableRelation [Table 5405 "Production Order"](../table/5405.md)
- Prod. Order Line No.: TableRelation [Table 5406 "Prod. Order Line"](../table/5406.md)
- Supplied-by Line No.: TableRelation [Table 5406 "Prod. Order Line"](../table/5406.md)
- Substitution Available: CalcFormula [Table 5715 "Item Substitution"](../table/5715.md)
- Pick Qty.: CalcFormula [Table 5767 "Warehouse Activity Line"](../table/5767.md)
- Pick Qty. (Base): CalcFormula [Table 5767 "Warehouse Activity Line"](../table/5767.md)
- Bin Code: TableRelation [Table 7354 "Bin"](../table/7354.md)
- Routing Link Code: TableRelation [Table 99000777 "Routing Link"](../table/99000777.md)

## Referenced by

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

- [Table 5405 "Production Order"](../table/5405.md): Completely Picked, Expected Component Cost Amt., Expected Material Ovhd. Cost
- [Table extension 99000750 "Mfg. Item"](../tableextension/99000750.md): Qty. on Component Lines, Scheduled Need (Qty.)
- [Table extension 99000759 "Mfg. Stockkeeping Unit"](../tableextension/99000759.md): Qty. on Component Lines, Scheduled Need (Qty.)
- [Table 5406 "Prod. Order Line"](../table/5406.md): Expected Component Cost Amt.
- [Table 5416 "Prod. Order Comp. Cmt Line"](../table/5416.md): Prod. Order BOM Line No.
- [Table extension 20517 "Subc. Transfer Line"](../tableextension/20517.md): Subc. Prod. Ord. Comp Line No.
- [Table extension 20518 "Subc. Transfer Rcpt. Line Ext"](../tableextension/20518.md): Subc. Prod. Ord. Comp Line No.
- [Table extension 20519 "Subc. Transfer Shpt. Line Ext"](../tableextension/20519.md): Subc. Prod. Ord. Comp Line No.
- [Table extension 20523 "Subc. DirectTrans. Line Ext"](../tableextension/20523.md): Prod. Order Comp. Line No.
- [Table extension 6248 "Sust. Prod. Order Line"](../tableextension/6248.md): Expected Component Total CO2e
- [Table extension 99000758 "Mfg. Item Journal Line"](../tableextension/99000758.md): Prod. Order Comp. Line No.

## Pages and codeunits on this table

- [Page 20503 "Subc. Prod. Order Components"](../page/20503.md) (source table)
- [Page 5407 "Prod. Order Comp. Line List"](../page/5407.md) (source table)
- [Page 874 "Prod. Order Comp. Item FactBox"](../page/874.md) (source table)
- [Page 99000818 "Prod. Order Components"](../page/99000818.md) (source table)
- [Page 99000898 "Available - Prod. Order Comp."](../page/99000898.md) (source table)

## Extended by

- [Table extension 20502 "Subc. Prod Order Comp Ext."](../tableextension/20502.md)
- [Table extension 6246 "Sust. Prod. Order Component"](../tableextension/6246.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 408 "DimensionManagement"](../codeunit/408.md) (7 calls: `CreateDim → GetRecDefaultDimID`, `InitDefaultDimensionSources → AddDimSource`, `LookupShortcutDimCode → LookupDimValueCode`, …)
- [Codeunit 5402 "Unit of Measure Management"](../codeunit/5402.md) (7 calls: `CalcBaseQty → CalcBaseQty`, `CalculateQuantity → QtyRndPrecision`, `CopyFromPlanningComp → QtyRndPrecision`, …)
- [Codeunit 99000838 "Prod. Order Comp.-Reserve"](../codeunit/99000838.md) (7 calls: `AdjustQtyToReservedFromInventory → GetReservedQtyFromInventory`, `BlockDynamicTracking → Block`, `CheckIfProdOrderCompMeetsReservedFromStockSetting → GetReservedQtyFromInventory`, …)
- [Codeunit 99000845 "Reservation Management"](../codeunit/99000845.md) (4 calls: `AutoReserve → AutoReserve`, `AutoReserve → SetReservSource`, `ReserveFromInventory → AutoReserveToShip`, …)
- [Codeunit 5774 "Whse.-Production Release"](../codeunit/5774.md) (3 calls: `OnDelete → DeleteLine`, `OnInsert → ReleaseLine`, `OnModify → ReleaseLine`)
- [Codeunit 5996 "Prod. Order Warehouse Mgt."](../codeunit/5996.md) (3 calls: `AdjustQtyToQtyPicked → CalcNextLevelProdOutput`, `OnDelete → ProdComponentDelete`, `OnModify → ProdComponentVerifyChange`)
- [Codeunit 6500 "Item Tracking Management"](../codeunit/6500.md) (2 calls: `OnDelete → DeleteWhseItemTrkgLines`, `RowID1 → ComposeRowID`)
- [Codeunit 7302 "WMS Management"](../codeunit/7302.md) (1 call: `GetDefaultConsumptionBin → GetDefaultBin`)
- [Codeunit 99000758 "Mfg. Cost Calculation Mgt."](../codeunit/99000758.md) (1 call: `GetNeededQty → CalcActNeededQtyBase`)
- [Codeunit 99000855 "Planning-Get Parameters"](../codeunit/99000855.md) (1 call: `GetUpdateFromSKU → AtSKU`)
- [Codeunit 99000898 "Mfg. Item Substitution"](../codeunit/99000898.md) (1 call: `ShowItemSub → GetProdOrderCompSubst`)
- [Page 497 "Reservation Entries"](../page/497.md) (1 call: `ShowReservationEntries → (object)`)

## Recent changes

- 2026-08-16 [#9067 Production Definition Wizard - Implementation](../../changes/bcapps/9067.md) (main, BC30, feature)
- 2026-07-07 [#9118 Bugs/master GitHub event batch 1745](../../changes/bcapps/9118.md) (main, BC30, fix)

## Across versions

- Present in: BC23-30
- Changed (declaration) in: BC24-26, BC28-30

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: "Prod. Order Component")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
