I_PPM_LastUsedProject
Display Last Used Projects
I_PPM_LastUsedProject is a Composite CDS View that provides data about "Display Last Used Projects" in SAP S/4HANA. It reads from 12 data sources and exposes 23 fields with key field ProjectUUID.
Data Sources (12)
| Source | Alias | Join Type |
|---|---|---|
| I_PPM_ItemInfo | Item | left_outer |
| P_PPM_ProjectsFromPers | LastUsed | inner |
| I_PPM_ProjectMilestEssent | milestEssent | left_outer |
| I_PPM_Task | MilestEssentTask | left_outer |
| I_PPM_ProjectMilestRelNext | milestRelNext | left_outer |
| I_PPM_Task | MilestRelNextTask | left_outer |
| I_PPM_Text | milestRelNextTextUserLang | left_outer |
| I_PPM_ProjectPhaseCurrent | PhaseCurrent | left_outer |
| I_PPM_Task | PhaseCurrentTask | left_outer |
| I_PPM_Text | PhaseCurrentTextUserLang | left_outer |
| P_PPM_ProjectList | Project | from |
| P_PPM_ProjectImage | projectImage | left_outer |
Annotations (13)
| Name | Value | Level | Field |
|---|---|---|---|
| EndUserText.label | Display Last Used Projects | view | |
| VDM.viewType | #COMPOSITE | view | |
| AbapCatalog.sqlViewName | IPPMLASTUSEDPRO | view | |
| AbapCatalog.compiler.compareFilter | true | view | |
| ObjectModel.usageType.serviceQuality | #D | view | |
| ObjectModel.usageType.sizeCategory | #L | view | |
| ObjectModel.usageType.dataClass | #MIXED | view | |
| ClientHandling.algorithm | #SESSION_VARIABLE | view | |
| AccessControl.authorizationCheck | #CHECK | view | |
| AccessControl.personalData.blocking | #NOT_REQUIRED | view | |
| ObjectModel.representativeKey | ProjectUUID | view | |
| Metadata.allowExtensions | true | view | |
| VDM.lifecycle.contract.type | #SAP_INTERNAL_API | view |
Fields (23)
| Key | Field | Source Table | Source Field | Description |
|---|---|---|---|---|
| KEY | ProjectUUID | P_PPM_ProjectList | ProjectUUID | |
| ProjectSummaryTaskUUID | P_PPM_ProjectList | ProjectSummaryTaskUUID | ||
| OrdinalNumber | P_PPM_ProjectsFromPers | OrdinalNumber | ||
| PortfolioItemUUID | I_PPM_ItemInfo | PortfolioItemUUID | ||
| PortfolioUUID | I_PPM_ItemInfo | PortfolioUUID | ||
| ProjectProcessingStatus | P_PPM_ProjectList | ProjectProcessingStatus | ||
| ProjectNameUserLanguage | ProjectNameUserLanguage | |||
| ProjectNameMasterLanguage | ProjectNameMasterLanguage | |||
| Project | Project | |||
| ProjectType | ProjectType | |||
| ProjectTypeName | ProjectTypeName | |||
| CurrentPhaseEndDate | I_PPM_Task | LatestFinishDate | ||
| CurrentPhaseNameUserLanguage | I_PPM_Text | ObjectName | ||
| CurrentPhaseNameMasterLanguage | I_PPM_Task | TaskName | ||
| LaunchDate | I_PPM_Task | LatestFinishDate | ||
| NextMilestoneNameUserLanguage | I_PPM_Text | ObjectName | ||
| NextMilestoneNameMasterLang | I_PPM_Task | TaskName | ||
| NextMilestoneDate | I_PPM_Task | LatestFinishDate | ||
| ProjectImageURL | P_PPM_ProjectImage | ProjectImageURL | ||
| _AuthUser | P_PPM_ProjectList | _AuthUser | ||
| _AuthSubst | P_PPM_ProjectList | _AuthSubst | ||
| _AuthRole | P_PPM_ProjectList | _AuthRole | ||
| _AuthGroup | P_PPM_ProjectList | _AuthGroup |
@EndUserText.label: 'Display Last Used Projects'
@VDM.viewType: #COMPOSITE
@AbapCatalog.sqlViewName: 'IPPMLASTUSEDPRO'
@AbapCatalog.compiler.compareFilter: true
@ObjectModel.usageType.serviceQuality: #D
// size L because of underlying data to be searched
@ObjectModel.usageType.sizeCategory: #L
@ObjectModel.usageType.dataClass: #MIXED
@ClientHandling.algorithm: #SESSION_VARIABLE
@AccessControl.authorizationCheck: #CHECK
@AccessControl.personalData.blocking: #NOT_REQUIRED
@ObjectModel.semanticKey: [ 'Project' ]
@ObjectModel.representativeKey: 'ProjectUUID'
@ObjectModel.alternativeKey: [{
id: 'ProjectSummaryTaskUUID',
element: ['ProjectSummaryTaskUUID'],
uniqueness: #UNIQUE
}]
@Metadata.allowExtensions: true
@VDM.lifecycle.contract.type: #SAP_INTERNAL_API
define view I_PPM_LastUsedProject
as select from P_PPM_ProjectList as Project
// restrict to only my lst used from personalization
inner join P_PPM_ProjectsFromPers as LastUsed on(
Project.ProjectSummaryTaskUUID = LastUsed.ReferencedObjectUUID
)
// retrieve portfolio info
left outer join I_PPM_ItemInfo as Item on(
Project.ProjectUUID = Item.ProjectUUID
)
// retrieve Milestone info
left outer join I_PPM_ProjectMilestRelNext as milestRelNext on(
Project.ProjectUUID = milestRelNext.ProjectUUID
)
left outer join I_PPM_Task as MilestRelNextTask on(
MilestRelNextTask.TaskUUID = milestRelNext.TaskUUID
)
left outer join I_PPM_ProjectMilestEssent as milestEssent on(
Project.ProjectUUID = milestEssent.ProjectUUID
)
left outer join I_PPM_Task as MilestEssentTask on(
MilestEssentTask.TaskUUID = milestEssent.TaskUUID
)
left outer join I_PPM_Text as milestRelNextTextUserLang on (
milestRelNextTextUserLang.LanguageCode = $session.system_language
)
and(
milestRelNextTextUserLang.ReferencedObjectUUID = milestRelNext.TaskUUID
)
// project image
left outer join P_PPM_ProjectImage as projectImage on projectImage.ProjectUUID = Project.ProjectUUID
// Retrieve current phase
left outer join I_PPM_ProjectPhaseCurrent as PhaseCurrent on(
Project.ProjectUUID = PhaseCurrent.ProjectUUID
)
left outer join I_PPM_Task as PhaseCurrentTask on(
PhaseCurrentTask.TaskUUID = PhaseCurrent.TaskUUID
)
left outer join I_PPM_Text as PhaseCurrentTextUserLang on (
PhaseCurrentTextUserLang.LanguageCode = $session.system_language
)
and(
PhaseCurrentTextUserLang.ReferencedObjectUUID = PhaseCurrent.TaskUUID
)
{
@Consumption.semanticObject: 'EnterpriseProject'
key Project.ProjectUUID,
Project.ProjectSummaryTaskUUID,
// used only for sorting
LastUsed.OrdinalNumber,
// fields only used by navigation
Item.PortfolioItemUUID,
Item.PortfolioUUID,
Project.ProjectProcessingStatus,
ProjectNameUserLanguage,
ProjectNameMasterLanguage,
cast (
case
when ProjectNameUserLanguage > '' then
ProjectNameUserLanguage
else ProjectName
end as /s4ppm/tv_project_name preserving type ) as ProjectName,
Project,
ProjectType,
ProjectTypeName,
PhaseCurrentTask.LatestFinishDate as CurrentPhaseEndDate,
cast(
case
when PhaseCurrentTextUserLang.ObjectName > '' then
PhaseCurrentTextUserLang.ObjectName
else PhaseCurrentTask.TaskName
end as /s4ppm/tv_description preserving type ) as CurrentPhaseName,
PhaseCurrentTextUserLang.ObjectName as CurrentPhaseNameUserLanguage,
PhaseCurrentTask.TaskName as CurrentPhaseNameMasterLanguage,
MilestEssentTask.LatestFinishDate as LaunchDate,
cast(
case
when milestRelNextTextUserLang.ObjectName > '' then
milestRelNextTextUserLang.ObjectName
else MilestRelNextTask.TaskName
end as /s4ppm/tv_project_name preserving type ) as NextMilestoneName,
milestRelNextTextUserLang.ObjectName as NextMilestoneNameUserLanguage,
MilestRelNextTask.TaskName as NextMilestoneNameMasterLang,
//note 2485200 start change
// case when MilestRelNextTask.ProjectElementDuration > 0 then
// dats_add_days( tstmp_to_dats( MilestRelNextTask.LatestFinishDateTime, abap_system_timezone( $session.client,'NULL' ), $session.client, 'NULL' ), -1, 'NULL')
// else
// tstmp_to_dats( MilestRelNextTask.LatestFinishDateTime, abap_system_timezone( $session.client,'NULL' ), $session.client, 'NULL' )
// end as NextMilestoneDate,
@Semantics.businessDate.at: true
MilestRelNextTask.LatestFinishDate as NextMilestoneDate,
//note 2485200 end change
projectImage.ProjectImageURL,
Project._AuthUser,
Project._AuthSubst,
Project._AuthRole,
Project._AuthGroup
}
where
Project.ProjectVersionNumber = '' // active projects do not have a version!
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_PPM_ITEMINFO",
"I_PPM_PROJECTMILESTESSENT",
"I_PPM_PROJECTMILESTRELNEXT",
"I_PPM_PROJECTPHASECURRENT",
"I_PPM_TASK",
"I_PPM_TEXT",
"P_PPM_PROJECTIMAGE",
"P_PPM_PROJECTLIST",
"P_PPM_PROJECTSFROMPERS"
],
"ASSOCIATED":
[
"I_PPM_AUTHZNBYSUBSTITH",
"I_PPM_AUTHZNBYUSERROLEH",
"I_PPM_AUTHZNBYUSRGRPH",
"I_PPM_AUTHZNBYUSRH"
],
"BASE":
[
"P_PPM_PROJECTLIST"
],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/
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