I_TimeSheetMissingHoursByUser

DDL: I_TIMESHEETMISSINGHOURSBYUSER Type: view_entity COMPOSITE Package: VDM_TIMESHEET_CORE

Timesheet missing hours by user

I_TimeSheetMissingHoursByUser is a Composite CDS View that provides data about "Timesheet missing hours by user" in SAP S/4HANA. It reads from 2 data sources (I_BusinessUserBasic, I_WorkAssignmentKeyMapping) and exposes 7 fields with key fields WorkAssignmentExternalID, Country2DigitISOCode, CalendarDate. It has 1 association to related views. Part of development package VDM_TIMESHEET_CORE.

Data Sources (2)

SourceAliasJoin Type
I_BusinessUserBasic BusinessUser from
I_WorkAssignmentKeyMapping Workforce left_outer

Associations (1)

CardinalityTargetAliasCondition
[0..1] I_WrkFrcPersnMainEmployment _MainEmployment _MainEmployment.MainEmployment = Workforce.WorkAssignmentExternalID and _MainEmployment.WorkAssignmentStartDate = Workforce.WorkAssignmentStartDate

Annotations (8)

NameValueLevelField
AccessControl.authorizationCheck #MANDATORY view
AccessControl.personalData.blocking #NOT_REQUIRED view
VDM.viewType #COMPOSITE view
ObjectModel.usageType.serviceQuality #D view
ObjectModel.usageType.sizeCategory #XL view
ObjectModel.usageType.dataClass #MIXED view
EndUserText.label Timesheet missing hours by user view
Metadata.ignorePropagatedAnnotations true view

Fields (7)

KeyFieldSource TableSource FieldDescription
KEY WorkAssignmentExternalID I_WorkAssignmentKeyMapping WorkAssignmentExternalID
KEY Country2DigitISOCode I_WorkAssignmentKeyMapping Country2DigitISOCode
KEY CalendarDate Calendar CalendarDate
AbsenceInHours0asTimeSheetSubmittedHours
TimeSheetMissingHours
NormalWorkingTimeInHours
UserID I_BusinessUserBasic UserID
@AccessControl:{
       authorizationCheck: #MANDATORY,
       personalData.blocking:#NOT_REQUIRED
}
@VDM.viewType: #COMPOSITE
@ObjectModel: {
   usageType: {
     serviceQuality: #D,
     sizeCategory:   #XL,
     dataClass:      #MIXED
   }
}
@EndUserText.label: 'Timesheet missing hours by user'
@Metadata.ignorePropagatedAnnotations: true

define view entity I_TimeSheetMissingHoursByUser
  as select from            I_BusinessUserBasic            as BusinessUser
    left outer join         I_WorkAssignmentKeyMapping     as Workforce    on Workforce.BusinessPartner = BusinessUser.BusinessPartner
    left outer to many join I_CalendarDate                 as Calendar     on  Calendar.CalendarDate >= Workforce.WorkAssignmentStartDate
                                                                           and Calendar.CalendarDate <= Workforce.WorkAssignmentEndDate
    left outer to one join  I_TimeSheetHoursByUserAndDate  as TimeSheet    on  Calendar.CalendarDate = TimeSheet.TimeSheetDate
                                                                           and BusinessUser.UserID   = TimeSheet.UserID
    left outer to one join  I_WorkforceAvailyByUserAndDate as WrkfrcAvaily on  Calendar.CalendarDate = WrkfrcAvaily.CalendarDate
                                                                           and BusinessUser.UserID   = WrkfrcAvaily.UserID
  association [0..1] to I_WrkFrcPersnMainEmployment as _MainEmployment on  _MainEmployment.MainEmployment          = Workforce.WorkAssignmentExternalID
                                                                       and _MainEmployment.WorkAssignmentStartDate = Workforce.WorkAssignmentStartDate

{

  key    Workforce.WorkAssignmentExternalID                                                  as WorkAssignmentExternalID,
  key    Workforce.Country2DigitISOCode                                                      as Country2DigitISOCode,
  key    Calendar.CalendarDate                                                               as CalendarDate,

         coalesce(TimeSheet.TimeSheetSubmittedForApprvlHrs, 0) +
         coalesce(TimeSheet.TimeSheetApprovedHours, 0) +
         coalesce(WrkfrcAvaily.AbsenceInHours, 0)                                            as TimeSheetSubmittedHours,

         coalesce(WrkfrcAvaily.PlannedWorkingHours, 0) - $projection.TimeSheetSubmittedHours as TimeSheetMissingHours,

         coalesce(WrkfrcAvaily.PlannedWorkingHours, 0)                                       as NormalWorkingTimeInHours,

         case
         when Workforce.IsContingentWorker = 'X'
         then cast( 'S4H_EXT' as catsvarian )
         else cast( 'S4H_INT' as catsvarian )
         end                                                                                 as TimeSheetDataEntryProfile,

         BusinessUser.UserID                                                                 as UserID,

         @Semantics.booleanIndicator:true
         case _MainEmployment.MainEmployment
         when Workforce.WorkAssignmentExternalID then 'X'
         else ''
         end                                                                                 as WorkforceAssignmentIsPrimary
}