I_PPM_ProjectElementProgress
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 6 data sources and exposes 45 fields with key field TaskUUID. It has 4 associations to related views. Part of development package VDM_PPM_OBJECTS_TASK.
Data Sources (6)
| Source | Alias | Join Type |
|---|---|---|
| I_EnterpriseProjElmntHier | Hierarchy | left_outer |
| I_EntProjectResponsiblePerson | ResponsibleBP | left_outer |
| I_EnterpriseProjectRole | ResponsibleRole | left_outer |
| I_PPM_Task | Task | from |
| I_PPM_TaskText | TaskText | left_outer |
| I_PPM_Tasktype | Tasktype | left_outer |
Associations (4)
| Cardinality | Target | Alias | Condition |
|---|---|---|---|
| [0..1] | I_BusinessUserBasic | _BusinessUser | _BusinessUser.BusinessPartnerUUID = ResponsibleBP.BusinessPartnerUUID |
| [0..1] | I_PPM_ProjectRoleText | _RoleText | _RoleText.ProjectRoleUUID = ResponsibleRole.ProjectRoleUUID |
| [0..1] | I_WBSElementBasicData | _ProjObjRoot | ( _ProjObjRoot.WBSElementInternalID = $projection.WBSElementInternalID ) |
| [0..1] | I_PPM_Project | _Project | _Project.ProjectUUID = Task.ProjectUUID |
Annotations (12)
| Name | Value | Level | Field |
|---|---|---|---|
| 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 (45)
| Key | Field | Source Table | Source Field | Description |
|---|---|---|---|---|
| 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 | ||
| WBSElementInternalID | I_PPM_Task | WBSElementInternalID | ||
| BusinessPartnerUUID | I_EntProjectResponsiblePerson | BusinessPartnerUUID | ||
| BusinessPartnerName | _BusinessUser | PersonFullName | ||
| ProjectRoleUUID | I_EnterpriseProjectRole | ProjectRoleUUID | ||
| EmailAddress | ||||
| MobilePhoneNumber | ||||
| AddressPhoneNumber | ||||
| ProjectRoleName | _RoleText | ProjectRoleName | ||
| _BusinessUser | _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
@Consumption.dbHints:[ 'USE_HEX_PLAN' ]
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_EntProjectResponsiblePerson as ResponsibleBP on Task.ProjectUUID = ResponsibleBP.ProjectUUID and Task.TaskUUID = ResponsibleBP.ReferencedObjectUUID
left outer join I_EnterpriseProjectRole as ResponsibleRole on Task.ProjectUUID = ResponsibleRole.ProjectUUID and ResponsibleRole.ProjectRoleType = 'YP_RL_0001'
association [0..1] to I_BusinessUserBasic as _BusinessUser on _BusinessUser.BusinessPartnerUUID = ResponsibleBP.BusinessPartnerUUID
association [0..1] to I_PPM_ProjectRoleText as _RoleText on _RoleText.ProjectRoleUUID = ResponsibleRole.ProjectRoleUUID
// 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,
///removed as part of DPR carve out topic
// Task._Severity.CriticalityCode as CriticalityCode,
// Task._Severity.SeverityText as SeverityText,
Task.WBSElementInternalID,
ResponsibleBP.BusinessPartnerUUID as BusinessPartnerUUID,
_BusinessUser.PersonFullName as BusinessPartnerName,
ResponsibleRole.ProjectRoleUUID as ProjectRoleUUID,
_BusinessUser._WorkplaceAddress.DefaultEmailAddress as EmailAddress,
_BusinessUser._WorkplaceAddress.MobilePhoneNumber as MobilePhoneNumber,
_BusinessUser._WorkplaceAddress.PhoneNumber as AddressPhoneNumber,
_RoleText.ProjectRoleName as ProjectRoleName,
// for authorization checks
_BusinessUser,
_AuthUser,
_AuthSubst,
_AuthRole,
_AuthGroup,
_ProjObjRoot,
_Project
} where _Project.ProjectCategory = '6'
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