R_EnterpriseProjectTimeSheet
Enterprise Project Time Sheet
R_EnterpriseProjectTimeSheet is a Composite CDS View that provides data about "Enterprise Project Time Sheet" in SAP S/4HANA. It reads from 6 data sources and exposes 24 fields with key fields ProjectUUID, ReferencedObjectUUID, WBSElementInternalID, ActivityType, WorkAssignment. It has 1 association to related views. Part of development package ODATA_PPM_PRO_CTRL_PROFNL_SRVC.
Data Sources (6)
| Source | Alias | Join Type |
|---|---|---|
| R_ProjDmndResourceAssignment | Assignment | inner |
| R_ProjectDemand | Demand | inner |
| R_EnterpriseProjectElement | ProjectElement | inner |
| R_EnterpriseProjectElement | ProjectElement | inner |
| R_TimeSheet | TimeSheet | from |
| R_ProjectDemandWork | Work | union |
Associations (1)
| Cardinality | Target | Alias | Condition |
|---|---|---|---|
| [1] | I_EnterpriseProject | _EnterpriseProject | _EnterpriseProject.ProjectUUID = $projection.ProjectUUID |
Annotations (9)
| Name | Value | Level | Field |
|---|---|---|---|
| EndUserText.label | Enterprise Project Time Sheet | view | |
| AccessControl.authorizationCheck | #MANDATORY | view | |
| AccessControl.personalData.blocking | #REQUIRED | view | |
| Metadata.ignorePropagatedAnnotations | true | view | |
| ObjectModel.usageType.serviceQuality | #C | view | |
| ObjectModel.usageType.sizeCategory | #XL | view | |
| ObjectModel.usageType.dataClass | #TRANSACTIONAL | view | |
| VDM.viewType | #COMPOSITE | view | |
| VDM.lifecycle.contract.type | #SAP_INTERNAL_API | view |
Fields (24)
| Key | Field | Source Table | Source Field | Description |
|---|---|---|---|---|
| KEY | ProjectUUID | R_TimeSheet | ProjectUUID | |
| KEY | ReferencedObjectUUID | R_EnterpriseProjectElement | ProjectElementUUID | |
| KEY | WBSElementInternalID | R_TimeSheet | WBSElementInternalID | |
| KEY | ActivityType | R_TimeSheet | ActivityType | |
| KEY | WorkAssignment | R_TimeSheet | WorkAssignment | |
| KEY | WorkItem | R_TimeSheet | WorkItem | |
| KEY | BillableControl | R_TimeSheet | BillableControl | |
| HoursUnitOfMeasure | R_TimeSheet | HoursUnitOfMeasure | ||
| ProjectElement | R_EnterpriseProjectElement | ProjectElement | ||
| ProjectElementDescription | R_EnterpriseProjectElement | ProjectElementDescription | ||
| LeadingSalesOrder | R_EnterpriseProjectElement | LeadingSalesOrder | ||
| LeadingSalesOrderItem | R_EnterpriseProjectElement | LeadingSalesOrderItem | ||
| ProjectUUID | ||||
| KEY | ReferencedObjectUUID | R_ProjectDemandWork | ReferencedObjectUUID | |
| KEY | WBSElementInternalID | R_EnterpriseProjectElement | WBSElementInternalID | |
| KEY | ActivityType | R_ProjectDemandWork | ActivityType | |
| KEY | WorkAssignment | R_ProjDmndResourceAssignment | ProjDmndRsceAssgmt | |
| KEY | WorkItem | R_ProjectDemandWork | ProjectElementWorkItem | |
| HoursUnitOfMeasure | ||||
| ProjectElement | R_EnterpriseProjectElement | ProjectElement | ||
| ProjectElementDescription | R_EnterpriseProjectElement | ProjectElementDescription | ||
| LeadingSalesOrder | R_EnterpriseProjectElement | LeadingSalesOrder | ||
| LeadingSalesOrderItem | R_EnterpriseProjectElement | LeadingSalesOrderItem | ||
| _EnterpriseProject | _EnterpriseProject |
@AbapCatalog.viewEnhancementCategory: [#NONE]
@EndUserText.label: 'Enterprise Project Time Sheet'
@AccessControl: {
authorizationCheck: #MANDATORY,
personalData.blocking: #REQUIRED
}
@Metadata.ignorePropagatedAnnotations: true
@ObjectModel.usageType:{
serviceQuality: #C,
sizeCategory: #XL,
dataClass: #TRANSACTIONAL
}
@VDM.viewType: #COMPOSITE
@VDM.lifecycle.contract.type: #SAP_INTERNAL_API
// This CDS is designed to provide unique combination of WBS, Activity, Worker, Work item and Billable control
// Will provide the resources for which time is recorded (Unstaffed and Confirmed resources)
define view entity R_EnterpriseProjectTimeSheet
as select from R_TimeSheet as TimeSheet
inner join R_EnterpriseProjectElement as ProjectElement on TimeSheet.WBSElementInternalID = ProjectElement.WBSElementInternalID
association [1] to I_EnterpriseProject as _EnterpriseProject on _EnterpriseProject.ProjectUUID = $projection.ProjectUUID
{
key TimeSheet.ProjectUUID,
key ProjectElement.ProjectElementUUID as ReferencedObjectUUID,
key TimeSheet.WBSElementInternalID,
key TimeSheet.ActivityType,
key TimeSheet.WorkAssignment,
key TimeSheet.WorkItem,
key TimeSheet.BillableControl,
TimeSheet.HoursUnitOfMeasure,
ProjectElement.ProjectElement,
ProjectElement.ProjectElementDescription,
ProjectElement.LeadingSalesOrder,
ProjectElement.LeadingSalesOrderItem,
// Association
_EnterpriseProject
}
where
ProjectElement.WBSElementIsBillingElement = ''
and(
TimeSheet.TimeSheetStatus = '10' // In process
or TimeSheet.TimeSheetStatus = '20' // Sent for approval
or TimeSheet.TimeSheetStatus = '30' // Approved
)
group by
TimeSheet.WBSElementInternalID,
TimeSheet.ActivityType,
TimeSheet.WorkAssignment,
TimeSheet.WorkItem,
TimeSheet.BillableControl,
TimeSheet.HoursUnitOfMeasure,
TimeSheet.ProjectUUID,
ProjectElement.ProjectElementUUID,
ProjectElement.ProjectElement,
ProjectElement.ProjectElementDescription,
ProjectElement.LeadingSalesOrder,
ProjectElement.LeadingSalesOrderItem
union
// Will provide the resources which are confirmed but time is not yet recorded
select from R_ProjectDemandWork as Work
inner join R_ProjectDemand as Demand on Demand.ProjectUUID = Work.ProjectUUID
and Demand.ReferencedObjectUUID = Work.ReferencedObjectUUID
and Demand.ProjectDemandUUID = Work.ProjectDemandUUID
inner join R_ProjDmndResourceAssignment as Assignment on Assignment.ProjectUUID = Work.ProjectUUID
and Assignment.ReferencedObjectUUID = Work.ReferencedObjectUUID
and Assignment.ProjectDemandWorkUUID = Work.ProjectDemandWorkUUID
inner join R_EnterpriseProjectElement as ProjectElement on ProjectElement.ProjectUUID = Work.ProjectUUID
and ProjectElement.ProjectElementUUID = Work.ReferencedObjectUUID
association [1] to I_EnterpriseProject as _EnterpriseProject on _EnterpriseProject.ProjectUUID = $projection.ProjectUUID
{
key Work.ProjectUUID,
key Work.ReferencedObjectUUID,
key ProjectElement.WBSElementInternalID,
key Work.ActivityType,
key Assignment.ProjDmndRsceAssgmt as WorkAssignment,
key Work.ProjectElementWorkItem as WorkItem,
key case Work.ProjDmndBillingControlCategory
when 'NON_BILL' then 'S1' else '' end as BillableControl,
cast( 'H' as meinh ) as HoursUnitOfMeasure,
ProjectElement.ProjectElement,
ProjectElement.ProjectElementDescription,
ProjectElement.LeadingSalesOrder,
ProjectElement.LeadingSalesOrderItem,
// Association
_EnterpriseProject
}
where
ProjectElement.WBSElementIsBillingElement = ''
and Assignment.ProjDmndRsceAssgmt <> '00000000'
and Demand.ProjectDemandCategory = '03'
and Demand.ProjectDemandType = 'S302'
group by
ProjectElement.WBSElementInternalID,
Work.ActivityType,
Assignment.ProjDmndRsceAssgmt,
Work.ProjectElementWorkItem,
Work.ProjDmndBillingControlCategory,
Work.ProjectUUID,
Work.ReferencedObjectUUID,
ProjectElement.ProjectElement,
ProjectElement.ProjectElementDescription,
ProjectElement.LeadingSalesOrder,
ProjectElement.LeadingSalesOrderItem
Learn More
- What Is a CDS View in SAP S/4HANA?
- Types of CDS Views: Basic, Composite, Consumption, and Transactional
- SAP Tables vs CDS Views — Key Differences
- Understanding Data Lineage in SAP S/4HANA
- VDM (Virtual Data Model) in SAP S/4HANA Explained
- CDS View Annotations — A Complete Guide
- CDS View Field Mapping and Associations
- Understanding the SAP S/4HANA Data Model
- CDS View Extensions and Custom Fields in SAP S/4HANA
- Released APIs and Stability Contracts in SAP S/4HANA