I_PPM_ProjectElement
Project Element
I_PPM_ProjectElement is a Composite CDS View that provides data about "Project Element" in SAP S/4HANA. It reads from 4 data sources (I_EPPMGlobalSetting, /s4ppm/cds_dummy, I_PPM_Task, I_PPM_ProjectSummaryTask) and exposes 62 fields with key field TaskUUID. It has 12 associations to related views.
Data Sources (4)
| Source | Alias | Join Type |
|---|---|---|
| I_EPPMGlobalSetting | _GlobalSetting | left_outer |
| /s4ppm/cds_dummy | /s4ppm/cds_dummy | left_outer |
| I_PPM_Task | I_PPM_Task | from |
| I_PPM_ProjectSummaryTask | Project | left_outer |
Associations (12)
| Cardinality | Target | Alias | Condition |
|---|---|---|---|
| [0..1] | I_PPM_Text | _TaskNameUserLanguage | _TaskNameUserLanguage.LanguageCode = $session.system_language and _TaskNameUserLanguage.ReferencedObjectUUID = I_PPM_Task.TaskUUID |
| [0..1] | I_PPM_Text | _ProjNameUserLanguage | _ProjNameUserLanguage.LanguageCode = $session.system_language and _ProjNameUserLanguage.ReferencedObjectUUID = Project.ProjectSummaryTaskUUID |
| [0..1] | I_PPM_SingleResponsibleForObj | _Responsible | _Responsible.ReferencedObjectUUID = I_PPM_Task.TaskUUID |
| [0..*] | I_PPM_BuPaWorkingOnObject | _ContactsWorkingOnThis | _ContactsWorkingOnThis.ReferencedObjectUUID = I_PPM_Task.TaskUUID |
| [0..*] | I_PPM_ProjectManagerForObject | _ImportantContacts | _ImportantContacts.ReferencedObjectUUID = I_PPM_Task.TaskUUID |
| [0..1] | I_UnitOfMeasure | _PlannedWorkUnit | _PlannedWorkUnit.UnitOfMeasure = $projection.PlannedWorkQuantityUnit |
| [0..1] | I_UnitOfMeasure | _ActualWorkUnit | _ActualWorkUnit.UnitOfMeasure = $projection.ActualWorkExternalQuantityUnit |
| [0..1] | I_UnitOfMeasure | _RemainingWorkUnit | _RemainingWorkUnit.UnitOfMeasure = $projection.RemainingWorkExtQuantityUnit |
| [0..1] | I_UnitOfMeasure | _CompletionUnitOfMeasure | _CompletionUnitOfMeasure.UnitOfMeasure = '%' |
| [0..1] | I_Currency | _ManualCostRateCurrency | _ManualCostRateCurrency.Currency = $projection.ManualCostRateCurrency |
| [0..1] | I_Currency | _ManualRevenueRateCurrency | _ManualRevenueRateCurrency.Currency = $projection.ManualRevenueRateCurrency |
| [0..1] | I_PPM_ProjectElementType | _ProjectElementType | _ProjectElementType.ProjectElementType = $projection.ProjectElementType |
Annotations (13)
| Name | Value | Level | Field |
|---|---|---|---|
| EndUserText.label | Project Element | view | |
| AbapCatalog.sqlViewName | IPPMPROJECTELEM | view | |
| VDM.viewType | #COMPOSITE | view | |
| AbapCatalog.compiler.compareFilter | true | view | |
| AccessControl.authorizationCheck | #PRIVILEGED_ONLY | view | |
| AccessControl.personalData.blocking | #NOT_REQUIRED | view | |
| Search.searchable | false | view | |
| ClientHandling.algorithm | #SESSION_VARIABLE | view | |
| ObjectModel.representativeKey | TaskUUID | view | |
| ObjectModel.usageType.serviceQuality | #X | view | |
| ObjectModel.usageType.sizeCategory | #XL | view | |
| ObjectModel.usageType.dataClass | #MIXED | view | |
| VDM.lifecycle.contract.type | #SAP_INTERNAL_API | view |
Fields (62)
| Key | Field | Source Table | Source Field | Description |
|---|---|---|---|---|
| KEY | TaskUUID | I_PPM_Task | TaskUUID | |
| ProjectUUID | I_PPM_Task | ProjectUUID | ||
| TaskNameendasProjectElementName | ||||
| ProjectNameendasProjectName | ||||
| MasterLanguage | I_PPM_ProjectSummaryTask | MasterLanguage | ||
| PlanVersion | I_PPM_ProjectSummaryTask | PlanVersion | ||
| OrganizationalUnit | I_PPM_ProjectSummaryTask | OrganizationalUnit | ||
| OrganizationalUnitObjectType | I_PPM_ProjectSummaryTask | OrganizationalUnitObjectType | ||
| ProcessingStatusText | ||||
| PercentageOfCompletion | ||||
| CompletionUnit | _CompletionUnitOfMeasure | UnitOfMeasure | ||
| ActualStartDate | I_PPM_Task | ActualStartDate | ||
| ActualFinishDate | I_PPM_Task | ActualFinishDate | ||
| LatestStartDate | I_PPM_Task | LatestStartDate | ||
| LatestFinishDate | I_PPM_Task | LatestFinishDate | ||
| PlannedWorkQuantity | I_PPM_Task | PlannedWorkQuantity | ||
| PlannedWorkQuantityUnit | I_PPM_Task | PlannedWorkQuantityUnit | ||
| quan162asActualWorkQuantity | ||||
| ActualWorkExternalQuantityUnit | I_PPM_Task | ActualWorkExternalQuantityUnit | ||
| quan162asRemainingWorkQuantity | ||||
| RemainingWorkExtQuantityUnit | I_PPM_Task | RemainingWorkExtQuantityUnit | ||
| Severity | ||||
| SeverityText | ||||
| CriticalityCode | ||||
| _SeverityText | ||||
| CostRevenueRateCode | I_PPM_Task | CostRevenueRateCode | ||
| ManualCostRate | I_PPM_Task | ManualCostRate | ||
| ManualCostRateCurrency | I_PPM_Task | ManualCostRateCurrency | ||
| ManualRevenueRate | I_PPM_Task | ManualRevenueRate | ||
| ManualRevenueRateCurrency | I_PPM_Task | ManualRevenueRateCurrency | ||
| EarliestStartDate | I_PPM_Task | EarliestStartDate | ||
| EarliestFinishDate | I_PPM_Task | EarliestFinishDate | ||
| TaskType | I_PPM_Task | TaskType | ||
| ProjectElementDuration | I_PPM_Task | ProjectElementDuration | ||
| ProjectType | I_PPM_ProjectSummaryTask | ProjectType | ||
| clientNULLasCreationDate | ||||
| clientNULLasLastChangeDate | ||||
| CreatedByUserFullName | ||||
| LastChangedByUserName | ||||
| ProjectElementDescription | /s4ppm/cds_dummy | dummy_string | ||
| PriorityCodeName | ||||
| PriorityCode | I_PPM_Task | PriorityCode | ||
| ExternalId | I_PPM_Task | ExternalId | ||
| ObjectType | I_PPM_Task | ObjectType | ||
| CreatedByUser | I_PPM_Task | CreatedByUser | ||
| LastChangedByUser | I_PPM_Task | LastChangedByUser | ||
| EPPMSettingsDefaultValue | I_EPPMGlobalSetting | EPPMSettingsDefaultValue | ||
| _ProjectElementType | _ProjectElementType | |||
| _CreatedByUser | I_PPM_Task | _CreatedByUser | ||
| _LastChangedByUser | I_PPM_Task | _LastChangedByUser | ||
| _Severity | I_PPM_Task | _Severity | ||
| _ProjectType | I_PPM_ProjectSummaryTask | _ProjectType | ||
| _Responsible | _Responsible | |||
| _PlannedWorkUnit | _PlannedWorkUnit | |||
| _ActualWorkUnit | _ActualWorkUnit | |||
| _RemainingWorkUnit | _RemainingWorkUnit | |||
| _ManualCostRateCurrency | _ManualCostRateCurrency | |||
| _ManualRevenueRateCurrency | _ManualRevenueRateCurrency | |||
| _CompletionUnitOfMeasure | _CompletionUnitOfMeasure | |||
| _Priority | I_PPM_Task | _Priority | ||
| _ImportantContacts | _ImportantContacts | |||
| _ContactsWorkingOnThis | _ContactsWorkingOnThis |
@EndUserText.label: 'Project Element'
@AbapCatalog.sqlViewName: 'IPPMPROJECTELEM'
@VDM.viewType: #COMPOSITE
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #PRIVILEGED_ONLY
@AccessControl.personalData.blocking: #NOT_REQUIRED
@Search.searchable: false
@ClientHandling.algorithm: #SESSION_VARIABLE
@ObjectModel.representativeKey: 'TaskUUID'
@ObjectModel.usageType.serviceQuality: #X
@ObjectModel.usageType.sizeCategory: #XL
@ObjectModel.usageType.dataClass: #MIXED
@VDM.lifecycle.contract.type: #SAP_INTERNAL_API
define view I_PPM_ProjectElement
as select from I_PPM_Task
left outer join I_PPM_ProjectSummaryTask as Project on I_PPM_Task.ProjectUUID = Project.ProjectUUID
left outer join /s4ppm/cds_dummy on I_PPM_Task.TaskUUID = /s4ppm/cds_dummy.dummy_key //workaround to get string field
left outer join I_EPPMGlobalSetting as _GlobalSetting on _GlobalSetting.EPPMUsageArea = '0007' and _GlobalSetting.EPPMGlobalSettingsCode = '0053'
association [0..1] to I_PPM_Text as _TaskNameUserLanguage on _TaskNameUserLanguage.LanguageCode = $session.system_language
and _TaskNameUserLanguage.ReferencedObjectUUID = I_PPM_Task.TaskUUID
association [0..1] to I_PPM_Text as _ProjNameUserLanguage on _ProjNameUserLanguage.LanguageCode = $session.system_language
and _ProjNameUserLanguage.ReferencedObjectUUID = Project.ProjectSummaryTaskUUID
association [0..1] to I_PPM_SingleResponsibleForObj as _Responsible on _Responsible.ReferencedObjectUUID = I_PPM_Task.TaskUUID
association [0..*] to I_PPM_BuPaWorkingOnObject as _ContactsWorkingOnThis on _ContactsWorkingOnThis.ReferencedObjectUUID = I_PPM_Task.TaskUUID
association [0..*] to I_PPM_ProjectManagerForObject as _ImportantContacts on _ImportantContacts.ReferencedObjectUUID = I_PPM_Task.TaskUUID
association [0..1] to I_UnitOfMeasure as _PlannedWorkUnit on _PlannedWorkUnit.UnitOfMeasure = $projection.PlannedWorkQuantityUnit
association [0..1] to I_UnitOfMeasure as _ActualWorkUnit on _ActualWorkUnit.UnitOfMeasure = $projection.ActualWorkExternalQuantityUnit
association [0..1] to I_UnitOfMeasure as _RemainingWorkUnit on _RemainingWorkUnit.UnitOfMeasure = $projection.RemainingWorkExtQuantityUnit
association [0..1] to I_UnitOfMeasure as _CompletionUnitOfMeasure on _CompletionUnitOfMeasure.UnitOfMeasure = '%'
association [0..1] to I_Currency as _ManualCostRateCurrency on _ManualCostRateCurrency.Currency = $projection.ManualCostRateCurrency
association [0..1] to I_Currency as _ManualRevenueRateCurrency on _ManualRevenueRateCurrency.Currency = $projection.ManualRevenueRateCurrency
association [0..1] to I_PPM_ProjectElementType as _ProjectElementType on _ProjectElementType.ProjectElementType = $projection.ProjectElementType
{
key I_PPM_Task.TaskUUID as TaskUUID,
I_PPM_Task.ProjectUUID,
case
when _TaskNameUserLanguage.ObjectName > '' then _TaskNameUserLanguage.ObjectName
else
I_PPM_Task.TaskName
end as ProjectElementName,
case
when _ProjNameUserLanguage.ObjectName > '' then _ProjNameUserLanguage.ObjectName
else
Project.ProjectName
end as ProjectName,
Project.MasterLanguage,
Project.PlanVersion,
Project.OrganizationalUnit,
Project.OrganizationalUnitObjectType,
I_PPM_Task._ProcessingStatus._Text[1: Language = $session.system_language].ProcessingStatusText,
@DefaultAggregation: #NONE
@Semantics.quantity.unitOfMeasure: 'CompletionUnit'
cast (I_PPM_Task.PercentageOfCompletion as abap.quan( 3, 0 )) as PercentageOfCompletion,
@Semantics.unitOfMeasure: true
_CompletionUnitOfMeasure.UnitOfMeasure as CompletionUnit,
I_PPM_Task.ActualStartDate as ActualStartDate,
I_PPM_Task.ActualFinishDate as ActualFinishDate,
I_PPM_Task.LatestStartDate as LatestStartDate,
I_PPM_Task.LatestFinishDate as LatestFinishDate,
/********* PROGRESS **********/
@DefaultAggregation: #NONE
@Semantics.quantity.unitOfMeasure: 'PlannedWorkQuantityUnit'
I_PPM_Task.PlannedWorkQuantity,
@ObjectModel.foreignKey.association: '_PlannedWorkUnit'
@Semantics.unitOfMeasure: true
I_PPM_Task.PlannedWorkQuantityUnit,
@DefaultAggregation: #NONE
@Semantics.quantity.unitOfMeasure: 'ActualWorkExternalQuantityUnit'
//cast to quan(16,2) because the unit_conversion delivers to many fractional digits
cast (
unit_conversion(
quantity => I_PPM_Task.ActualWorkQuantityInSeconds,
source_unit => cast('S' as abap.unit( 3 ) ) ,
target_unit => I_PPM_Task.ActualWorkExternalQuantityUnit,
error_handling => 'KEEP_UNCONVERTED' )
as abap.quan( 16, 2 )) as ActualWorkQuantity,
@ObjectModel.foreignKey.association: '_ActualWorkUnit'
@Semantics.unitOfMeasure: true
I_PPM_Task.ActualWorkExternalQuantityUnit,
@DefaultAggregation: #NONE
@Semantics.quantity.unitOfMeasure: 'RemainingWorkExtQuantityUnit'
cast(
unit_conversion(
quantity => I_PPM_Task.RemainingWorkQuantityInSeconds,
source_unit => cast('S' as abap.unit( 3 ) ),
target_unit => I_PPM_Task.RemainingWorkExtQuantityUnit,
error_handling => 'KEEP_UNCONVERTED' )
as abap.quan( 16, 2 ) ) as RemainingWorkQuantity,
@ObjectModel.foreignKey.association: '_RemainingWorkUnit'
@Semantics.unitOfMeasure: true
I_PPM_Task.RemainingWorkExtQuantityUnit,
@ObjectModel.text.association: '_SeverityText'
I_PPM_Task._Severity.Severity,
I_PPM_Task._Severity.SeverityText,
I_PPM_Task._Severity.CriticalityCode,
I_PPM_Task._Severity._SeverityText,
/********* ADDITIONAL DATA **********/
/********* COSTING **********/
I_PPM_Task.CostRevenueRateCode as CostRevenueRateCode,
I_PPM_Task.ManualCostRate,
@Semantics.currencyCode: true
@ObjectModel.foreignKey.association: '_ManualCostRateCurrency'
I_PPM_Task.ManualCostRateCurrency,
I_PPM_Task.ManualRevenueRate,
@Semantics.currencyCode: true
@ObjectModel.foreignKey.association: '_ManualRevenueRateCurrency'
I_PPM_Task.ManualRevenueRateCurrency,
/* earl. start and finish is needed for the rates logic,
web dynpro is using the earl. dates for determining which rate will be displayed*/
I_PPM_Task.EarliestStartDate as EarliestStartDate,
I_PPM_Task.EarliestFinishDate as EarliestFinishDate,
I_PPM_Task.TaskType,
I_PPM_Task.ProjectElementDuration,
Project.ProjectType,
case
when I_PPM_Task.ProjectElementDuration = 0
then I_PPM_Task.EarliestFinishDate
else
I_PPM_Task.EarliestStartDate
end as CostRevenueRateDueDate,
/********* ADMINISTRATION **********/
tstmp_to_dats(
I_PPM_Task.CreationDateTime,
abap_system_timezone( $session.client,'NULL' ),
$session.client,
'NULL' ) as CreationDate,
tstmp_to_dats(
I_PPM_Task.LastChangeDateTime,
abap_system_timezone( $session.client,'NULL' ),
$session.client,
'NULL' ) as LastChangeDate,
I_PPM_Task._CreatedByUser._BusinessUser.PersonFullName as CreatedByUserFullName,
I_PPM_Task._LastChangedByUser._BusinessUser.PersonFullName as LastChangedByUserName,
/s4ppm/cds_dummy.dummy_string as ProjectElementDescription, //is filled in DPC_EXT
I_PPM_Task._Priority._Text[1: LanguageCode = $session.system_language].PriorityCodeName,
@ObjectModel.foreignKey.association: '_Priority'
I_PPM_Task.PriorityCode,
I_PPM_Task.ExternalId,
I_PPM_Task.ObjectType,
I_PPM_Task.CreatedByUser,
I_PPM_Task.LastChangedByUser,
/**** Project Element Type *****/
@ObjectModel.foreignKey.association: '_ProjectElementType'
case
when (I_PPM_Task.ObjectType = 'TTO' or I_PPM_Task.ObjectType = 'TPO') and I_PPM_Task.IsProjectMilestone = ' '
then '0' //Task
when (I_PPM_Task.ObjectType = 'TTO' or I_PPM_Task.ObjectType = 'TPO') and I_PPM_Task.IsProjectMilestone = 'X'
then '1' //Milestone
when I_PPM_Task.ObjectType = 'PPO'
then '2' //Phase
end as ProjectElementType,
_GlobalSetting.EPPMSettingsDefaultValue,
_ProjectElementType,
I_PPM_Task._CreatedByUser,
I_PPM_Task._LastChangedByUser,
I_PPM_Task._Severity,
Project._ProjectType,
_Responsible,
_PlannedWorkUnit,
_ActualWorkUnit,
_RemainingWorkUnit,
_ManualCostRateCurrency,
_ManualRevenueRateCurrency,
_CompletionUnitOfMeasure,
I_PPM_Task._Priority,
_ImportantContacts,
_ContactsWorkingOnThis
} where I_PPM_Task.ObjectType != 'DPO'
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