---
id: object/page/974
type: object
title: Page 974 "Time Sheet Lines Subform"
summary: Page 974 "Time Sheet Lines Subform" in Base Application (Microsoft.Projects.TimeSheet). 4 public procedures, 10 events. Present since at least BC23, still in BC30, changed in BC24, BC26.
tier: official
language: en
tags:
  - page
  - base application
versions:
  introduced: null
  last_changed: "26"
  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: 88a369269c0d1fea645568a3f9db136c537358f5049df6e28c1a6ee93465ac2d
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Projects/TimeSheet/TimeSheetLinesSubform.Page.al
    title: src/Layers/W1/BaseApp/Projects/TimeSheet/TimeSheetLinesSubform.Page.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn: []
  objects: []
  features: []
  topics: []
  localizations: []
  videos: []
  posts: []
  guidelines: []
object_type: page
object_id: 974
name: Time Sheet Lines Subform
caption: Lines
namespace: Microsoft.Projects.TimeSheet
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"
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 0
  procedures: 29
  events: 10
  subscribers: 0
  controls: 19
  actions: 9
relations:
  out: 1
  referenced_by: 0
  pages: 0
  extended_by: 1
  event_subscribers: 0
  calls: 3
  called_by: 0
  implements: 0
---

# Page 974 "Time Sheet Lines Subform"

> Page 974 "Time Sheet Lines Subform" in Base Application (Microsoft.Projects.TimeSheet). 4 public procedures, 10 events. Present since at least BC23, still in BC30, changed in BC24, BC26.

Base Application · Microsoft.Projects.TimeSheet · captioned "Lines" · BC23-30 · [source at ea08af5e](https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Projects/TimeSheet/TimeSheetLinesSubform.Page.al) · facts from BC29

## Properties

| Property | Value |
|---|---|
| Caption | Lines |
| SourceTable | Time Sheet Line |
| PageType | ListPart |

## Fields on this page

Layout controls in source order, grouped by the container they sit in. Shows: the table field a control is bound to (or its expression as written); ToolTip: the control's own, else the bound field's (marked).

| Group | Control | Shows | ToolTip |
|---|---|---|---|
| Control1 | Type | [Type](../table/951.md#fields) | Specifies the type of time sheet line. <small>from the table field</small> |
|  | Status | [Status](../table/951.md#fields) | Specifies information about the status of a time sheet line. <small>from the table field</small> |
|  | Description | [Description](../table/951.md#fields) | Specifies a description of the time sheet line. <small>from the table field</small> |
|  | Job No. | [Job No.](../table/951.md#fields) | Specifies the number for the project that is associated with the time sheet line. <small>from the table field</small> |
|  | Job Task No. | [Job Task No.](../table/951.md#fields) | Specifies the number of the related project task. <small>from the table field</small> |
|  | Cause of Absence Code | [Cause of Absence Code](../table/951.md#fields) | Specifies a list of standard absence codes, from which you may select one. <small>from the table field</small> |
|  | Chargeable | [Chargeable](../table/951.md#fields) | Specifies if the usage that you are posting is chargeable. <small>from the table field</small> |
|  | Work Type Code | [Work Type Code](../table/951.md#fields) | Specifies which work type the resource applies to. Prices are updated based on this entry. <small>from the table field</small> |
|  | Assembly Order No. | [Assembly Order No.](../table/951.md#fields) | Specifies the assembly order number that is associated with the time sheet line. <small>from the table field</small> |
|  | Field1 | `CellData[1]` | Specifies the number of hours registered for this day. |
|  | Field2 | `CellData[2]` | Specifies the number of hours registered for this day. |
|  | Field3 | `CellData[3]` | Specifies the number of hours registered for this day. |
|  | Field4 | `CellData[4]` | Specifies the number of hours registered for this day. |
|  | Field5 | `CellData[5]` | Specifies the number of hours registered for this day. |
|  | Field6 | `CellData[6]` | Specifies the number of hours registered for this day. |
|  | Field7 | `CellData[7]` | Specifies the number of hours registered for this day. |
|  | Total | [Total Quantity](../table/951.md#fields) | Specifies the total number of hours that have been entered on a time sheet. <small>from the table field</small> |
| GroupTotal | Unit of Measure | `UnitOfMeasureCode` | Specifies the unit of measure for the time sheet. |
|  | Total | `GetTimeSheetTotalQuantity()` | Specifies the total number of hours that are registered on the time sheet. |

## Actions

| Group | Action | ToolTip | Runs |
|---|---|---|---|
| Line | Submit | Submit the time sheet line for approval. Line must have a Type defined. |  |
|  | Reopen | Reopen the time sheet line, for example, after it has been rejected. Line must have a Type defined. The approver of a time sheet has permission to approve, reject, or reopen a time sheet. The approver can also submit a time sheet for approval. |  |
|  | Approve | Approve the lines on the time sheet. Each line must have a Type defined. |  |
|  | Reject | Reject the lines on the time sheet. Each line must have a Type defined. |  |
|  | Reopen | Reopen the approved or rejected time sheet line. Line must have a Type defined. |  |
|  | Time Sheet Allocation | Allocate posted hours among days of the week on a time sheet. |  |
|  | Activity Details | View the quantity of hours for each time sheet status. |  |
|  | Dimensions | View or edit dimensions, such as area, project, or department, that you can assign to sales and purchase documents to distribute costs and analyze transaction history. |  |
|  | Comments | View or create comments. | [Page 955 "Time Sheet Comment Sheet"](../page/955.md) |

## Events published

- `OnAfterGetTimeSheetHeader(var TimeSheetHeader: Record "Time Sheet Header")` (integration)
- `OnAfterFilterLines(var TimeSheetLine: Record "Time Sheet Line"; ActionType: Option Submit,ReopenSubmitted,Approve,ReopenApproved,Reject; ProcessAll: Boolean)` (integration)
- `OnAfterProcess(var TimeSheetLine: Record "Time Sheet Line"; Action: Option "Submit Selected","Submit All","Reopen Selected","Reopen All"; ProcessAll: Boolean)` (integration)
- `OnBeforeReopenSubmittedLines(var TimeSheetLine: Record "Time Sheet Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeReopenApprovedLines(var TimeSheetLine: Record "Time Sheet Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeSubmitLines(var TimeSheetLine: Record "Time Sheet Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeApproveLines(var TimeSheetLine: Record "Time Sheet Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeRejectLines(var TimeSheetLine: Record "Time Sheet Line"; var IsHandled: Boolean)` (integration)
- `OnValidateQuantityOnBeforeModifyTimeSheetDetail(var TimeSheetDetail: Record "Time Sheet Detail"; TimeSheetLine: Record "Time Sheet Line")` (integration)
- `OnProcessOnBeforeProcessTimeSheetLines(var TimeSheetLine: Record "Time Sheet Line"; var TempTimeSheetLine: Record "Time Sheet Line" temporary; Action: Option Submit,ReopenSubmitted,Approve,ReopenApproved,Reject; ProcessAll: Boolean)` (integration)

## Procedures

- `SetManagerTimeSheetMode()`
- `SetColumns(TimeSheetNo: Code[20])`
- `ValidateQuantity(ColumnNo: Integer)`
- `Process(ActionType: Option Submit,ReopenSubmitted,Approve,ReopenApproved,Reject; ProcessAll: Boolean)`

Plus 15 local procedures.

## Triggers

OnAfterGetRecord, OnAfterGetCurrRecord, OnOpenPage, OnNewRecord

## Relations

- source table [Table 951 "Time Sheet Line"](../table/951.md)

## Extended by

- [Page extension 6487 "Serv. Timesheet Lines Subf."](../pageextension/6487.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 951 "Time Sheet Approval Management"](../codeunit/951.md) (9 calls: `ApproveLines → ApproveIfConfirmed`, `GetDialogText → GetCommonTimeSheetActionDialogText`, `Process → NoTimeSheetLinesToProcess`, …)
- [Codeunit 950 "Time Sheet Management"](../codeunit/950.md) (5 calls: `FilterAllLines → FilterAllTimeSheetLines`, `OnOpenPage → CheckTimeSheetLineFieldsVisible`, `Process → CopyFilteredTimeSheetLinesToBuffer`, …)
- [Codeunit 4030 "Client Type Management"](../codeunit/4030.md) (1 call: `IsPhone → GetCurrentClientType`)

## Across versions

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

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: "page", object_name: "Time Sheet Lines Subform")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
