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 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)
| Source | Alias | Join 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)
| Cardinality | Target | Alias | Condition |
|---|---|---|---|
| [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)
| 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 (48)
| 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 | ||
| 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
}
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