Table 6906 "Expense Report Header"
ExpenseAgent · Microsoft.ExpenseAgent
Across versions
- BC23-28not present
- BC29present
- BC30changed
Neighbourhood 52 connected objects and pages
ExpenseAgent · Microsoft.ExpenseAgent · BC29-30 · source at ea08af5e · facts from BC29
Learn documents this table through its pages: Page 6910 “Expense Report” (2 Learn pages), Page 6997 “Expense Reports” (2), Page 6979 “Expense Report List” (1), Page 6980 “Manager Expense Report” (1), Page 6981 “Manager Expense Reports” (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. via Page 6910 “Expense Report” | |
| 2 | Expense User No. | Code[20] | Specifies the expense user for the report. via Page 6910 “Expense Report” | TableRelation Table 6923 “Expense User” (“Expense User”.“No.”) |
| 3 | Expense User Name | Text[100] | Specifies the value of the Expense User Name field. via Page 6979 “Expense Report List” | |
| 4 | Expense Report Date | Date | Specifies the date of the expense report. via Page 6910 “Expense Report” | |
| 5 | Posting Date | Date | Specifies the Posting Date field. via Page 6910 “Expense Report” | |
| 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. via Page 7091 “Accountant Expense Reports” | 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. via Page 6997 “Expense Reports” | 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. via Page 6910 “Expense Report” | TableRelation Table 349 “Dimension Value” (“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. via Page 6910 “Expense Report” | TableRelation Table 349 “Dimension Value” (“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” (“Employee Posting Group”.Code) |
| 18 | Language Code | Code[10] | Specifies the language code used for the report. via Page 6910 “Expense Report” | TableRelation Language.Code; DataClassification SystemMetadata |
| 19 | Comment | Boolean | — | |
| 20 | Reason Code | Code[10] | Specifies the reason code for corrections or cancellations. via Page 6910 “Expense Report” | 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. via Page 6910 “Expense Report” | enum Enum 6910 “Expense Report Status”; not editable; DataClassification SystemMetadata |
| 24 | Anti-Corruption Attestation | Boolean | Specifies whether you accepted the anti-corruption attestation. via Page 6910 “Expense Report” | |
| 25 | Anti-Corruption Description | Text[100] | Specifies details that explain the anti-corruption attestation when required. via Page 6910 “Expense Report” | |
| 26 | Corrected | Boolean | Specifies whether this report corrects a previously posted report. via Page 6910 “Expense Report” | not editable |
| 27 | Responsibility Center | Code[20] | Specifies the responsibility center used for posting and reporting. via Page 6910 “Expense Report” | TableRelation Table 5714 “Responsibility Center” (“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. via Page 6910 “Expense Report” | not editable |
| 30 | Dimension Set ID | Integer | — | TableRelation Table 480 “Dimension Set Entry” (Dimension Set Entry); not editable |
| 31 | VAT Amount (LCY) | Decimal | Specifies the total VAT amount for the expense report in local currency. via Page 7095 “Expense Report Stats” | 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. via Page 7095 “Expense Report Stats” | 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. via Page 7095 “Expense Report Stats” | 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. via Page 6910 “Expense Report” | TableRelation Table 323 “VAT Business Posting Group” (VAT Business Posting Group) |
| 42 | Submission DateTime | DateTime | Specifies when the expense report was submitted for approval. via Page 7091 “Accountant Expense Reports” | |
| 43 | Approved/Rejected DateTime | DateTime | Specifies when the expense report was approved or rejected. via Page 7091 “Accountant Expense Reports” | not editable |
| 44 | Approved/Rejected By | Code[50] | Specifies the user who approved or rejected the expense report. via Page 7091 “Accountant Expense Reports” | TableRelation User.“User Name”; not editable; DataClassification EndUserIdentifiableInformation |
| 441 | Approved/Rejected Exp.User No. | Code[50] | Approved/Rejected Expense User Number caption | TableRelation Table 6923 “Expense User” (“Expense User”.“No.”); not editable; DataClassification EndUserIdentifiableInformation |
| 442 | Approved/Rejected Exp.UserName | Text[100] | Approved/Rejected Expense User Display Name caption | 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. via Page 7091 “Accountant Expense Reports” | TableRelation Table 6923 “Expense User” (“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” (“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” (“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 caption | not editable; DataClassification EndUserIdentifiableInformation |
| 59 | Modified By Exp. User Id | Guid | Modified By Expense User Id caption | not editable; DataClassification EndUserIdentifiableInformation |
| 63 | Posting No. | Code[20] | — | |
| 65 | Last Posting No. | Code[20] | — | TableRelation Table 6906 “Expense Report Header” (“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” (“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” (“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” (“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(): BooleanShowDocDim()ValidateShortcutDimCode(FieldNumber: Integer; var ShortcutDimCode: Code[20])ExpenseLinesExist(): BooleanUpdateAllLineDim(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 headerCheckExpenseReportPostRestrictions()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”
- lookup page Page 6997 “Expense Reports”
- VAT Bus. Posting Group: TableRelation Table 323 “VAT Business Posting Group”
- Shortcut Dimension 1 Code: TableRelation Table 349 “Dimension Value”
- Shortcut Dimension 2 Code: TableRelation Table 349 “Dimension Value”
- Dimension Set ID: TableRelation Table 480 “Dimension Set Entry”
- Employee Posting Group: TableRelation Table 5221 “Employee Posting Group”
- Responsibility Center: TableRelation Table 5714 “Responsibility Center”
- Spend Request No.: TableRelation Table 6840 “Spend Request”
- Last Posting No.: TableRelation Table 6906 “Expense Report Header”
- Amount (LCY): CalcFormula Table 6907 “Expense Report Line”
- Amount without VAT (LCY): CalcFormula Table 6907 “Expense Report Line”
- Non-Refundable Amount (LCY): CalcFormula Table 6907 “Expense Report Line”
- Refundable Amount: CalcFormula Table 6907 “Expense Report Line”
- Refundable Amount (LCY): CalcFormula Table 6907 “Expense Report Line”
- Reimbursable Amount: CalcFormula Table 6907 “Expense Report Line”
- Reimbursable Amount (LCY): CalcFormula Table 6907 “Expense Report Line”
- VAT Amount (LCY): CalcFormula Table 6907 “Expense Report Line”
- Approved Reclaim VAT (LCY): CalcFormula Table 6922 “Expense Report Line VAT Spec.”
- Has VAT Specification: CalcFormula Table 6922 “Expense Report Line VAT Spec.”
- Approved/Rejected Exp.UserName: CalcFormula Table 6923 “Expense User”
- Final Approver Name: CalcFormula Table 6923 “Expense User”
- Interim Approver Name: CalcFormula Table 6923 “Expense User”
- Approved/Rejected Exp.User No.: TableRelation Table 6923 “Expense User”
- Approver Expense User No.: TableRelation Table 6923 “Expense User”
- Expense User No.: TableRelation Table 6923 “Expense User”
- Final Approver No.: TableRelation Table 6923 “Expense User”
- Interim Approver No.: TableRelation Table 6923 “Expense User”
- Pending Approval By: TableRelation Table 6923 “Expense User”
- Submitter Expense User No.: TableRelation Table 6923 “Expense User”
Referenced by
13 fields in 13 objects relate to this table (TableRelation or CalcFormula).
- Table 6900 “Expense”: Expense Report No.
- Table 6906 “Expense Report Header”: Last Posting No.
- Table 6907 “Expense Report Line”: Document No.
- Table 6908 “Expense Report Line Particip.”: Expense Report No.
- Table 6909 “Expense Report Line Per Diem”: Expense Report No.
- Table 6910 “Expense Report Rule Violation”: Expense Report No.
- Table 6911 “Expense Report Line Item”: Expense Report No.
- Table 6922 “Expense Report Line VAT Spec.”: Document No.
- Table 6968 “Expense Agent Consumption”: Consumption Source System ID
- Table 6969 “Expense Agent Env. Consumption”: Consumption Source System ID
- Table 7100 “Expense Activity Log Entry”: Source Record System ID
- Table extension 6904 “Exp - Sales Shpt Line - Ext”: Posted Exp. Report No.
- Table extension 6905 “Exp - Sales Inv Line - Ext”: Posted Exp. Report No.
Pages and codeunits on this table
- Page 6910 “Expense Report” (source table)
- Page 6928 “Expense Reports API” (source table)
- Page 6979 “Expense Report List” (source table)
- Page 6980 “Manager Expense Report” (source table)
- Page 6981 “Manager Expense Reports” (source table)
- Page 6982 “Expense Report Statistics” (source table)
- Page 6997 “Expense Reports” (source table)
- Page 7091 “Accountant Expense Reports” (source table)
- Page 7095 “Expense Report Stats” (source table)
- Page 7098 “Expense Report FactBox” (source table)
- Codeunit 6984 “Release Exp. Report Document” (codeunit runs on it)
- Codeunit 6985 “Expense Report Manual Release” (codeunit runs on it)
- Codeunit 6986 “Expense Report Manual Reopen” (codeunit runs on it)
- Codeunit 6987 “Expense Report-Post” (codeunit runs on it)
- Codeunit 7092 “Expense Report Batch Post Mgt.” (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” (7 calls:
CreateDim → GetRecDefaultDimID,CreateDim → UpdateGlobalDimFromDimSetID,InitDefaultDimensionSources → AddDimSource, …) - Codeunit 10 “Type Helper” (4 calls:
GetApproverComment → LFSeparator,GetApproverComment → TryReadAsTextWithSepAndFieldErrMsg,GetSubmitterComment → LFSeparator, …) - Codeunit 6984 “Release Exp. Report Document” (4 calls:
PerformManualPendingApproval → PerformManualPendingApproval,PerformManualRejected → PerformManualRejected,PerformManualRejectedAndReopen → PerformManualRejectedAndReopen, …) - Codeunit 1281 “Update Currency Exchange Rates” (2 calls:
UpdateCurrencyFactor → ExchangeRatesForCurrencyExist,UpdateCurrencyFactor → ShowMissingExchangeRatesNotification) - Codeunit 6993 “Expense Agent API Validation” (2 calls:
SetExpenseUserOnCreate → IsCurrentUserExpenseAgent,UpdateExpenseUserOnModify → IsCurrentUserExpenseAgent) - Page 456 “No. Series” (2 calls:
AssistEdit → (object),OnInsert → (object)) - Codeunit 1380 “Batch Processing Mgt.” (1 call:
PerformManualReopen → BatchProcess) - Codeunit 19 “Gen. Jnl.-Post Preview” (1 call:
Preview → Preview) - Codeunit 27 “Confirm Management” (1 call:
UpdateReportLines → GetResponseOrDefault) - Codeunit 6901 “Expense Report Approval Mgmt” (1 call:
CheckExpenseUserWhenApprovalIsEnabled → GetCurrentExpenseUserForApproval) - Codeunit 6926 “Expense Activity Log Mgt.” (1 call:
OnDelete → DeleteEntriesForSource) - Codeunit 6954 “EA KPI Track” (1 call:
OnInsert → UpdateExpenseReportEntry)
Recent changes
- 2026-10-02 #12074 Expense Agent: travel request expense location, per-traveler reports, activity log and submitter comment (main, BC30, feature)
- 2026-10-01 #11628 Expense Agent: capture submission policy evaluation history (main, BC30, feature)
- 2026-09-28 #11639 [Master] - Slice 640938: [Expense Agent][VENDOR] Adding approval limits (November ’26) (main, BC30, feature)
- 2026-09-17 #11333 Align travel request APIs with employee travelers and expense report lifecycle (main, BC30, feature)
- 2026-09-15 #11431 [Master] - [Expense Management] Move missing Employee Posting Group validation to rule violation (main, BC30, fix)
- 2026-09-09 #11007 Add Travel Request API lifecycle to Expense Agent (main, BC30, feature)
- 2026-09-09 #10890 [Master] Bug 645040: Expense Agent: BC Approval Workflow - Improve error message when Approval User Setup is missing (main, BC30, fix)
- 2026-09-03 #10829 [29.x][Expense Agent] Backport approval conversation from #10570 (releases/29.x, BC29, feature)
- 2026-09-02 #10570 Expense Agent: add approval conversation to expense reports (main, BC30, feature)
- 2026-08-31 #10312 Update expense VAT specification source (main, BC30, feature)
- 2026-08-27 #10542 [Master] - Slice 638097: [Expense Agent] Enable simple interim approval scenario (main, BC30, feature)
- 2026-08-26 #10631 Integration/main to releases 29.x 31a860b5 (releases/29.x, BC29, feature)
- 2026-08-21 #10031 Add AI-assisted policy evaluation backend to Expense Agent (main, BC30, feature)
- 2026-08-17 #10255 Add expense activity history foundation (main, BC30, feature)
- 2026-08-10 #9391 [Master] - Slice 616928: [Expense Management] [App part] Expense Managements Travel Requisitions 💸 (main, BC30, feature)
- 2026-08-04 #9859 [Master] - Move Expense Agent (Preview) app into BCApps (main, BC30, feature, added)
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.