P_TimeShtHrsAnlysForProjects

DDL: P_TIMESHTHRSANLYSFORPROJECTS Type: view COMPOSITE Package: CPD_CDS

Staffing - Timesheet Analysis of Hours spent in Projects

P_TimeShtHrsAnlysForProjects is a Composite CDS View that provides data about "Staffing - Timesheet Analysis of Hours spent in Projects" in SAP S/4HANA. It reads from 2 data sources (I_TimeSheetRecord, I_WBSElementBasicData) and exposes 24 fields. Part of development package CPD_CDS.

Data Sources (2)

SourceAliasJoin Type
I_TimeSheetRecord A from
I_WBSElementBasicData B inner

Annotations (13)

NameValueLevelField
AbapCatalog.sqlViewName PTSANLYS4PROJ view
AbapCatalog.preserveKey true view
AbapCatalog.compiler.compareFilter true view
AccessControl.authorizationCheck #NOT_REQUIRED view
AccessControl.personalData.blocking #BLOCKED_DATA_EXCLUDED view
ClientHandling.algorithm #SESSION_VARIABLE view
Metadata.ignorePropagatedAnnotations true view
ObjectModel.usageType.serviceQuality #B view
ObjectModel.usageType.sizeCategory #XL view
ObjectModel.usageType.dataClass #TRANSACTIONAL view
VDM.private true view
VDM.lifecycle.contract.type #NONE view
VDM.viewType #COMPOSITE view

Fields (24)

KeyFieldSource TableSource FieldDescription
TimeSheetRecord I_TimeSheetRecord TimeSheetRecord
PersonWorkAgreement I_TimeSheetRecord PersonWorkAgreement
ActivityType I_TimeSheetRecord ActivityType
WorkItem I_TimeSheetRecord WorkItem
WBSElementInternalID I_TimeSheetRecord WBSElementInternalID
FiscalYearPeriod
FiscalYear
FiscalPeriod
TimeSheetDate I_TimeSheetRecord TimeSheetDate
PurchaseOrder I_TimeSheetRecord PurchaseOrder
PurchaseOrderItem I_TimeSheetRecord PurchaseOrderItem
ServiceDocumentType I_TimeSheetRecord ServiceDocumentType
ServiceDocument I_TimeSheetRecord ServiceDocument
ServiceDocumentItem I_TimeSheetRecord ServiceDocumentItem
TimeSheetStatus I_TimeSheetRecord TimeSheetStatus
TimeSheetPredecessorRecord I_TimeSheetRecord TimeSheetPredecessorRecord
AccountingIndicatorCode I_TimeSheetRecord AccountingIndicatorCode
HoursUnitOfMeasure I_TimeSheetRecord HoursUnitOfMeasure
quan82endasRecordedHours
quan82endasUnapprovedHours
quan82endasApprovedHours
WBSElement I_WBSElementBasicData WBSElement
Project
ProjectProfileCode
@AbapCatalog: {
  sqlViewName: 'PTSANLYS4PROJ',
  preserveKey: true,
  compiler.compareFilter: true
}
@AccessControl: {
  authorizationCheck: #NOT_REQUIRED,
  personalData.blocking: #BLOCKED_DATA_EXCLUDED
}
@ClientHandling.algorithm: #SESSION_VARIABLE
//@EndUserText.label: 'Staffing - Timesheet Analysis of Hours spent in Projects'

@Metadata.ignorePropagatedAnnotations: true
@ObjectModel.usageType: {
  serviceQuality: #B,
  sizeCategory: #XL,
  dataClass: #TRANSACTIONAL
}
@VDM: {
  private: true,
  lifecycle.contract.type: #NONE,
  viewType: #COMPOSITE
}
define view P_TimeShtHrsAnlysForProjects as select from I_TimeSheetRecord as A
//      left outer join I_PurchaseOrderItemAPI01 as C

//      on A.PurchaseOrder = C.PurchaseOrder

//      and A.PurchaseOrderItem = C.PurchaseOrderItem

      inner join I_WBSElementBasicData as B
      on A.WBSElementInternalID = B.WBSElementInternalID {
A.TimeSheetRecord,
A.PersonWorkAgreement,
//case when A.ActivityType = '' then C.Material,

//else A.ActivityType end as ActivityType,

A.ActivityType,
A.WorkItem,
A.WBSElementInternalID,
concat(left(A.TimeSheetDate, 4), concat('0', substring(A.TimeSheetDate, 5, 2))) as FiscalYearPeriod,
left(A.TimeSheetDate, 4) as FiscalYear,
concat('0', substring(A.TimeSheetDate, 5, 2)) as FiscalPeriod,
A.TimeSheetDate,
A.PurchaseOrder,
A.PurchaseOrderItem,
A.ServiceDocumentType,
A.ServiceDocument,
A.ServiceDocumentItem,
A.TimeSheetStatus,
A.TimeSheetPredecessorRecord,
A.AccountingIndicatorCode,
A.HoursUnitOfMeasure,
case when A.TimeSheetStatus = '10' or A.TimeSheetStatus = '20' or A.TimeSheetStatus = '30' then A.RecordedHours
else cast(0 as abap.quan( 8, 2 )) end as RecordedHours,

case when A.TimeSheetStatus = '20' then A.RecordedHours
else cast(0 as abap.quan( 8, 2 )) end as UnapprovedHours,

case when A.TimeSheetStatus = '30' then A.RecordedHours
else cast(0 as abap.quan( 8, 2 )) end as ApprovedHours,

B.WBSElement,
B._Project.Project,
B._Project.ProjectProfileCode
}   where ( A.TimeSheetStatus = '10' or A.TimeSheetStatus = '20' or A.TimeSheetStatus = '30' )
    and A.ServiceDocumentType = ''
    and A.ServiceDocument = '' and A.ServiceDocumentItem = '000000'
//    and ( B._Project.ProjectProfileCode = 'P001' or B._Project.ProjectProfileCode = 'P002' )