I_PPM_ProjectElementProgress

DDL: I_PPM_PROJECTELEMENTPROGRESS SQL: IPPMPROJELEMPROG Type: view COMPOSITE

Project Elements Progress

I_PPM_ProjectElementProgress is a Composite CDS View that provides data about "Project Elements Progress" in SAP S/4HANA. It reads from 5 data sources (I_EPPMGlobalSetting, I_EnterpriseProjElmntHier, I_PPM_Task, I_PPM_TaskText, I_PPM_Tasktype) and exposes 48 fields with key field TaskUUID. It has 3 associations to related views.

Data Sources (5)

SourceAliasJoin Type
I_EPPMGlobalSetting _GlobalSetting left_outer
I_EnterpriseProjElmntHier Hierarchy left_outer
I_PPM_Task Task from
I_PPM_TaskText TaskText left_outer
I_PPM_Tasktype Tasktype left_outer

Associations (3)

CardinalityTargetAliasCondition
[0..1] I_PPM_SingleResponsibleForObj _ResponsibleBP _ResponsibleBP.ReferencedObjectUUID = $projection.TaskUUID
[0..1] I_WBSElementBasicData _ProjObjRoot ( _ProjObjRoot.WBSElementInternalID = $projection.WBSElementInternalID )
[0..1] I_PPM_Project _Project _Project.ProjectUUID = Task.ProjectUUID

Annotations (12)

NameValueLevelField
EndUserText.label Project Elements Progress view
AbapCatalog.sqlViewName IPPMPROJELEMPROG view
VDM.viewType #COMPOSITE view
AbapCatalog.compiler.compareFilter true view
ClientHandling.algorithm #SESSION_VARIABLE view
AccessControl.authorizationCheck #CHECK view
AccessControl.personalData.blocking #REQUIRED view
ObjectModel.usageType.serviceQuality #D view
ObjectModel.usageType.sizeCategory #XL view
ObjectModel.usageType.dataClass #MIXED view
ObjectModel.representativeKey TaskUUID view
VDM.lifecycle.contract.type #SAP_INTERNAL_API view

Fields (48)

KeyFieldSource TableSource FieldDescription
KEY TaskUUID I_PPM_Task TaskUUID
ProjectUUID I_PPM_Task ProjectUUID
ObjectType I_PPM_Task ObjectType
TaskType I_PPM_Task TaskType
ParentObjectUUID I_EnterpriseProjElmntHier ParentObjectUUID
OrdinalNumber I_EnterpriseProjElmntHier OrdinalNumber
HierarchyNodeLevel I_EnterpriseProjElmntHier HierarchyNodeLevel
ObjectName I_PPM_TaskText ObjectName
IsProjectMilestone
IsSummaryTask
FactoryCalendar I_PPM_Task FactoryCalendar
ProcessingStatus I_PPM_Task TaskProcessingStatus
ProcessingStatusText
StartConstraintType I_PPM_Task StartConstraintType
FinishConstraintType I_PPM_Task FinishConstraintType
LatestStartDateTime I_PPM_Task LatestStartDate
LatestFinishDateTime I_PPM_Task LatestFinishDate
ActualFinishDateTime I_PPM_Task ActualFinishDate
IsMainMilestone I_PPM_Tasktype IsEssentialMilestone
ProjectElementDuration I_PPM_Task ProjectElementDuration
DurationUnit I_PPM_Task DurationUnit
PercentageOfCompletion I_PPM_Task PercentageOfCompletion
RemainingWorkQuantityInSeconds I_PPM_Task RemainingWorkQuantityInSeconds
dec152endasRemainingWorkQuantity
RemainingWorkExtQuantityUnit I_PPM_Task RemainingWorkExtQuantityUnit
RemainingWorkQuantityUnitName
CreatedByUser I_PPM_Task CreatedByUser
CreationDateTime I_PPM_Task CreationDateTime
LastChangedByUser I_PPM_Task LastChangedByUser
LastChangeDateTime I_PPM_Task LastChangeDateTime
CriticalityCode
SeverityText
WBSElementInternalID I_PPM_Task WBSElementInternalID
BusinessPartnerUUID _ResponsibleBP BusinessPartnerUUID
BusinessPartnerName _ResponsibleBP BusinessPartnerName
ProjectRoleUUID _ResponsibleBP ProjectRoleUUID
EmailAddress _ResponsibleBP EmailAddress
MobilePhoneNumber _ResponsibleBP MobilePhoneNumber
AddressPhoneNumber _ResponsibleBP AddressPhoneNumber
ProjectRoleName _ResponsibleBP ProjectRoleName
EPPMSettingsDefaultValue I_EPPMGlobalSetting EPPMSettingsDefaultValue
_BusinessUser _ResponsibleBP _BusinessUser
_AuthUser _AuthUser
_AuthSubst _AuthSubst
_AuthRole _AuthRole
_AuthGroup _AuthGroup
_ProjObjRoot _ProjObjRoot
_Project _Project
@EndUserText.label: 'Project Elements Progress'
@AbapCatalog.sqlViewName: 'IPPMPROJELEMPROG'
@VDM.viewType: #COMPOSITE
@AbapCatalog.compiler.compareFilter: true
@ClientHandling.algorithm: #SESSION_VARIABLE
@AccessControl.authorizationCheck: #CHECK
@AccessControl.personalData.blocking: #REQUIRED

@ObjectModel.usageType.serviceQuality: #D
@ObjectModel.usageType.sizeCategory: #XL
@ObjectModel.usageType.dataClass: #MIXED

@ObjectModel.representativeKey: 'TaskUUID'
@VDM.lifecycle.contract.type:  #SAP_INTERNAL_API
define view I_PPM_ProjectElementProgress
  as select from    I_PPM_Task                  as Task
    left outer join I_PPM_Tasktype              as Tasktype  on Task.TaskType = Tasktype.TaskType
    left outer join I_EnterpriseProjElmntHier as Hierarchy on Task.TaskUUID = Hierarchy.TaskUUID
    left outer join I_PPM_TaskText              as TaskText  on Task.TaskUUID = TaskText.TaskUUID
    left outer join I_EPPMGlobalSetting as _GlobalSetting on _GlobalSetting.EPPMUsageArea = '0007' and _GlobalSetting.EPPMGlobalSettingsCode = '0053'
  association [0..1] to I_PPM_SingleResponsibleForObj as _ResponsibleBP on _ResponsibleBP.ReferencedObjectUUID = $projection.TaskUUID
  // PS Root WBS Element

  association [0..1] to I_WBSElementBasicData         as _ProjObjRoot   on (
       _ProjObjRoot.WBSElementInternalID = $projection.WBSElementInternalID
     )
  association [0..1] to I_PPM_Project as _Project on _Project.ProjectUUID = Task.ProjectUUID

{
  key Task.TaskUUID                                                                                   as TaskUUID,
      Task.ProjectUUID                                                                                as ProjectUUID,
      Task.ObjectType                                                                                 as ObjectType,
      Task.TaskType                                                                                   as TaskType,
      Hierarchy.ParentObjectUUID                                                                      as ParentObjectUUID,
      Hierarchy.OrdinalNumber                                                                         as OrdinalNumber,
      Hierarchy.HierarchyNodeLevel                                                                    as HierarchyNodeLevel,
      TaskText.ObjectName                                                                             as ObjectName,
      case
          when Task.ObjectType <> 'DPO' and Task.ObjectType <> 'PPO' and Task.TotalFloat <= 0 and Task.TaskProcessingStatus <> '40' and Task.TaskProcessingStatus <> '41'
                                        and Task.TaskProcessingStatus <> '42'
            then cast('X' as boolean)
          else cast('' as boolean)
        end                                                                                           as IsCriticalPath,
      cast(Task.IsProjectMilestone as boolean)                                                        as IsProjectMilestone,
      cast(Task.IsSummaryTask as boolean)                                                             as IsSummaryTask,
      Task.FactoryCalendar                                                                            as FactoryCalendar,
      Task.TaskProcessingStatus                                                                       as ProcessingStatus,
      Task._ProcessingStatus._Text[1:Language=$session.system_language].ProcessingStatusText          as ProcessingStatusText,
      Task.StartConstraintType                                                                        as StartConstraintType,
      Task.FinishConstraintType                                                                       as FinishConstraintType,


      // for some reasons someone did not understand the difference between date and date/time, therefor wrong naming in result field!

      Task.LatestStartDate      as LatestStartDateTime,

      // for some reasons someone did not understand the difference between date and date/time, therefor wrong naming in result field!

      Task.LatestFinishDate     as LatestFinishDateTime,

      // for some reasons someone did not understand the difference between date and date/time, therefor wrong naming in result field!

      Task.ForecastedFinishDate as ForecastedFinishDateTime,

      // for some reasons someone did not understand the difference between date and date/time, therefor wrong naming in result field!

      Task.ActualFinishDate     as ActualFinishDateTime,

      Tasktype.IsEssentialMilestone                                                                   as IsMainMilestone,

      Task.ProjectElementDuration                                                                     as ProjectElementDuration,
      Task.DurationUnit                                                                               as DurationUnit,
      Task.PercentageOfCompletion                                                                     as PercentageOfCompletion,
      Task.RemainingWorkQuantityInSeconds                                                             as RemainingWorkQuantityInSeconds,
      case
          when Task.ObjectType <> 'DPO' and Task.ObjectType <> 'PPO' and Task.TaskProcessingStatus <> '40' and Task.TaskProcessingStatus <> '41' and Task.TaskProcessingStatus <> '42'
            then cast(unit_conversion( quantity => Task.RemainingWorkQuantityInSeconds,
                  source_unit => cast( 'S' as abap.unit(3) ),
                  target_unit => Task.RemainingWorkExtQuantityUnit,
                  error_handling => 'KEEP_UNCONVERTED')
                  as abap.dec( 15, 2 ) )
            else cast(0 as abap.dec( 15, 2 ) )
          end                                                                                         as RemainingWorkQuantity,

      Task.RemainingWorkExtQuantityUnit                                                               as RemainingWorkExtQuantityUnit,
      Task._RemainingWorkExtQuantityUnit._Text[1:Language=$session.system_language].UnitOfMeasureName as RemainingWorkQuantityUnitName,
      Task.CreatedByUser                                                                              as CreatedByUser,
      Task.CreationDateTime                                                                           as CreationDateTime,
      Task.LastChangedByUser                                                                          as LastChangedByUser,
      Task.LastChangeDateTime                                                                         as LastChangeDateTime,
      Task._Severity.CriticalityCode                                                                  as CriticalityCode,
      Task._Severity.SeverityText                                                                     as SeverityText,
      Task.WBSElementInternalID,
      _ResponsibleBP.BusinessPartnerUUID                                                              as BusinessPartnerUUID,
      _ResponsibleBP.BusinessPartnerName                                                              as BusinessPartnerName,
      _ResponsibleBP.ProjectRoleUUID                                                                  as ProjectRoleUUID,
      _ResponsibleBP.EmailAddress                                                                     as EmailAddress,
      _ResponsibleBP.MobilePhoneNumber                                                                as MobilePhoneNumber,
      _ResponsibleBP.AddressPhoneNumber                                                               as AddressPhoneNumber,
      _ResponsibleBP.ProjectRoleName                                                                  as ProjectRoleName,
      _GlobalSetting.EPPMSettingsDefaultValue,
      // for authorization checks

      _ResponsibleBP._BusinessUser,
      _AuthUser,
      _AuthSubst,
      _AuthRole,
      _AuthGroup,

      _ProjObjRoot,
      _Project

}