Table 454 "Approval Entry"
Base Application · System.Automation
Across versions
- BC23present
- BC241 events changed
- BC25unchanged
- BC261 procedures changed
- BC271 fields changed
- BC283 fields added, 2 fields changed
- BC29-30unchanged
Neighbourhood 20 connected objects and pages
Base Application · System.Automation · BC23-30 · source at ea08af5e · facts from BC29
Learn documents this table through its pages: Page 30094 “APIV2 - Approval Entries” (2 Learn pages), Page 654 “Requests to Approve” (1), Page 662 “Approval Request Entries” (1).
Properties
| Property | Value |
|---|---|
| Caption | Approval Entry |
| DataClassification | CustomerContent |
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 | Table ID | Integer | Specifies the ID of the table where the record that is subject to approval is stored. via Page 658 “Approval Entries” | |
| 2 | Document Type | Enum “Approval Document Type” | Specifies the type of document that an approval entry has been created for. Approval entries can be created for six different types of sales or purchase documents: via Page 658 “Approval Entries” | enum Enum 454 “Approval Document Type” |
| 3 | Document No. | Code[20] | Specifies the document number copied from the relevant sales or purchase document, such as a purchase order or a sales quote. via Page 658 “Approval Entries” | |
| 4 | Sequence No. | Integer | Specifies the order of approvers when an approval workflow involves more than one approver. via Page 658 “Approval Entries” | |
| 5 | Approval Code | Code[20] | — | |
| 6 | Sender ID | Code[50] | Specifies the ID of the user who sent the approval request for the document to be approved. via Page 654 “Requests to Approve” | TableRelation User.“User Name”; DataClassification EndUserIdentifiableInformation |
| 7 | Salespers./Purch. Code | Code[20] | Specifies the code for the salesperson or purchaser that was in the document to be approved. It is not a mandatory field, but is useful if a salesperson or a purchaser responsible for the customer/vendor needs to approve the document before it is processed. via Page 658 “Approval Entries” | |
| 8 | Approver ID | Code[50] | Specifies the ID of the user who must approve the document. via Page 658 “Approval Entries” | TableRelation User.“User Name”; DataClassification EndUserIdentifiableInformation |
| 9 | Status | Enum “Approval Status” | Specifies the approval status for the entry: via Page 654 “Requests to Approve” | enum Enum 455 “Approval Status” |
| 10 | Date-Time Sent for Approval | DateTime | Specifies the date and the time that the document was sent for approval. via Page 658 “Approval Entries” | |
| 11 | Last Date-Time Modified | DateTime | Specifies the date when the approval entry was last modified. If, for example, the document approval is canceled, this field will be updated accordingly. via Page 658 “Approval Entries” | |
| 12 | Last Modified By User ID | Code[50] | Specifies the ID of the user who last modified the approval entry. If, for example, the document approval is canceled, this field will be updated accordingly. via Page 658 “Approval Entries” | TableRelation User.“User Name”; DataClassification EndUserIdentifiableInformation |
| 13 | Comment | Boolean | Specifies whether there are comments relating to the approval of the record. If you want to read the comments, choose the field to open the Approval Comment Sheet window. via Page 654 “Requests to Approve” | FlowField: exist(“Approval Comment Line” where(“Table ID” = field(“Table ID”), “Record ID to Approve” = field(“Record ID to Approve”), “Workflow Step Instance ID” = field(“Workflow Step Instance ID”))); not editable |
| 14 | Due Date | Date | Specifies when the record must be approved, by one or more approvers. via Page 654 “Requests to Approve” | |
| 15 | Amount | Decimal | Specifies the total amount (excl. VAT) on the document awaiting approval. via Page 654 “Requests to Approve” | |
| 16 | Amount (LCY) Δ BC28 | Decimal | Specifies the total amount in LCY (excl. VAT) on the document awaiting approval. via Page 654 “Requests to Approve” | |
| 17 | Currency Code | Code[10] | Specifies the code of the currency of the amounts on the sales or purchase lines. via Page 654 “Requests to Approve” | TableRelation Table 4 “Currency” |
| 18 | Approval Type | Enum “Workflow Approval Type” | Specifies which approvers apply to this approval template: via Page 658 “Approval Entries” | enum Enum 458 “Workflow Approval Type” |
| 19 | Limit Type | Enum “Workflow Approval Limit Type” | Specifies the type of limit that applies to the approval template: via Page 658 “Approval Entries” | enum Enum 457 “Workflow Approval Limit Type” |
| 20 | Available Credit Limit (LCY) Δ BC27 Δ BC28 | Decimal | Specifies the remaining credit (in LCY) that exists for the customer. via Page 658 “Approval Entries” | |
| 21 | Pending Approvals | Integer | — | FlowField: count(“Approval Entry” where(“Record ID to Approve” = field(“Record ID to Approve”), Status = filter(Created | Open), “Workflow Step Instance ID” = field(“Workflow Step Instance ID”))) |
| 22 | Record ID to Approve | RecordID | — | |
| 23 | Delegation Date Formula | DateFormula | — | |
| 26 | Number of Approved Requests | Integer | — | FlowField: count(“Approval Entry” where(“Record ID to Approve” = field(“Record ID to Approve”), Status = filter(Approved), “Workflow Step Instance ID” = field(“Workflow Step Instance ID”))) |
| 27 | Number of Rejected Requests | Integer | — | FlowField: count(“Approval Entry” where(“Record ID to Approve” = field(“Record ID to Approve”), Status = filter(Rejected), “Workflow Step Instance ID” = field(“Workflow Step Instance ID”))) |
| 29 | Entry No. | Integer | — | AutoIncrement |
| 30 | Workflow Step Instance ID | Guid | — | |
| 31 | Related to Change | Boolean | — | FlowField: exist(“Workflow - Record Change” where(“Workflow Step Instance ID” = field(“Workflow Step Instance ID”), “Record ID” = field(“Record ID to Approve”))) |
| 32 | Approver Full Name + BC28 | Text[80] | — | FlowField: lookup(User.“Full Name” where(“User Name” = field(“Approver ID”))) |
| 33 | Sender Full Name + BC28 | Text[80] | — | FlowField: lookup(User.“Full Name” where(“User Name” = field(“Sender ID”))) |
| 34 | Salespers./Purch. Name + BC28 | Text[80] | Salespers./Purch. Full Name caption | FlowField: lookup(“Salesperson/Purchaser”.Name where(“Code” = field(“Salespers./Purch. Code”))) |
Keys
- Key1: Entry No. (clustered)
- Key2: Record ID to Approve, Workflow Step Instance ID, Sequence No.
- Key3: Table ID, Document Type, Document No., Sequence No., Record ID to Approve
- Key4: Approver ID, Status, Due Date, Date-Time Sent for Approval
- Key5: Sender ID
- Key6: Due Date
- Key7: Table ID, Record ID to Approve, Status, Workflow Step Instance ID, Sequence No.
- Key8: Table ID, Document Type, Document No., Date-Time Sent for Approval
Events published
OnAfterGetRecordDetails(RecRef: RecordRef; ChangeRecordDetails: Text; var Details: Text)Δ BC24 (integration)OnAfterGetRecordToApprove(ApprovalEntry: Record "Approval Entry"; var RecRef: RecordRef; var Result: Boolean)(integration)OnAfterGetCustVendorDetails(var ApprovalEntry: Record "Approval Entry"; var CustVendorNo: Code[20]; var CustVendorName: Text[100])(integration)OnBeforeMarkAllWhereUserisApproverOrSender(var ApprovalEntry: Record "Approval Entry"; var IsHandled: Boolean)(integration)OnBeforeShowRecord(var ApprovalEntry: Record "Approval Entry"; var IsHandled: Boolean)(integration)OnBeforeRecordDetails(var ApprovalEntry: Record "Approval Entry"; var Details: Text; var IsHandled: Boolean)(integration)OnBeforeRecordCaption(var ApprovalEntry: Record "Approval Entry"; var Result: Text; var IsHandled: Boolean)(integration)
Procedures
GetLastEntryNo(): IntegerΔ BC26ShowRecord()RecordCaption(): TextRecordDetails(): TextIsOverdue(): BooleanGetCustVendorDetails(var CustVendorNo: Code[20]; var CustVendorName: Text[100])GetChangeRecordDetails(): TextCanCurrentUserEdit(): BooleanMarkAllWhereUserisApproverOrSender()
Plus 2 local procedures.
Triggers
OnDelete, OnModify
Relations
- Salespers./Purch. Name: CalcFormula Table 13 “Salesperson/Purchaser”
- Related to Change: CalcFormula Table 1525 “Workflow - Record Change”
- Currency Code: TableRelation Table 4 “Currency”
- Number of Approved Requests: CalcFormula Table 454 “Approval Entry”
- Number of Rejected Requests: CalcFormula Table 454 “Approval Entry”
- Pending Approvals: CalcFormula Table 454 “Approval Entry”
- Comment: CalcFormula Table 455 “Approval Comment Line”
Referenced by
12 fields in 6 objects relate to this table (TableRelation or CalcFormula).
- Table 1572 “Approval Entry Buffer”: Number of Approved Requests, Number of Rejected Requests, Pending Approvals
- Table 454 “Approval Entry”: Number of Approved Requests, Number of Rejected Requests, Pending Approvals
- Table 6220 “Sustainability Cue”: Requests Sent for Approval, Requests to Approve
- Table 9144 “Approvals Activities Cue”: Requests Sent for Approval, Requests to Approve
- Table 38 “Purchase Header”: Pending Approvals
- Table 9070 “Accounting Services Cue”: Requests to Approve
Pages and codeunits on this table
- Page 30094 “APIV2 - Approval Entries” (source table)
- Page 654 “Requests to Approve” (source table)
- Page 658 “Approval Entries” (source table)
- Page 662 “Approval Request Entries” (source table)
- Page 9092 “Approval FactBox” (source table)
- Page 9103 “Pending Approval FactBox” (source table)
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 700 “Page Management” (2 calls:
RecordCaption → GetPageID,ShowRecord → PageRun) - Codeunit 703 “Find Record Management” (1 call:
GetLastEntryNo → GetLastEntryIntFieldValue)
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: "Approval Entry"), then bcatlas_get_procedure_body or bcatlas_get_neighbors on the returned id.