R_EnterpriseProjectTimeSheet

DDL: R_ENTERPRISEPROJECTTIMESHEET Type: view_entity COMPOSITE Package: ODATA_PPM_PRO_CTRL_PROFNL_SRVC

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)

SourceAliasJoin 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)

CardinalityTargetAliasCondition
[1] I_EnterpriseProject _EnterpriseProject _EnterpriseProject.ProjectUUID = $projection.ProjectUUID

Annotations (9)

NameValueLevelField
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)

KeyFieldSource TableSource FieldDescription
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