---
id: object/codeunit/18
type: object
title: Codeunit 18 "Financial Report Mgt."
summary: Codeunit 18 "Financial Report Mgt." in Base Application (Microsoft.Finance.FinancialReports). 27 public procedures, 1 events, 2 event subscribers. Present since at least BC23, still in BC30, changed in BC24, BC26-29.
tier: official
language: en
tags:
  - codeunit
  - base application
versions:
  introduced: null
  last_changed: "29"
  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: 663ba6e297d1fe51b8b7a9d88cb1723deb39bb29157bb7e4d88bb2c7055a7f3d
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Finance/FinancialReports/FinancialReportMgt.Codeunit.al
    title: src/Layers/W1/BaseApp/Finance/FinancialReports/FinancialReportMgt.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: 18
name: Financial Report Mgt.
namespace: Microsoft.Finance.FinancialReports
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"
  - "29"
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 0
  procedures: 43
  events: 1
  subscribers: 2
relations:
  out: 1
  referenced_by: 0
  pages: 0
  extended_by: 0
  event_subscribers: 0
  calls: 8
  called_by: 16
  implements: 0
---

# Codeunit 18 "Financial Report Mgt."

> Codeunit 18 "Financial Report Mgt." in Base Application (Microsoft.Finance.FinancialReports). 27 public procedures, 1 events, 2 event subscribers. Present since at least BC23, still in BC30, changed in BC24, BC26-29.

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

## Properties

| Property | Value |
|---|---|
| TableNo | Financial Report |

## Events published

- `OnBeforePrint(var FinancialReport: Record "Financial Report"; var IsHandled: Boolean)` (integration): Integration event raised before printing a financial report. Enables custom print processing and allows bypassing standard print functionality.

## Event subscriptions

- OnAfterCheckPostingGroups subscribes to Codeunit "Calc. G/L Acc. Where-Used" OnAfterCheckPostingGroups
- OnShowExtensionPage subscribes to Codeunit "Calc. G/L Acc. Where-Used" OnShowExtensionPage

## Procedures

- `LaunchEditRowsWarningNotification()` (internal)
- `LaunchEditColumnsWarningNotification()` (internal)
- `DisableColumnsDefinitionNotification(WarningNotification: Notification)` (internal)
- `DisableRowsDefinitionNotification(WarningNotification: Notification)` (internal)
- `XMLExchangeExport(FinancialReport: Record "Financial Report")`: Exports a financial report configuration as an XML package for distribution and deployment. Creates a configuration package containing the financial report and its row/column definitions.
- `XMLExchangeImport(FinancialReport: Record "Financial Report")`: Imports a financial report configuration from an XML package file selected by the user. Processes the imported configuration package and applies it to create the financial report.
- `ApplyPackage(PackageCode: Code[20])`: Applies a configuration package to create or update financial report definitions. Processes package tables and validates data before applying changes to the database.
- `RenameColumnLayoutInPackage(PackageCode: Code[20]; OldName: Code[10]; NewName: Code[10])` (internal)
- `Print(FinancialReport: Record "Financial Report")`: Prints a financial report using the Account Schedule report with the specified financial report configuration. Provides extensibility through OnBeforePrint integration event for custom print handling.
- `LookupName(FinancialReportName: Code[10]; var EntrdSchedName: Text[10]): Boolean`: Provides lookup functionality for financial report names with user selection dialog. Returns the selected financial report name through the EntrdSchedName parameter.
- `Initialize()`: Initializes financial reports by creating financial report records from existing account schedule names. Migrates legacy account schedule configurations to the new financial reports framework.
- `NotifyUpdateFinancialReport(var GLAccount: Record "G/L Account")` (internal)
- `OpenFinancialReports(UpdateFinancialReportNotification: Notification)`: Opens the Financial Reports page in response to a user notification action. Provides direct navigation to financial reports management from notification messages.
- `NotifyUpdateRowDefinition(var GLAccount: Record "G/L Account")` (internal)
- `OpenRowDefinitions(UpdateFinancialReportNotification: Notification)` (obsolete 28.0: This function has been replaced by OpenWhereUsed and will be removed in a future release.)
- `OpenWhereUsed(UpdateFinancialReportNotification: Notification)`
- `FindGLAccountWhereUsedInAccScheduleLine(GLAccNo: Code[20]; var TempGLAccWhereUsed: Record "G/L Account Where-Used" temporary): Boolean`
- `FindGLAccountWhereUsedInColumnLayout(GLAccNo: Code[20]; var TempGLAccWhereUsed: Record "G/L Account Where-Used" temporary): Boolean`
- `HideUpdateFinancialReportNotification(UpdateFinancialReportNotification: Notification)`: Disables the financial report update notification permanently for the current user. Prevents future notifications about financial report configuration updates.
- `GetUpdateFinancialReportNotificationId(): Guid`: Returns the unique identifier for financial report update notifications. Provides consistent notification ID for user preference management and notification control.
- `SetAccScheduleFilter(FinancialReport: Record "Financial Report"; var AccountSchedule: Report "Account Schedule")`
- `SetAccScheduleLineFilter(FinancialReport: Record "Financial Report"; var AccScheduleLine: Record "Acc. Schedule Line")`
- `CalcAccScheduleLineDateFilter(FinancialReport: Record "Financial Report"; var AccScheduleLine: Record "Acc. Schedule Line")`: Calculates and applies date filters to account schedule lines based on financial report date configuration. Supports both explicit start/end date formulas and period formula expressions for flexible date range handling.
- `SetAccScheduleLineStartEndDateFormula(var AccScheduleLine: Record "Acc. Schedule Line"; StartDateFormula: DateFormula; EndDateFormula: DateFormula): Boolean`: Sets date filters on account schedule lines using explicit start and end date formulas. Calculates the date range relative to work date and applies it as a date filter.
- `SetAccScheduleLinePeriodFormula(var AccScheduleLine: Record "Acc. Schedule Line"; PeriodFormula: Code[20]; LanguageId: Integer): Boolean`: Sets date filters on account schedule lines using period formula expressions with localization support. Parses period formulas and applies calculated date ranges to account schedule line filtering.
- `GetDefaultStatus(): Code[10]`
- `CheckStatus(Type: Text; StatusCode: Code[10])`

Plus 13 local procedures.

## Relations

- runs on [Table 88 "Financial Report"](../table/88.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 1511 "Notification Lifecycle Mgt."](../codeunit/1511.md) (4 calls: `CheckStatus → RecallNotificationsForRecord`, `CheckStatus → SendNotification`, `NotifyUpdateFinancialReport → SendNotification`, …)
- [Codeunit 8611 "Config. Package Management"](../codeunit/8611.md) (4 calls: `AddFinancialReportToConfigPackage → InsertPackage`, `AddFinancialReportToConfigPackage → InsertPackageFilter`, `AddFinancialReportToConfigPackage → InsertPackageTable`, …)
- [Codeunit 8614 "Config. XML Exchange"](../codeunit/8614.md) (3 calls: `XMLExchangeExport → ExportPackage`, `XMLExchangeImport → GetImportedPackageCode`, `XMLExchangeImport → ImportPackageXMLFromClient`)
- [Codeunit 921 "Period Formula Parser"](../codeunit/921.md) (2 calls: `CalcAccScheduleLineDateFilter → TryCalculatePeriodStartEnd`, `SetAccScheduleLinePeriodFormula → TryCalculatePeriodStartEnd`)
- [Codeunit 457 "Environment Information"](../codeunit/457.md) (1 call: `LogImportExportTelemetry → IsSaaS`)
- [Codeunit 8 "AccSchedManagement"](../codeunit/8.md) (1 call: `CalcAccScheduleLineDateFilter → FindPeriod`)
- [Codeunit 8703 "Feature Telemetry"](../codeunit/8703.md) (1 call: `LogImportExportTelemetry → LogUsage`)
- [Page 108 "Financial Reports"](../page/108.md) (1 call: `OpenFinancialReports → (object)`)

## Called by

- [Codeunit 8361 "Financial Report Export Job"](../codeunit/8361.md) (6 calls: `ExportExcel → CalcAccScheduleLineDateFilter`, `ExportExcel → SetAccScheduleLineFilter`, `ExportPdf → CalcAccScheduleLineDateFilter`, …)
- [Page 490 "Acc. Schedule Overview"](../page/490.md) (3 calls: `CalcDateFilterAndUpdate → CalcAccScheduleLineDateFilter`, `LoadPageState → CalcAccScheduleLineDateFilter`, `LoadPageState → CheckStatus`)
- [Page 104 "Account Schedule"](../page/104.md) (2 calls: `GetDescriptions → CheckStatus`, `OnOpenPage → LaunchEditRowsWarningNotification`)
- [Page 108 "Financial Reports"](../page/108.md) (2 calls: `OnInit → Initialize`, `OnNewRecord → GetDefaultStatus`)
- [Page 489 "Column Layout"](../page/489.md) (2 calls: `GetDescriptions → CheckStatus`, `OnOpenPage → LaunchEditColumnsWarningNotification`)
- [Codeunit 104000 "Upgrade - BaseApp"](../codeunit/104000.md) (1 call: `UpgradeAccountSchedulesToFinancialReports → Initialize`)
- [Codeunit 570 "G/L Account Category Mgt."](../codeunit/570.md) (1 call: `ConfirmAndRunGenerateAccountSchedules → Initialize`)
- [Page 103 "Account Schedule Names"](../page/103.md) (1 call: `OnNewRecord → GetDefaultStatus`)
- [Page 118 "General Ledger Setup"](../page/118.md) (1 call: `OnInit → Initialize`)
- [Page 16 "Chart of Accounts"](../page/16.md) (1 call: `OnInsertRecord → NotifyUpdateFinancialReport`)
- [Page 17 "G/L Account Card"](../page/17.md) (1 call: `OnInsertRecord → NotifyUpdateFinancialReport`)
- [Page 488 "Column Layout Names"](../page/488.md) (1 call: `OnNewRecord → GetDefaultStatus`)
- [Report 25 "Account Schedule"](../report/25.md) (1 call: `OnPreReport → Initialize`)
- [Table 333 "Column Layout Name"](../table/333.md) (1 call: `GetNewColumnDefinitionName → RenameColumnLayoutInPackage`)
- [Table 8360 "Financial Report Schedule"](../table/8360.md) (1 call: `EditCustomFilters → SetAccScheduleFilter`)
- [Table 8372 "Fin. Report Package Report"](../table/8372.md) (1 call: `EditCustomFilters → SetAccScheduleFilter`)

## Across versions

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

## Deprecations

- procedure OpenRowDefinitions: Pending 28.0 (#if not CLEAN28), "This function has been replaced by OpenWhereUsed and will be removed in a future release."

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: "Financial Report Mgt.")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
