Table 6840 "Spend Request"
Base Application · Microsoft.Finance.SpendRequest
Across versions
- BC23-28not present
- BC29added
- BC30unchanged
Neighbourhood 35 connected objects and pages
Base Application · Microsoft.Finance.SpendRequest · BC29-30 · source at ea08af5e · facts from BC29
Learn documents this table through its pages: Page 7129 “Travel Request Card” (1 Learn page), Page 7136 “Travel Request List” (1).
Properties
| Property | Value |
|---|---|
| Caption | Spend Request |
| DataClassification | CustomerContent |
| Permissions | tabledata “Spend Request” = m, tabledata “Spend Request Detail” = rimd, tabledata “Spend Request To G/L Link” = rimd |
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 unique identifier of the spend request. | |
| 2 | Document Type | Enum “Spend Request Document Type” | Specifies the document type of the spend request. | enum Enum 6840 “Spend Request Document Type” |
| 3 | Requested By | Code[20] | Specifies the employee who requested the spend request. | TableRelation Table 5200 “Employee” |
| 6 | Status | Enum “Spend Request Status” | Specifies the approval status of the spend request. | enum Enum 6841 “Spend Request Status”; not editable |
| 7 | G/L Account No. | Code[20] | The G/L Account that the expenses will primarily be posted to. | TableRelation Table 15 “G/L Account” (G/L Account) |
| 8 | Purpose | Text[1000] | Specifies the purpose of the spend request. | |
| 9 | Currency Code | Code[10] | Specifies the currency used for estimation. The currency amount will automatically be converted into Total Expected Amount (LCY) | TableRelation Table 4 “Currency” |
| 10 | Total Expected Amount | Decimal | Specifies the total expected amount of the spend request in the currency specified. | |
| 11 | Currency Exchange Rate | Decimal | Specifies the most recent exchange rate for the specified currency (1 = pari). | not editable |
| 12 | Total Expected Amount (LCY) | Decimal | Specifies the total expected amount of the spend request. | not editable |
| 13 | Expected Start Date | Date | Specifies the expected start date of the spend request. | |
| 14 | Expected End Date | Date | Specifies the expected end date of the spend request. | |
| 15 | Approved/Rejected by User ID | Guid | Specifies the user ID who approved or rejected the spend request. | TableRelation User.“User Security ID”; not editable; DataClassification EndUserIdentifiableInformation |
| 16 | Approved/Rejected by User Name | Code[50] | Specifies the user name who approved or rejected the spend request. | not editable; DataClassification EndUserIdentifiableInformation |
| 17 | Approved/Rejected At | DateTime | Specifies the time when the spend request was approved or rejected. | not editable |
| 18 | Closed At | DateTime | Specifies the time when the spend request was closed. | not editable |
| 19 | Closed By Document No. | Code[20] | Specifies the document no. of the transaction that closed the spend request. | not editable |
| 20 | Total Spent Amount (LCY) | Decimal | Specifies the total spent amount of the spend request. | FlowField: sum(“Spend Request To G/L Link”.Amount where(“Spend Request No.” = field(“No.”))); not editable |
| 21 | Total Line Amount (LCY) | Decimal | Specifies the total amount in local currency for all the detail lines. | FlowField: sum(“Spend Request Detail”.“Expected Amount (LCY)” where(“Spend Request No.” = field(“No.”))); not editable |
| 29 | 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 page. | TableRelation Table 349 “Dimension Value” (“Dimension Value”.Code where(“Global Dimension No.” = const(1), Blocked = const(false))); not editable |
| 30 | 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 page. | TableRelation Table 349 “Dimension Value” (“Dimension Value”.Code where(“Global Dimension No.” = const(2), Blocked = const(false))); not editable |
| 480 | Dimension Set ID | Integer | — | TableRelation Table 480 “Dimension Set Entry” (Dimension Set Entry); not editable |
Keys
- Key1: No. (clustered)
- Key2: Status
- Key3: Requested By
Procedures
GetRemainingAmountLCY(): Decimal: Returns the difference between estimated amount and actually spent amountGetDocumentTypeDescription(): TextAssistEditNo(): Boolean: Allows the user to select a number from another no. series.TestStatusOpen(): Ensures the spend request is still in the Open status, which is required before any field can be modified.TestStatus(ExpectedStatus: Enum "Spend Request Status"): Verifies the request has the expected status, using the document type in the error message.ShowDocDim(): Opens a page for editing dimensions for the sales header. If dimensions are changed, they’re updated on the sales lines as well.Approve()(internal): Sets status to Approved and updates when and who approved.Reject()(internal): Sets status to Rejected and updates when and who rejected.ValidateShortcutDimCode(FieldNumber: Integer; var ShortcutDimCode: Code[20]): Verifies whether the provided shortcut dimension code and value are valid. If valid, assigns it to the sales document.CreateDimFromDefaultDim(FieldNo: Integer): Initializes the dimensions for the document from default dimensions for the related entry specified in the field.CreateDim(DefaultDimSource: List of [Dictionary of [Integer, Code[20]]]): Creates and assigns dimensions for the sales header based on the provided default dimension sources.AddToTotalExpectedAmount(DeltaLCY: Decimal)(internal): Applies an incremental change to the Total Expected Amount and refreshes the LCY total using the document currency factor. Called by detail tables (generic or layer-specific) when their amounts change.ChangeCurrency(xCurrencyCode: Code[10])(internal)UpdateCurrencyExchangeRate()(internal)ValidateSpendRequest(SpendRequestNo: Code[20]; var SpendRequestclose: Boolean; NewAmountLCY: Decimal): Validates that the spendrequest is approved, asks if should be closed and checks if there’s room for the new amountValidateSpendRequest(SpendRequestNo: Code[20]; var SpendRequestclose: Boolean): Validates that the spendrequest is approved and asks if should be closedSetSkipSpendRequestClose(NewSkipSpendRequestClose: Boolean): Sets whether the confirmation to close the spend request should be skipped during validation. When set to true, ValidateSpendRequest does not prompt to close the spend request.CheckSpendRequestAmount(SpendRequestNo: Code[20]; NewAmountLCY: Decimal): Checks if there’s room for the new amount (absolute value)
Plus 2 local procedures.
Triggers
OnInsert, OnDelete
Relations
- G/L Account No.: TableRelation Table 15 “G/L Account”
- Shortcut Dimension 1 Code: TableRelation Table 349 “Dimension Value”
- Shortcut Dimension 2 Code: TableRelation Table 349 “Dimension Value”
- Currency Code: TableRelation Table 4 “Currency”
- Dimension Set ID: TableRelation Table 480 “Dimension Set Entry”
- Requested By: TableRelation Table 5200 “Employee”
- Total Line Amount (LCY): CalcFormula Table 6841 “Spend Request Detail”
- Total Spent Amount (LCY): CalcFormula Table 6845 “Spend Request To G/L Link”
Referenced by
16 fields in 16 objects relate to this table (TableRelation or CalcFormula).
- Table 122 “Purch. Inv. Header”: Spend Request No.
- Table 123 “Purch. Inv. Line”: Spend Request No.
- Table 124 “Purch. Cr. Memo Hdr.”: Spend Request No.
- Table 181 “Posted Gen. Journal Line”: Spend Request No.
- Table 38 “Purchase Header”: Spend Request No.
- Table 39 “Purchase Line”: Spend Request No.
- Table 5109 “Purchase Header Archive”: Spend Request No.
- Table 5110 “Purchase Line Archive”: Spend Request No.
- Table 6841 “Spend Request Detail”: Spend Request No.
- Table 6845 “Spend Request To G/L Link”: Spend Request No.
- Table 6906 “Expense Report Header”: Spend Request No.
- Table 6907 “Expense Report Line”: Spend Request No.
- Table 6915 “Posted Expense Report Header”: Spend Request No.
- Table 6916 “Posted Expense Report Line”: Spend Request No.
- Table 6938 “Traveler”: Spend Request No.
- Table 81 “Gen. Journal Line”: Spend Request No.
Pages and codeunits on this table
- Page 6840 “Spend Request List” (source table)
- Page 6841 “Spend Request Card” (source table)
- Page 7099 “Spend Requests API” (source table)
- Page 7129 “Travel Request Card” (source table)
- Page 7134 “Travel Requests API” (source table)
- Page 7136 “Travel Request List” (source table)
- Codeunit 6840 “Release Spend Request” (codeunit runs on it)
Extended by
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” (4 calls:
CreateDim → GetRecDefaultDimID,InitDefaultDimensionSources → AddDimSource,ShowDocDim → EditDimensionSet, …) - Page 456 “No. Series” (2 calls:
AssistEditNo → (object),OnInsert → (object)) - Codeunit 1511 “Notification Lifecycle Mgt.” (1 call:
CheckSpendRequestAmount → SendNotification)
Recent changes
- 2026-09-23 #11595 [Master] Bug 650348: [Expense Agent] Closed travel requests are editable and are missing approver info. (main, BC30, fix)
- 2026-09-23 #11593 [29.x] - Bug 650481[Expense Agent] Closed travel requests are editable and are missing approver info. (releases/29.x, BC29, fix)
- 2026-09-17 #11333 Align travel request APIs with employee travelers and expense report lifecycle (main, BC30, feature)
- 2026-09-09 #11150 Deliverable 638799: Requisitions in Base App: Missed dataclassification on user field (main, BC30, fix)
- 2026-09-08 #11153 Bug 649312: [29.x] Backport expense request report layout and dataclassification on userid field (releases/29.x, BC29, fix)
- 2026-09-03 #10404 Deliverable 638799: Requisitions in Base App - add layout to report + minor fixes (main, BC30, feature)
- 2026-08-12 #10049 Removed the ReplicateData=false property (main, BC30, fix)
- 2026-08-10 #9391 [Master] - Slice 616928: [Expense Management] [App part] Expense Managements Travel Requisitions 💸 (main, BC30, feature)
- 2026-07-31 #8959 Deliverable 638799: Spend Requests in Base App (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: "Spend Request"), then bcatlas_get_procedure_body or bcatlas_get_neighbors on the returned id.