---
id: object/table/6906
type: object
title: Table 6906 "Expense Report Header"
summary: Table 6906 "Expense Report Header" in ExpenseAgent (Microsoft.ExpenseAgent). 57 fields, 34 public procedures, 1 events. Introduced in BC29, still in BC30, changed in BC30.
tier: official
language: en
tags:
  - table
  - expenseagent
versions:
  introduced: "29"
  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: d44e39e6a428e5b60f44e3c1d9a6122464fb28e60002c451cb01909d02f4bf50
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Apps/W1/ExpenseAgent/app/src/ExpenseReport/Tables/ExpenseReportHeader.Table.al
    title: src/Apps/W1/ExpenseAgent/app/src/ExpenseReport/Tables/ExpenseReportHeader.Table.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn:
    - https://learn.microsoft.com/dynamics365/business-central/expense-management/expense-management-post-reports
    - https://learn.microsoft.com/dynamics365/business-central/expense-management/expense-management-submit-report
    - https://learn.microsoft.com/dynamics365/business-central/expense-management/expense-management-overview
    - https://learn.microsoft.com/dynamics365/business-central/expense-management/expense-management-approve-reports
  objects: []
  features: []
  topics:
    - topic/business-central/business-functionality/expense-management-preview
    - topic/business-central/business-functionality/expense-management-preview/work-with-expenses-in-business-central
  localizations: []
  videos: []
  posts: []
  guidelines: []
  changes:
    - change/bcapps/12074
    - change/bcapps/11628
    - change/bcapps/11639
    - change/bcapps/11333
    - change/bcapps/11431
    - change/bcapps/11007
    - change/bcapps/10890
    - change/bcapps/10829
    - change/bcapps/10570
    - change/bcapps/10312
    - change/bcapps/10542
    - change/bcapps/10631
    - change/bcapps/10031
    - change/bcapps/10255
    - change/bcapps/9391
    - change/bcapps/9859
object_type: table
object_id: 6906
name: Expense Report Header
namespace: Microsoft.ExpenseAgent
app: ExpenseAgent
extends: null
first_version: "29"
last_version: "30"
present_in:
  - "29"
  - "30"
changed_in:
  - "30"
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 57
  procedures: 55
  events: 1
  subscribers: 0
relations:
  out: 30
  referenced_by: 13
  pages: 10
  extended_by: 0
  event_subscribers: 0
  calls: 12
  called_by: 0
  implements: 0
---

# Table 6906 "Expense Report Header"

> Table 6906 "Expense Report Header" in ExpenseAgent (Microsoft.ExpenseAgent). 57 fields, 34 public procedures, 1 events. Introduced in BC29, still in BC30, changed in BC30.

ExpenseAgent · Microsoft.ExpenseAgent · BC29-30 · [source at ea08af5e](https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Apps/W1/ExpenseAgent/app/src/ExpenseReport/Tables/ExpenseReportHeader.Table.al) · facts from BC29

Learn documents this table through its pages: [Page 6910 "Expense Report"](../page/6910.md) (2 Learn pages), [Page 6997 "Expense Reports"](../page/6997.md) (2), [Page 6979 "Expense Report List"](../page/6979.md) (1), [Page 6980 "Manager Expense Report"](../page/6980.md) (1), [Page 6981 "Manager Expense Reports"](../page/6981.md) (1).

## Properties

| Property | Value |
|---|---|
| Caption | Expense Report Header |
| Access | Internal |
| DataClassification | CustomerContent |
| LookupPageId | Expense Reports |
| DrillDownPageId | Expense Reports |

## 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 | No. | Code[20] | Specifies the expense report number. Visible when document numbers are shown. <small>via [Page 6910 "Expense Report"](../page/6910.md)</small> |  |
| 2 | Expense User No. | Code[20] | Specifies the expense user for the report. <small>via [Page 6910 "Expense Report"](../page/6910.md)</small> | TableRelation [Table 6923 "Expense User"](../table/6923.md) ("Expense User"."No.") |
| 3 | Expense User Name | Text[100] | Specifies the value of the Expense User Name field. <small>via [Page 6979 "Expense Report List"](../page/6979.md)</small> |  |
| 4 | Expense Report Date | Date | Specifies the date of the expense report. <small>via [Page 6910 "Expense Report"](../page/6910.md)</small> |  |
| 5 | Posting Date | Date | Specifies the Posting Date field. <small>via [Page 6910 "Expense Report"](../page/6910.md)</small> |  |
| 6 | Description | Text[100] | Specifies the value of the Description field. |  |
| 10 | Amount (LCY) | Decimal | Specifies the total amount of all expenses in the report, in the local currency. <small>via [Page 7091 "Accountant Expense Reports"](../page/7091.md)</small> | FlowField: sum("Expense Report Line"."Amount (LCY)" where("Document No." = field("No."))); not editable |
| 12 | Non-Refundable Amount (LCY) | Decimal | — | FlowField: sum("Expense Report Line"."Non-Refundable Amount (LCY)" where("Document No." = field("No."))); not editable |
| 13 | Reimbursable Amount | Decimal | Specifies the value of the Reimbursable Amount field. | FlowField: sum("Expense Report Line"."Reimbursable Amount" where("Document No." = field("No."))); not editable |
| 14 | Reimbursable Amount (LCY) | Decimal | Specifies the value of the Reimbursable Amount (LCY) field. <small>via [Page 6997 "Expense Reports"](../page/6997.md)</small> | FlowField: sum("Expense Report Line"."Reimbursable Amount (LCY)" where("Document No." = field("No."))); not editable |
| 15 | Shortcut Dimension 1 Code | Code[20] | Specifies dimension 1 used for analytics and posting. <small>via [Page 6910 "Expense Report"](../page/6910.md)</small> | TableRelation [Table 349 "Dimension Value"](../table/349.md) ("Dimension Value".Code where("Global Dimension No." = const(1), Blocked = const(false))) |
| 16 | Shortcut Dimension 2 Code | Code[20] | Specifies dimension 2 used for analytics and posting. <small>via [Page 6910 "Expense Report"](../page/6910.md)</small> | TableRelation [Table 349 "Dimension Value"](../table/349.md) ("Dimension Value".Code where("Global Dimension No." = const(2), Blocked = const(false))) |
| 17 | Employee Posting Group | Code[20] | Specifies the employee's type to link business transactions made for the employee with the appropriate account in the general ledger. | TableRelation [Table 5221 "Employee Posting Group"](../table/5221.md) ("Employee Posting Group".Code) |
| 18 | Language Code | Code[10] | Specifies the language code used for the report. <small>via [Page 6910 "Expense Report"](../page/6910.md)</small> | TableRelation Language.Code; DataClassification SystemMetadata |
| 19 | Comment | Boolean | — |  |
| 20 | Reason Code | Code[10] | Specifies the reason code for corrections or cancellations. <small>via [Page 6910 "Expense Report"](../page/6910.md)</small> | TableRelation "Reason Code".Code |
| 21 | No. Series | Code[20] | — | DataClassification SystemMetadata |
| 22 | Posting No. Series | Code[20] | — | DataClassification SystemMetadata |
| 23 | Status | Enum "Expense Report Status" | Specifies the current status of the expense report, for example Draft, Released, or Posted. <small>via [Page 6910 "Expense Report"](../page/6910.md)</small> | enum [Enum 6910 "Expense Report Status"](../enum/6910.md); not editable; DataClassification SystemMetadata |
| 24 | Anti-Corruption Attestation | Boolean | Specifies whether you accepted the anti-corruption attestation. <small>via [Page 6910 "Expense Report"](../page/6910.md)</small> |  |
| 25 | Anti-Corruption Description | Text[100] | Specifies details that explain the anti-corruption attestation when required. <small>via [Page 6910 "Expense Report"](../page/6910.md)</small> |  |
| 26 | Corrected | Boolean | Specifies whether this report corrects a previously posted report. <small>via [Page 6910 "Expense Report"](../page/6910.md)</small> | not editable |
| 27 | Responsibility Center | Code[20] | Specifies the responsibility center used for posting and reporting. <small>via [Page 6910 "Expense Report"](../page/6910.md)</small> | TableRelation [Table 5714 "Responsibility Center"](../table/5714.md) ("Responsibility Center".Code) |
| 28 | Reimbursement Currency Code | Code[10] | Specifies the value of the Reimbursement Currency Code field. | TableRelation Currency.Code |
| 29 | Corrected Document No. | Code[20] | Specifies the number of the document that this report corrects. <small>via [Page 6910 "Expense Report"](../page/6910.md)</small> | not editable |
| 30 | Dimension Set ID | Integer | — | TableRelation [Table 480 "Dimension Set Entry"](../table/480.md) (Dimension Set Entry); not editable |
| 31 | VAT Amount (LCY) | Decimal | Specifies the total VAT amount for the expense report in local currency. <small>via [Page 7095 "Expense Report Stats"](../page/7095.md)</small> | FlowField: sum("Expense Report Line"."VAT Amount (LCY)" where("Document No." = field("No."))); not editable |
| 32 | Amount without VAT (LCY) | Decimal | Specifies the total amount excluding VAT of all expense report lines in local currency. <small>via [Page 7095 "Expense Report Stats"](../page/7095.md)</small> | FlowField: sum("Expense Report Line"."Amount without VAT (LCY)" where("Document No." = field("No."))); not editable |
| 33 | Refundable Amount (LCY) | Decimal | Specifies the total refundable amount in local currency. <small>via [Page 7095 "Expense Report Stats"](../page/7095.md)</small> | FlowField: sum("Expense Report Line"."Refundable Amount (LCY)" where("Document No." = field("No."))); not editable |
| 34 | Refundable Amount | Decimal | Specifies the value of the Refundable Amount field. | FlowField: sum("Expense Report Line"."Refundable Amount" where("Document No." = field("No."))); not editable |
| 40 | VAT Bus. Posting Group | Code[20] | Specifies the VAT business posting group used when posting VAT for this expense report. <small>via [Page 6910 "Expense Report"](../page/6910.md)</small> | TableRelation [Table 323 "VAT Business Posting Group"](../table/323.md) (VAT Business Posting Group) |
| 42 | Submission DateTime | DateTime | Specifies when the expense report was submitted for approval. <small>via [Page 7091 "Accountant Expense Reports"](../page/7091.md)</small> |  |
| 43 | Approved/Rejected DateTime | DateTime | Specifies when the expense report was approved or rejected. <small>via [Page 7091 "Accountant Expense Reports"](../page/7091.md)</small> | not editable |
| 44 | Approved/Rejected By | Code[50] | Specifies the user who approved or rejected the expense report. <small>via [Page 7091 "Accountant Expense Reports"](../page/7091.md)</small> | TableRelation User."User Name"; not editable; DataClassification EndUserIdentifiableInformation |
| 441 | Approved/Rejected Exp.User No. | Code[50] | Approved/Rejected Expense User Number <small>caption</small> | TableRelation [Table 6923 "Expense User"](../table/6923.md) ("Expense User"."No."); not editable; DataClassification EndUserIdentifiableInformation |
| 442 | Approved/Rejected Exp.UserName | Text[100] | Approved/Rejected Expense User Display Name <small>caption</small> | FlowField: lookup("Expense User".Name where("No." = field("Approved/Rejected Exp.User No."))); not editable |
| 45 | Approver Expense User No. | Code[20] | Specifies the expense user number of the designated approver. <small>via [Page 7091 "Accountant Expense Reports"](../page/7091.md)</small> | TableRelation [Table 6923 "Expense User"](../table/6923.md) ("Expense User"."No."); not editable; DataClassification EndUserIdentifiableInformation |
| 46 | Approver Expense User ID | Code[50] | — | TableRelation User."User Name"; not editable; DataClassification EndUserIdentifiableInformation |
| 47 | Created By | Code[50] | — | TableRelation User."User Name"; DataClassification EndUserIdentifiableInformation |
| 48 | Approver Comment | Blob | Specifies the latest comment from the approver when approving or rejecting an expense report. |  |
| 49 | Submitter Comment | Blob | Specifies the latest comment from the submitter when submitting an expense report or resubmitting a rejected expense report. |  |
| 50 | Reimbursement Currency Factor | Decimal | — | not editable |
| 55 | Pending Approval By | Code[20] | — | TableRelation [Table 6923 "Expense User"](../table/6923.md) ("Expense User"."No."); FlowFilter |
| 56 | Submitter Expense User No. | Code[20] | Specifies the expense user number of the submitter when the expense report is in pending approval, approved or rejected status. | TableRelation [Table 6923 "Expense User"](../table/6923.md) ("Expense User"."No."); DataClassification EndUserIdentifiableInformation |
| 57 | Submitter Expense User ID | Code[50] | — | TableRelation User."User Name"; not editable; DataClassification EndUserIdentifiableInformation |
| 58 | Created By Exp. User Id | Guid | Created By Expense User Id <small>caption</small> | not editable; DataClassification EndUserIdentifiableInformation |
| 59 | Modified By Exp. User Id | Guid | Modified By Expense User Id <small>caption</small> | not editable; DataClassification EndUserIdentifiableInformation |
| 63 | Posting No. | Code[20] | — |  |
| 65 | Last Posting No. | Code[20] | — | TableRelation [Table 6906 "Expense Report Header"](../table/6906.md) ("Expense Report Header"."No."); not editable |
| 66 | Has VAT Specification | Boolean | Specifies whether this expense report contains at least one VAT specification line. | FlowField: exist("Expense Report Line VAT Spec." where("Document No." = field("No."))); not editable |
| 67 | Approved Reclaim VAT (LCY) | Decimal | Specifies the total VAT amount approved for reclaim across all VAT specification lines of this expense report, in local currency. | FlowField: sum("Expense Report Line VAT Spec."."Reclaim VAT Amount (LCY)" where("Document No." = field("No."), "Reclaim Status" = const(Approved))); not editable |
| 68 | Final Approver No. | Code[20] | Specifies the expense user who gives final approval. Prepopulated from the expense user's approver. | TableRelation [Table 6923 "Expense User"](../table/6923.md) ("Expense User"."No." where("Can Approve" = const(true))); not editable; DataClassification EndUserIdentifiableInformation |
| 69 | Final Approver Name | Text[100] | Specifies the name of the final approver. | FlowField: lookup("Expense User".Name where("No." = field("Final Approver No."))); not editable |
| 70 | Interim Approver No. | Code[20] | Specifies an optional interim approver who must approve before the final approver. | TableRelation [Table 6923 "Expense User"](../table/6923.md) ("Expense User"."No." where("Can Approve" = const(true))); not editable; DataClassification EndUserIdentifiableInformation |
| 71 | Interim Approver Name | Text[100] | Specifies the name of the interim approver. | FlowField: lookup("Expense User".Name where("No." = field("Interim Approver No."))); not editable |
| 100 | Spend Request No. | Code[20] | Specifies the travel request number that is associated with this expense report. | TableRelation [Table 6840 "Spend Request"](../table/6840.md) ("Spend Request" where(Status = const(Approved), "Document Type" = const("Travel Request"))) |
| 101 | Spend Request Close | Boolean | Specifies that the travel request will be closed when the expense report is posted. |  |

## Keys

- PK: No. (clustered)

## Events published

- `OnCheckExpenseReportPostRestrictions()` (integration)

## Procedures

- `AssistEdit(): Boolean`
- `ShowDocDim()`
- `ValidateShortcutDimCode(FieldNumber: Integer; var ShortcutDimCode: Code[20])`
- `ExpenseLinesExist(): Boolean`
- `UpdateAllLineDim(NewParentDimSetID: Integer; OldParentDimSetID: Integer)`
- `PerformManualRelease()`: Releases the expense document if it's not already released.
- `PerformManualRelease(var ExpenseReportHeader: Record "Expense Report Header")`: Releases the sales documents that are not yet released.
- `PerformManualReopen(var ExpenseReportHeader: Record "Expense Report Header")`: Reopens sales documents that are not already open.
- `PerformManualPendingApproval(SubmitterExpenseUserNo: Code[20])`: Pending Approval the expense document if it's not already "Pending Approval".
- `PerformManualReleaseAndPendingApproval(SubmitterExpenseUserNo: Code[20])`: Releases and marks as pending approval in a single atomic operation.
- `PerformManualReleaseAndPendingApproval(SubmitterExpenseUserNo: Code[20]; SubmissionComment: Text)`: Releases and submits an expense report with an optional submitter comment.
- `PerformManualApproved(ApproverExpenseUserNo: Code[20])`: Approved the expense document if it's not already "Approved".
- `PerformManualApproved(ApproverExpenseUserNo: Code[20]; SkipPolicyValidation: Boolean)`: Approves the expense document, optionally skipping policy validation.
- `PerformManualRejected(ApproverExpenseUserNo: Code[20]; RejectReason: Text)`: Rejected the expense document if it's not already "Rejected".
- `PerformManualRejectedAndReopen(ApproverExpenseUserNo: Code[20]; RejectReason: Text)`
- `SetHideValidationDialog(NewHideValidationDialog: Boolean)`: Sets the value of the global flag HideValidationDialog.
- `GetHideValidationDialog(): Boolean`: Returns the value of the global flag HideValidationDialog.
- `GetStatusStyleText(): Text`: Returns document status field style expression based on the status of the sales header.
- `TestStatusOpen()`: Checks if expense status is open. If it is not, an error is raised.
- `GetApproverComment(): Text`: Retrieves approver comment from the expense report header.
- `GetSubmitterComment(): Text`: Retrieves submitter comment from the expense report header.
- `CreateDimFromDefaultDim(FieldNo: Integer)`
- `CreateDim(DefaultDimSource: List of [Dictionary of [Integer, Code[20]]])`
- `Preview(var ExpenseReportHeader: Record "Expense Report Header")`
- `UpdateCurrencyFactor()`: Updates currency factor on the report header
- `CheckExpenseReportPostRestrictions()`
- `UpdateApproverID()`
- `TestApprovalStatus()` (internal)
- `IsApprovalPending(): Boolean` (internal)
- `TestApprovalPending()` (internal)
- `IsPolicyEvaluationComplete(var PolicyStatus: Enum "Expense Policy Status"; var FailedCount: Integer; var PassedCount: Integer; var FlaggedCategories: List of [Code[20]]): Boolean` (internal): Checks policy evaluation completion across the report's lines and returns a read-only summary. Replaces all output values; incomplete reports return zero counts and an empty category list.
- `AssignInterimApprover(NewApproverExpenseUserNo: Code[20])`: Assigns an optional interim approver who must approve before the final approver.
- `AssignInterimApprover(NewApproverExpenseUserNo: Code[20]; ActorExpenseUserNo: Code[20])` (internal)
- `SetCalledFromExpenseAgent(NewCalledFromExpenseAgent: Boolean)` (internal)

Plus 20 local procedures.

## Triggers

OnInsert, OnModify, OnDelete

## Relations

- drill-down page [Page 6997 "Expense Reports"](../page/6997.md)
- lookup page [Page 6997 "Expense Reports"](../page/6997.md)
- VAT Bus. Posting Group: TableRelation [Table 323 "VAT Business Posting Group"](../table/323.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)
- Employee Posting Group: TableRelation [Table 5221 "Employee Posting Group"](../table/5221.md)
- Responsibility Center: TableRelation [Table 5714 "Responsibility Center"](../table/5714.md)
- Spend Request No.: TableRelation [Table 6840 "Spend Request"](../table/6840.md)
- Last Posting No.: TableRelation [Table 6906 "Expense Report Header"](../table/6906.md)
- Amount (LCY): CalcFormula [Table 6907 "Expense Report Line"](../table/6907.md)
- Amount without VAT (LCY): CalcFormula [Table 6907 "Expense Report Line"](../table/6907.md)
- Non-Refundable Amount (LCY): CalcFormula [Table 6907 "Expense Report Line"](../table/6907.md)
- Refundable Amount: CalcFormula [Table 6907 "Expense Report Line"](../table/6907.md)
- Refundable Amount (LCY): CalcFormula [Table 6907 "Expense Report Line"](../table/6907.md)
- Reimbursable Amount: CalcFormula [Table 6907 "Expense Report Line"](../table/6907.md)
- Reimbursable Amount (LCY): CalcFormula [Table 6907 "Expense Report Line"](../table/6907.md)
- VAT Amount (LCY): CalcFormula [Table 6907 "Expense Report Line"](../table/6907.md)
- Approved Reclaim VAT (LCY): CalcFormula [Table 6922 "Expense Report Line VAT Spec."](../table/6922.md)
- Has VAT Specification: CalcFormula [Table 6922 "Expense Report Line VAT Spec."](../table/6922.md)
- Approved/Rejected Exp.UserName: CalcFormula [Table 6923 "Expense User"](../table/6923.md)
- Final Approver Name: CalcFormula [Table 6923 "Expense User"](../table/6923.md)
- Interim Approver Name: CalcFormula [Table 6923 "Expense User"](../table/6923.md)
- Approved/Rejected Exp.User No.: TableRelation [Table 6923 "Expense User"](../table/6923.md)
- Approver Expense User No.: TableRelation [Table 6923 "Expense User"](../table/6923.md)
- Expense User No.: TableRelation [Table 6923 "Expense User"](../table/6923.md)
- Final Approver No.: TableRelation [Table 6923 "Expense User"](../table/6923.md)
- Interim Approver No.: TableRelation [Table 6923 "Expense User"](../table/6923.md)
- Pending Approval By: TableRelation [Table 6923 "Expense User"](../table/6923.md)
- Submitter Expense User No.: TableRelation [Table 6923 "Expense User"](../table/6923.md)

## Referenced by

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

- [Table 6900 "Expense"](../table/6900.md): Expense Report No.
- [Table 6906 "Expense Report Header"](../table/6906.md): Last Posting No.
- [Table 6907 "Expense Report Line"](../table/6907.md): Document No.
- [Table 6908 "Expense Report Line Particip."](../table/6908.md): Expense Report No.
- [Table 6909 "Expense Report Line Per Diem"](../table/6909.md): Expense Report No.
- [Table 6910 "Expense Report Rule Violation"](../table/6910.md): Expense Report No.
- [Table 6911 "Expense Report Line Item"](../table/6911.md): Expense Report No.
- [Table 6922 "Expense Report Line VAT Spec."](../table/6922.md): Document No.
- [Table 6968 "Expense Agent Consumption"](../table/6968.md): Consumption Source System ID
- [Table 6969 "Expense Agent Env. Consumption"](../table/6969.md): Consumption Source System ID
- [Table 7100 "Expense Activity Log Entry"](../table/7100.md): Source Record System ID
- [Table extension 6904 "Exp - Sales Shpt Line - Ext"](../tableextension/6904.md): Posted Exp. Report No.
- [Table extension 6905 "Exp - Sales Inv Line - Ext"](../tableextension/6905.md): Posted Exp. Report No.

## Pages and codeunits on this table

- [Page 6910 "Expense Report"](../page/6910.md) (source table)
- [Page 6928 "Expense Reports API"](../page/6928.md) (source table)
- [Page 6979 "Expense Report List"](../page/6979.md) (source table)
- [Page 6980 "Manager Expense Report"](../page/6980.md) (source table)
- [Page 6981 "Manager Expense Reports"](../page/6981.md) (source table)
- [Page 6982 "Expense Report Statistics"](../page/6982.md) (source table)
- [Page 6997 "Expense Reports"](../page/6997.md) (source table)
- [Page 7091 "Accountant Expense Reports"](../page/7091.md) (source table)
- [Page 7095 "Expense Report Stats"](../page/7095.md) (source table)
- [Page 7098 "Expense Report FactBox"](../page/7098.md) (source table)
- [Codeunit 6984 "Release Exp. Report Document"](../codeunit/6984.md) (codeunit runs on it)
- [Codeunit 6985 "Expense Report Manual Release"](../codeunit/6985.md) (codeunit runs on it)
- [Codeunit 6986 "Expense Report Manual Reopen"](../codeunit/6986.md) (codeunit runs on it)
- [Codeunit 6987 "Expense Report-Post"](../codeunit/6987.md) (codeunit runs on it)
- [Codeunit 7092 "Expense Report Batch Post Mgt."](../codeunit/7092.md) (codeunit runs on it)

## 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`, `CreateDim → UpdateGlobalDimFromDimSetID`, `InitDefaultDimensionSources → AddDimSource`, …)
- [Codeunit 10 "Type Helper"](../codeunit/10.md) (4 calls: `GetApproverComment → LFSeparator`, `GetApproverComment → TryReadAsTextWithSepAndFieldErrMsg`, `GetSubmitterComment → LFSeparator`, …)
- [Codeunit 6984 "Release Exp. Report Document"](../codeunit/6984.md) (4 calls: `PerformManualPendingApproval → PerformManualPendingApproval`, `PerformManualRejected → PerformManualRejected`, `PerformManualRejectedAndReopen → PerformManualRejectedAndReopen`, …)
- [Codeunit 1281 "Update Currency Exchange Rates"](../codeunit/1281.md) (2 calls: `UpdateCurrencyFactor → ExchangeRatesForCurrencyExist`, `UpdateCurrencyFactor → ShowMissingExchangeRatesNotification`)
- [Codeunit 6993 "Expense Agent API Validation"](../codeunit/6993.md) (2 calls: `SetExpenseUserOnCreate → IsCurrentUserExpenseAgent`, `UpdateExpenseUserOnModify → IsCurrentUserExpenseAgent`)
- [Page 456 "No. Series"](../page/456.md) (2 calls: `AssistEdit → (object)`, `OnInsert → (object)`)
- [Codeunit 1380 "Batch Processing Mgt."](../codeunit/1380.md) (1 call: `PerformManualReopen → BatchProcess`)
- [Codeunit 19 "Gen. Jnl.-Post Preview"](../codeunit/19.md) (1 call: `Preview → Preview`)
- [Codeunit 27 "Confirm Management"](../codeunit/27.md) (1 call: `UpdateReportLines → GetResponseOrDefault`)
- [Codeunit 6901 "Expense Report Approval Mgmt"](../codeunit/6901.md) (1 call: `CheckExpenseUserWhenApprovalIsEnabled → GetCurrentExpenseUserForApproval`)
- [Codeunit 6926 "Expense Activity Log Mgt."](../codeunit/6926.md) (1 call: `OnDelete → DeleteEntriesForSource`)
- [Codeunit 6954 "EA KPI Track"](../codeunit/6954.md) (1 call: `OnInsert → UpdateExpenseReportEntry`)

## Recent changes

- 2026-10-02 [#12074 Expense Agent: travel request expense location, per-traveler reports, activity log and submitter comment](../../changes/bcapps/12074.md) (main, BC30, feature)
- 2026-10-01 [#11628 Expense Agent: capture submission policy evaluation history](../../changes/bcapps/11628.md) (main, BC30, feature)
- 2026-09-28 [#11639 [Master] - Slice 640938: [Expense Agent][VENDOR] Adding approval limits (November '26)](../../changes/bcapps/11639.md) (main, BC30, feature)
- 2026-09-17 [#11333 Align travel request APIs with employee travelers and expense report lifecycle](../../changes/bcapps/11333.md) (main, BC30, feature)
- 2026-09-15 [#11431 [Master] - [Expense Management] Move missing Employee Posting Group validation to rule violation](../../changes/bcapps/11431.md) (main, BC30, fix)
- 2026-09-09 [#11007 Add Travel Request API lifecycle to Expense Agent](../../changes/bcapps/11007.md) (main, BC30, feature)
- 2026-09-09 [#10890 [Master] Bug 645040: Expense Agent: BC Approval Workflow - Improve error message when Approval User Setup is missing](../../changes/bcapps/10890.md) (main, BC30, fix)
- 2026-09-03 [#10829 [29.x][Expense Agent] Backport approval conversation from #10570](../../changes/bcapps/10829.md) (releases/29.x, BC29, feature)
- 2026-09-02 [#10570 Expense Agent: add approval conversation to expense reports](../../changes/bcapps/10570.md) (main, BC30, feature)
- 2026-08-31 [#10312 Update expense VAT specification source](../../changes/bcapps/10312.md) (main, BC30, feature)
- 2026-08-27 [#10542 [Master] - Slice 638097: [Expense Agent] Enable simple interim approval scenario](../../changes/bcapps/10542.md) (main, BC30, feature)
- 2026-08-26 [#10631 Integration/main to releases 29.x 31a860b5](../../changes/bcapps/10631.md) (releases/29.x, BC29, feature)
- 2026-08-21 [#10031 Add AI-assisted policy evaluation backend to Expense Agent](../../changes/bcapps/10031.md) (main, BC30, feature)
- 2026-08-17 [#10255 Add expense activity history foundation](../../changes/bcapps/10255.md) (main, BC30, feature)
- 2026-08-10 [#9391 [Master] - Slice 616928: [Expense Management] [App part] Expense Managements Travel Requisitions 💸](../../changes/bcapps/9391.md) (main, BC30, feature)
- 2026-08-04 [#9859 [Master] - Move Expense Agent (Preview) app into BCApps](../../changes/bcapps/9859.md) (main, BC30, feature, added)

## Across versions

- Present in: BC29-30
- Changed (declaration) in: BC30

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