---
id: object/table/99000829
type: object
title: Table 99000829 "Planning Component"
summary: Table 99000829 "Planning Component" in Base Application (Microsoft.Inventory.Planning). 54 fields, 32 public procedures, 22 events. Present since at least BC23, still in BC30, changed in BC24-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: 608b48a80d91819cb1e89950030f157a7a3e2d115822a8b6e452dcd6f2b14170
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Inventory/Planning/PlanningComponent.Table.al
    title: src/Layers/W1/BaseApp/Inventory/Planning/PlanningComponent.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-replan-refresh-production-orders
    - 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/planning
  localizations: []
  videos: []
  posts: []
  guidelines: []
object_type: table
object_id: 99000829
name: Planning Component
namespace: Microsoft.Inventory.Planning
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"
  - "27"
  - "28"
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 54
  procedures: 59
  events: 22
  subscribers: 0
relations:
  out: 16
  referenced_by: 2
  pages: 3
  extended_by: 2
  event_subscribers: 8
  calls: 6
  called_by: 0
  implements: 0
---

# Table 99000829 "Planning Component"

> Table 99000829 "Planning Component" in Base Application (Microsoft.Inventory.Planning). 54 fields, 32 public procedures, 22 events. Present since at least BC23, still in BC30, changed in BC24-28.

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

Learn documents this table through its pages: [Page 99000861 "Planning Component List"](../page/99000861.md) (1 Learn page), [Page 99000862 "Planning Components"](../page/99000862.md) (1), [Page 99000900 "Avail. - Planning Components"](../page/99000900.md) (1).

## Properties

| Property | Value |
|---|---|
| Caption | Planning Component |
| 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 | Worksheet Template Name | Code[10] | — | TableRelation [Table 244 "Req. Wksh. Template"](../table/244.md) (Req. Wksh. Template) |
| 2 | Worksheet Batch Name | Code[10] | — | TableRelation [Table 245 "Requisition Wksh. Name"](../table/245.md) (if ("Worksheet Template Name" = filter(<> '')) "Requisition Wksh. Name".Name where("Worksheet Template Name" = field("Worksheet Template Name"))) |
| 3 | Worksheet Line No. | Integer | — | TableRelation [Table 246 "Requisition Line"](../table/246.md) ("Requisition Line"."Line No." where("Worksheet Template Name" = field("Worksheet Template Name"), "Journal Batch Name" = field("Worksheet Batch Name"))) |
| 5 | Line No. | Integer | — |  |
| 11 | Item No. | Code[20] | Specifies the item number of the component. | TableRelation [Table 27 "Item"](../table/27.md) (Item where(Type = filter(Inventory \| "Non-Inventory"))) |
| 12 | Description | Text[100] | Specifies the description of the component. |  |
| 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 second reference number for the component position, such as the alternate position number of a component on a circuit board. |  |
| 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 planning component. |  |
| 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 expected quantity of this planning component line. | not editable |
| 27 | Description 2 | Text[50] | Specifies additional description text. |  |
| 28 | Flushing Method | Enum Microsoft.Manufacturing.Setup."Flushing Method" | — | enum Microsoft.Manufacturing.Setup."Flushing Method" |
| 30 | Location Code | Code[10] | Specifies the code for the inventory location, where the item on the planning component line will be registered. | 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] | — | TableRelation [Table 7354 "Bin"](../table/7354.md) (Bin.Code where("Location Code" = field("Location Code"))) |
| 35 | Supplied-by Line No. | Integer | — | TableRelation [Table 246 "Requisition Line"](../table/246.md) ("Requisition Line"."Line No." where("Worksheet Template Name" = field("Worksheet Template Name"), "Journal Batch Name" = field("Worksheet Batch Name"), "Line No." = field("Supplied-by Line No."))) |
| 36 | Planning Level Code | Integer | — | not editable |
| 37 | Ref. Order Status | Enum Microsoft.Manufacturing.Document."Production Order Status" | — | enum Microsoft.Manufacturing.Document."Production Order Status" |
| 38 | Ref. Order No. | Code[20] | — |  |
| 39 | Ref. Order Line No. | 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. |  |
| 46 | Ref. Order Type | Enum "Requisition Ref. Order Type" | — | enum [Enum 99000905 "Requisition Ref. Order Type"](../enum/99000905.md); not editable |
| 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 for this planning component line. |  |
| 52 | Due Date | Date | Specifies the date when this planning component must be finished. |  |
| 53 | Due Time | Time | — |  |
| 55 | Direct Unit Cost | Decimal | — |  |
| 56 | Indirect Cost % | Decimal | — |  |
| 57 | Overhead Rate | Decimal | — |  |
| 58 | Direct Cost Amount | Decimal | — |  |
| 59 | Overhead Amount | Decimal | — |  |
| 60 | Qty. per Unit of Measure | Decimal | — | not editable |
| 62 | Quantity (Base) | Decimal | Specifies the value in the Quantity field on the line. <small>via [Page 99000900 "Avail. - Planning Components"](../page/99000900.md)</small> |  |
| 63 | Reserved Qty. (Base) | Decimal | Specifies the reserved quantity of the item, in base units of measure. <small>via [Page 99000900 "Avail. - Planning Components"](../page/99000900.md)</small> | FlowField: - sum("Reservation Entry"."Quantity (Base)" where("Source ID" = field("Worksheet Template Name"), "Source Ref. No." = field("Line No."), "Source Type" = const(99000829), "Source Subtype" = const("0"), "Source Batch Name" = field("Worksheet Batch Name"), "Source Prod. Order Line" = field("Worksheet L...; not editable |
| 71 | Reserved Quantity | Decimal | Specifies the quantity of units that are reserved. | FlowField: - sum("Reservation Entry".Quantity where("Source ID" = field("Worksheet Template Name"), "Source Ref. No." = field("Line No."), "Source Type" = const(99000829), "Source Subtype" = const("0"), "Source Batch Name" = field("Worksheet Batch Name"), "Source Prod. Order Line" = field("Worksheet Line No.")...; not editable |
| 73 | Expected Quantity (Base) | Decimal | Specifies the contents of the Expected Quantity field on the line, in base units of measure. <small>via [Page 99000861 "Planning Component List"](../page/99000861.md)</small> | not editable |
| 74 | Original Expected Qty. (Base) | Decimal | — | not editable |
| 75 | Net Quantity (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 |
| 99000875 | Critical | Boolean | — |  |
| 99000915 | Planning Line Origin | Enum "Planning Line Origin Type" | — | enum [Enum 99000915 "Planning Line Origin Type"](../enum/99000915.md); not editable |

## Keys

- Key1: Worksheet Template Name, Worksheet Batch Name, Worksheet Line No., Line No. (clustered)
- Key2: Item No., Variant Code, Location Code, Due Date, Planning Line Origin
- Key3: Item No., Variant Code, Location Code, Shortcut Dimension 1 Code, Shortcut Dimension 2 Code, Planning Line Origin, Due Date
- Key4: Worksheet Template Name, Worksheet Batch Name, Worksheet Line No., Item No.

## Events published

- `OnAfterInitDefaultDimensionSources(var PlanningComponent: Record "Planning Component"; var DefaultDimSource: List of [Dictionary of [Integer, Code[20]]])` (integration)
- `OnAfterFilterLinesWithItemToPlan(var PlanningComponent: Record "Planning Component"; var Item: Record Item)` (integration)
  - subscribers: [Codeunit 20518 "Subc. Planning Line Mgmt Ext."](../codeunit/20518.md) PlanningComponent_OnAfterFilterLinesWithItemToPlan
- `OnAfterGetItem(var Item: Record Item; var PlanningComponent: Record "Planning Component")` (integration)
- `OnAfterCreateDim(var PlanningComponent: Record "Planning Component"; DefaultDimSource: List of [Dictionary of [Integer, Code[20]]])` (integration)
- `OnAfterFindLinesForReservation(var PlanningComponent: Record "Planning Component"; ReservationEntry: Record "Reservation Entry"; AvailabilityFilter: Text; Positive: Boolean)` (integration)
- `OnAfterSetReservationFilters(var ReservEntry: Record "Reservation Entry"; PlanningComponent: Record "Planning Component")` (integration)
- `OnAfterTransferFromAsmLine(var PlanningComponent: Record "Planning Component"; AssemblyLine: Record "Assembly Line")` (integration)
- `OnAfterValidateShortcutDimCode(var PlanningComponent: Record "Planning Component"; var xPlanningComponent: Record "Planning Component"; FieldNumber: Integer; var ShortcutDimCode: Code[20])` (integration)
- `OnAfterValidateItemNo(var PlanningComponent: Record "Planning Component"; Item: Record Item)` (integration)
- `OnBeforeShowReservation(var PlanningComponent: Record "Planning Component"; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateShortcutDimCode(var PlanningComponent: Record "Planning Component"; var xPlanningComponent: Record "Planning Component"; FieldNumber: Integer; var ShortcutDimCode: Code[20])` (integration)
- `OnBeforeValidateCalculationFormula(var PlanningComponent: Record "Planning Component"; var IsHandled: Boolean)` (integration)
- `OnBeforeGetUpdateFromSKU(var PlanningComponent: Record "Planning Component"; var IsHandled: Boolean)` (integration)
- `OnBeforeGetWMSDefaultBin(var PlanningComponent: Record "Planning Component"; var BinCode: Code[20]; var IsHandled: Boolean; Location: Record Location)` (integration)
- `OnItemNoOnValidateOnAfterInitFromItem(var PlanningComponent: Record "Planning Component"; Item: Record Item)` (integration)
- `OnValidateCalculationFormulaEnumExtension(var PlanningComponent: Record "Planning Component")` (integration)
- `OnValidateCalculationFormulaOnAfterSetQuantity(var PlanningComponent: Record "Planning Component")` (integration)
- `OnAfterInitFromRequisitionLine(var PlanningComponent: Record "Planning Component"; RequisitionLine: Record "Requisition Line")` (integration)
- `OnAfterGetUpdateFromSKU(var PlanningComponent: Record "Planning Component"; StockeepingUnit: Record "Stockkeeping Unit")` (integration)
  - subscribers: [Codeunit 99000861 "Mfg. Planning Integration"](../codeunit/99000861.md) OnAfterGetUpdateFromSKU
- `OnAfterValidateCalculationFormula(var PlanningComponent: Record "Planning Component")` (integration)
  - subscribers: [Codeunit 99000861 "Mfg. Planning Integration"](../codeunit/99000861.md) PlanningCompomentOnAfterValidateCalculationFormula
- `OnGetToBinOnBeforeGetWMSDefaultCode(var PlanningComponent: Record "Planning Component"; var BinCode: Code[20])` (integration)
  - subscribers: [Codeunit 99000861 "Mfg. Planning Integration"](../codeunit/99000861.md) OnGetToBinOnBeforeGetWMSDefaultCode
- `OnBeforeGetDefaultBin(var PlanningComponent: Record "Planning Component"; var xPlanningComponent: Record "Planning Component"; var IsHandled: Boolean)` (integration)

## Trigger event subscribers

- OnAfterTransferFromComponent: [Codeunit 20522 "Subc. Planning Comp. Ext."](../codeunit/20522.md) OnAfterTransferFromComponent
- OnAfterValidateEvent(Bin Code): [Codeunit 20522 "Subc. Planning Comp. Ext."](../codeunit/20522.md) OnAfterValidateBinCode
- OnAfterValidateEvent(Location Code): [Codeunit 20522 "Subc. Planning Comp. Ext."](../codeunit/20522.md) OnAfterValidateLocationCode
- OnAfterValidateEvent(Routing Link Code): [Codeunit 20522 "Subc. Planning Comp. Ext."](../codeunit/20522.md) OnAfterValidateRoutingLinkCode

## Procedures

- `Caption(): Text`
- `ShowReservation(): Boolean`
- `ShowReservationEntries(Modal: Boolean)`
- `TransferFromAsmLine(var AsmLine: Record "Assembly Line")`
- `BlockDynamicTracking(SetBlock: Boolean)`
- `UpdateDatetime()`
- `OpenItemTrackingLines()`
- `CreateDim(DefaultDimSource: List of [Dictionary of [Integer, Code[20]]])`
- `ValidateShortcutDimCode(FieldNumber: Integer; var ShortcutDimCode: Code[20])`
- `GetGLSetup()`
- `GetItem()`
- `GetReqLine()`
- `GetLocation(LocationCode: Code[10])`
- `GetDefaultBin()`
- `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 ReservationEntry: Record "Reservation Entry")`
- `SetReservationFilters(var ReservationEntry: Record "Reservation Entry")`
- `ReservEntryExist(): Boolean`
- `FilterLinesWithItemToPlan(var Item2: Record Item)`
- `FindLinesWithItemToPlan(var Item2: Record Item): Boolean`
- `FindLinesForReservation(ReservationEntry: Record "Reservation Entry"; AvailabilityFilter: Text; Positive: Boolean)`
- `FindCurrForecastName(var ForecastName: Code[10]): Boolean`
- `SetRequisitionLine(RequisitionLine: Record "Requisition Line")`
- `ShowDimensions()`
- `InitFromRequisitionLine(RequisitionLine: Record "Requisition Line")`
- `CreateDimFromDefaultDim()`
- `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 PlanningComponent: Record "Planning Component"; ItemNo: Code[20])`: Adds an item to the document.
- `InitNewLine(var NewPlanningComponent: Record "Planning Component")`: Initializes a new Planning Component based on the current Planning Component.

Plus 5 local procedures.

## Triggers

OnDelete, OnInsert, OnModify, OnRename

## Relations

- drill-down page [Page 99000861 "Planning Component List"](../page/99000861.md)
- lookup page [Page 99000861 "Planning Component List"](../page/99000861.md)
- Location Code: TableRelation [Table 14 "Location"](../table/14.md)
- Worksheet Template Name: TableRelation [Table 244 "Req. Wksh. Template"](../table/244.md)
- Worksheet Batch Name: TableRelation [Table 245 "Requisition Wksh. Name"](../table/245.md)
- Supplied-by Line No.: TableRelation [Table 246 "Requisition Line"](../table/246.md)
- Worksheet Line No.: TableRelation [Table 246 "Requisition Line"](../table/246.md)
- Item No.: TableRelation [Table 27 "Item"](../table/27.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)
- Variant Code: TableRelation [Table 5401 "Item Variant"](../table/5401.md)
- Unit of Measure Code: TableRelation [Table 5404 "Item Unit of Measure"](../table/5404.md)
- Bin Code: TableRelation [Table 7354 "Bin"](../table/7354.md)

## Referenced by

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

- [Table 246 "Requisition Line"](../table/246.md): Expected Component Cost Amt.
- [Table 27 "Item"](../table/27.md): Planning Issues (Qty.)

## Pages and codeunits on this table

- [Page 99000861 "Planning Component List"](../page/99000861.md) (source table)
- [Page 99000862 "Planning Components"](../page/99000862.md) (source table)
- [Page 99000900 "Avail. - Planning Components"](../page/99000900.md) (source table)

## Extended by

- [Table extension 20503 "Subc. Planning Comp Ext."](../tableextension/20503.md)
- [Table extension 99000829 "Mfg. Planning Component"](../tableextension/99000829.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) (5 calls: `CreateDim → GetCombinedDimensionSetID`, `CreateDim → GetRecDefaultDimID`, `InitDefaultDimensionSources → AddDimSource`, …)
- [Codeunit 99000840 "Plng. Component-Reserve"](../codeunit/99000840.md) (5 calls: `BlockDynamicTracking → Block`, `OnDelete → DeleteLine`, `OnInsert → VerifyQuantity`, …)
- [Codeunit 5402 "Unit of Measure Management"](../codeunit/5402.md) (1 call: `CalcBaseQty → CalcBaseQty`)
- [Codeunit 7302 "WMS Management"](../codeunit/7302.md) (1 call: `GetWMSDefaultBin → GetDefaultBin`)
- [Codeunit 99000855 "Planning-Get Parameters"](../codeunit/99000855.md) (1 call: `GetUpdateFromSKU → AtSKU`)
- [Page 497 "Reservation Entries"](../page/497.md) (1 call: `ShowReservationEntries → (object)`)

## Across versions

- Present in: BC23-30
- Changed (declaration) in: BC24-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: "Planning Component")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
