---
id: object/codeunit/7130
type: object
title: Codeunit 7130 "Item Budget Management"
summary: Codeunit 7130 "Item Budget Management" in Base Application (Microsoft.Inventory.Analysis). 18 public procedures, 15 events. Present since at least BC23, still in BC30, changed in BC24-25, BC28.
tier: official
language: en
tags:
  - codeunit
  - 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: 5490c2d7d45656b5a46715e0c436377fd0826ee90f261b172e11621179bfa90c
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Inventory/Analysis/ItemBudgetManagement.Codeunit.al
    title: src/Layers/W1/BaseApp/Inventory/Analysis/ItemBudgetManagement.Codeunit.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn: []
  objects: []
  features: []
  topics: []
  localizations: []
  videos: []
  posts: []
  guidelines: []
object_type: codeunit
object_id: 7130
name: Item Budget Management
namespace: Microsoft.Inventory.Analysis
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"
  - "28"
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 0
  procedures: 44
  events: 15
  subscribers: 0
relations:
  out: 0
  referenced_by: 0
  pages: 0
  extended_by: 0
  event_subscribers: 0
  calls: 3
  called_by: 6
  implements: 0
---

# Codeunit 7130 "Item Budget Management"

> Codeunit 7130 "Item Budget Management" in Base Application (Microsoft.Inventory.Analysis). 18 public procedures, 15 events. Present since at least BC23, still in BC30, changed in BC24-25, BC28.

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

## Events published

- `OnAfterCopyItemToBuf(var Item: Record Item; var DimCodeBuf: Record "Dimension Code Buffer")` (integration)
- `OnFindRecOnBeforeItemFind(var Item: Record Item)` (integration)
- `OnNextRecOnBeforeItemFind(var Item: Record Item)` (integration)
- `OnNextRecOnBeforeCustomerFindNext(var Customer: Record Customer)` (integration)
- `OnNextRecOnBeforeVendorFindNext(var Vendor: Record Vendor)` (integration)
- `OnBeforeDimCodeToType(DimCode: Text[30]; ItemBudgetName: Record "Item Budget Name"; var Result: Enum "Item Budget Dimension Type"; var IsHandled: Boolean)` (integration)
- `OnGetDimSelectionOnBeforeDimSelectionRunModal(var DimensionSelection: Page "Dimension Selection"; var ItemBudgetName: Record "Item Budget Name")` (integration)
- `OnBeforeDimCodeNotAllowed(DimCode: Text[30]; ItemBudgetName: Record "Item Budget Name"; var Result: Boolean; var IsHandled: Boolean)` (integration)
- `OnBeforeSetLineAndColumnDim(ItemBudgetName: Record "Item Budget Name"; var LineDimCode: Text[30]; var LineDimType: Enum "Item Budget Dimension Type"; var ColumnDimCode: Text[30]; var ColumnDimType: Enum "Item Budget Dimension Type")` (integration)
- `OnAfterSetLineAndColumnDim(ItemBudgetName: Record "Item Budget Name"; var LineDimCode: Text[30]; var LineDimType: Enum "Item Budget Dimension Type"; var ColumnDimCode: Text[30]; var ColumnDimType: Enum "Item Budget Dimension Type")` (integration)
- `OnDrillDownBudgetAmountOnValueTypeCaseElse(ItemAnalysisValueType: Enum "Item Analysis Value Type"; var ItemBudgetEntry: Record "Item Budget Entry")` (integration)
- `OnCalculateAmountOnValueTypeCaseElse(ItemAnalysisValueType: Enum "Item Analysis Value Type"; var ItemStatisticsBuffer: Record "Item Statistics Buffer"; var Result: Decimal)` (integration)
- `OnSetAmountOnValueTypeCaseElse(ItemAnalysisValueType: Enum "Item Analysis Value Type"; var ItemStatisticsBuffer: Record "Item Statistics Buffer")` (integration)
- `OnCalculateAmountOnBeforeValueTypeCase(ValueType: Enum "Item Analysis Value Type"; ItemStatisticsBuf: Record "Item Statistics Buffer"; var Result: Decimal; var IsHandled: Boolean)` (integration)
- `OnSetAmountOnBeforeValueTypeCase(ValueType: Enum "Item Analysis Value Type"; var ItemStatisticsBuf: Record "Item Statistics Buffer"; var NewAmount: Decimal; var IsHandled: Boolean)` (integration)

## Procedures

- `BudgetNameSelection(CurrentAnalysisArea: Option; var CurrentItemBudgetName: Code[10]; var ItemBudgetName: Record "Item Budget Name"; var ItemStatisticsBuffer: Record "Item Statistics Buffer"; var BudgetDim1Filter: Text; var BudgetDim2Filter: Text; var BudgetDim3Filter: Text)`
- `CheckBudgetName(CurrentAnalysisType: Option; CurrentItemBudgetName: Code[10]; var ItemBudgetName: Record "Item Budget Name")`
- `SetItemBudgetName(CurrentItemBudgetName: Code[10]; var ItemBudgetName: Record "Item Budget Name"; var ItemStatisticsBuf: Record "Item Statistics Buffer"; var BudgetDim1Filter: Text; var BudgetDim2Filter: Text; var BudgetDim3Filter: Text)`
- `LookupItemBudgetName(var CurrentItemBudgetName: Code[10]; var ItemBudgetName: Record "Item Budget Name"; var ItemStatisticsBuf: Record "Item Statistics Buffer"; var BudgetDim1Filter: Text; var BudgetDim2Filter: Text; var BudgetDim3Filter: Text)`
- `SetLineAndColumnDim(ItemBudgetName: Record "Item Budget Name"; var LineDimCode: Text[30]; var LineDimType: Enum "Item Budget Dimension Type"; var ColumnDimCode: Text[30]; var ColumnDimType: Enum "Item Budget Dimension Type")`
- `FindRecord(ItemBudgetName: Record "Item Budget Name"; DimType: Enum "Item Budget Dimension Type"; var DimCodeBuf: Record "Dimension Code Buffer"; Which: Text[250]; ItemFilter: Text; SourceNoFilter: Text; PeriodType: Enum "Analysis Period Type"; DateFilter: Text; var PeriodInitialized: Boolean; InternalDateFilter: Text; GlobalDim1Filter: Text; GlobalDim2Filter: Text; BudgetDim1Filter: Text; BudgetDim2Filter: Text; BudgetDim3Filter: Text): Boolean`
- `NextRecord(ItemBudgetName: Record "Item Budget Name"; DimType: Enum "Item Budget Dimension Type"; var DimCodeBuf: Record "Dimension Code Buffer"; Steps: Integer; ItemFilter: Text; SourceNoFilter: Text; PeriodType: Enum "Analysis Period Type"; DateFilter: Text; GlobalDim1Filter: Text; GlobalDim2Filter: Text; BudgetDim1Filter: Text; BudgetDim2Filter: Text; BudgetDim3Filter: Text): Integer`
- `SetBufferFilters(var ItemStatisticsBuf: Record "Item Statistics Buffer"; ItemBudgetName: Record "Item Budget Name"; ItemFilter: Text; SourceTypeFilter: Enum "Analysis Source Type"; SourceNoFilter: Text; DateFilter: Text; GlobalDim1Filter: Text; GlobalDim2Filter: Text; BudgetDim1Filter: Text; BudgetDim2Filter: Text; BudgetDim3Filter: Text)`
- `SetDimensionFilters(var ItemStatisticsBuf: Record "Item Statistics Buffer"; DimType: Enum "Item Budget Dimension Type"; DimCodeBuf: Record "Dimension Code Buffer")`
- `GetDimSelection(OldDimSelCode: Text[30]; ItemBudgetName: Record "Item Budget Name"): Text[30]`
- `ValidateLineDimTypeAndCode(ItemBudgetName: Record "Item Budget Name"; var LineDimCode: Text[30]; var LineDimType: Enum "Item Budget Dimension Type"; ColumnDimType: Enum "Item Budget Dimension Type"; var InternalDateFilter: Text; var DateFilter: Text; var ItemStatisticsBuf: Record "Item Statistics Buffer"; var PeriodInitialized: Boolean)`
- `ValidateColumnDimTypeAndCode(ItemBudgetName: Record "Item Budget Name"; var ColumnDimCode: Text[30]; var ColumnDimType: Enum "Item Budget Dimension Type"; LineDimType: Enum "Item Budget Dimension Type"; var InternalDateFilter: Text; var DateFilter: Text; var ItemStatisticsBuf: Record "Item Statistics Buffer"; var PeriodInitialized: Boolean)`
- `DimCodeNotAllowed(DimCode: Text[30]; ItemBudgetName: Record "Item Budget Name"): Boolean`
- `FormatToAmount(var AmountAsText: Text[250]; RoundingFactor: Enum "Analysis Rounding Factor")`
- `DrillDownBudgetAmount(ItemBudgetName: Record "Item Budget Name"; ItemFilter: Text; SourceTypeFilter: Enum "Analysis Source Type"; SourceNoFilter: Text; DateFilter: Text; GlobalDim1Filter: Text; GlobalDim2Filter: Text; BudgetDim1Filter: Text; BudgetDim2Filter: Text; BudgetDim3Filter: Text; RowDimType: Enum "Item Budget Dimension Type"; RowDimCodeBuf: Record "Dimension Code Buffer"; ColDimType: Enum "Item Budget Dimension Type"; ColDimCodeBuf: Record "Dimension Code Buffer"; ValueType: Enum "Item Analysis Value Type"; LinesOnly: Boolean)`
- `DeleteBudget(AnalysisArea: Integer; ItemBudgetName: Code[10]; ItemFilter: Text; DateFilter: Text; SourceTypeFilter: Option; SourceNoFilter: Text; GlobalDim1Filter: Text; GlobalDim2Filter: Text; BudgetDim1Filter: Text; BudgetDim2Filter: Text; BudgetDim3Filter: Text)`
- `CalculateAmount(ValueType: Enum "Item Analysis Value Type"; SetColumnFilter: Boolean; var ItemStatisticsBuf: Record "Item Statistics Buffer"; ItemBudgetName: Record "Item Budget Name"; ItemFilter: Text; SourceTypeFilter: Enum "Analysis Source Type"; SourceNoFilter: Text; DateFilter: Text; GlobalDim1Filter: Text; GlobalDim2Filter: Text; BudgetDim1Filter: Text; BudgetDim2Filter: Text; BudgetDim3Filter: Text; RowDimType: Enum "Item Budget Dimension Type"; RowDimCodeBuf: Record "Dimension Code Buffer"; ColDimType: Enum "Item Budget Dimension Type"; ColDimCodeBuf: Record "Dimension Code Buffer"): Decimal`
- `SetAmount(ValueType: Enum "Item Analysis Value Type"; SetColumnFilter: Boolean; var ItemStatisticsBuf: Record "Item Statistics Buffer"; ItemBudgetName: Record "Item Budget Name"; ItemFilter: Text; SourceTypeFilter: Enum "Analysis Source Type"; SourceNoFilter: Text; DateFilter: Text; GlobalDim1Filter: Text; GlobalDim2Filter: Text; BudgetDim1Filter: Text; BudgetDim2Filter: Text; BudgetDim3Filter: Text; RowDimType: Enum "Item Budget Dimension Type"; RowDimCodeBuf: Record "Dimension Code Buffer"; ColDimType: Enum "Item Budget Dimension Type"; ColDimCodeBuf: Record "Dimension Code Buffer"; NewAmount: Decimal)`

Plus 11 local procedures.

## Triggers

OnRun

## 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 362 "PeriodPageManagement"](../codeunit/362.md) (2 calls: `FindRecord → FindDate`, `NextRecord → NextDate`)
- [Codeunit 7150 "Update Item Analysis View"](../codeunit/7150.md) (1 call: `DeleteBudget → SetLastBudgetEntryNo`)
- [Codeunit 9200 "Matrix Management"](../codeunit/9200.md) (1 call: `FormatToAmount → RoundAmount`)

## Called by

- [Page 9219 "Purch. Budget Overview Matrix"](../page/9219.md) (8 calls: `AmountOnFormat → FormatToAmount`, `CalcAmt → CalculateAmount`, `DrillDown → DrillDownBudgetAmount`, …)
- [Page 9239 "Sales Budget Overview Matrix"](../page/9239.md) (8 calls: `AmountOnFormat → FormatToAmount`, `CalcAmt → CalculateAmount`, `DrillDown → DrillDownBudgetAmount`, …)
- [Page 7138 "Purchase Budget Overview"](../page/7138.md) (7 calls: `CurrentBudgetNameOnAfterValida → SetItemBudgetName`, `CurrentBudgetNameOnAfterValida → ValidateColumnDimTypeAndCode`, `CurrentBudgetNameOnAfterValida → ValidateLineDimTypeAndCode`, …)
- [Page 7139 "Sales Budget Overview"](../page/7139.md) (7 calls: `CurrentBudgetNameOnAfterValida → SetItemBudgetName`, `CurrentBudgetNameOnAfterValida → ValidateColumnDimTypeAndCode`, `CurrentBudgetNameOnAfterValida → ValidateLineDimTypeAndCode`, …)
- [Report 7132 "Export Item Budget to Excel"](../report/7132.md) (4 calls: `FindColumn → FindRecord`, `FindLine → FindRecord`, `NextColumn → NextRecord`, …)
- [Report 7131 "Import Item Budget from Excel"](../report/7131.md) (2 calls: `AnalyseData → DimCodeNotAllowed`, `AnalyseData → SetLineAndColumnDim`)

## Across versions

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

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: "codeunit", object_name: "Item Budget Management")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
