@EndUserText.label: 'My Projects – Active'
@VDM.viewType: #COMPOSITE
@AbapCatalog.sqlViewName: 'IPPMMYACTIVE'
@AbapCatalog.compiler.compareFilter: true
@ObjectModel.usageType.serviceQuality: #X
@ObjectModel.usageType.sizeCategory: #L
@ObjectModel.usageType.dataClass: #MIXED
@ClientHandling.algorithm: #SESSION_VARIABLE
@AccessControl.authorizationCheck: #PRIVILEGED_ONLY
@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
// CE2408CFD1 - S4H PuC CleanUp as this CDS view is only used as Fiori dev. for Count on Tile OVP Proj. Mgr.
define view I_PPM_MyActiveProjects
as select from I_PPM_ProjectSummaryTask as Project // CE2408.CFD1
// from P_PPM_ProjectList as Project
inner join I_PPM_IsMyProject as IsMyProject
on Project.ProjectUUID = IsMyProject.ProjectUUID
/* To distinguish CE Project Category from OP project ( CE completed is active ).
inner join I_PPM_ProjectType as ProjectType on Project.ProjectType = ProjectType.ProjectType */
// retrieve portfolio info
left outer join I_PPM_ItemInfo as Item
on Project.ProjectUUID is null
and Project.ProjectUUID = Item.ProjectUUID
{
@Consumption.semanticObject: 'EnterpriseProject'
key Project.ProjectUUID,
Project.ProjectSummaryTaskUUID,
// fields only used by navigation
Item.PortfolioItemUUID,
Item.PortfolioUUID,
/* cast (
case
when ProjectNameUserLanguage > '' then
ProjectNameUserLanguage
else
Project.ProjectName
end as /s4ppm/tv_project_name preserving type ) as ProjectName,
*/
ProjectName,
// cast ( "_ProjectTask"._TaskText.ObjectName as /s4ppm/tv_name ) as ProjectName, // OP - Length 60
/* ProjectNameUserLanguage,
ProjectNameMasterLanguage, */
Project.Project,
Project.ProjectType,
/* Project.ProjectTypeName, */
Project.ProjectInternalID,
/* 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,
PhaseCurrentTask.ExternalId as CurrentPhase,
@Semantics.businessDate.to: true
PhaseCurrentTask.LatestFinishDate as CurrentPhaseEndDate,
*/
/*
@Semantics.businessDate.at: true
MilestEssentTask.LatestFinishDate as LaunchDate,
cast(
case
when MilestRelNextTextUserLang.ObjectName > '' then
MilestRelNextTextUserLang.ObjectName
else
MilestRelNextTask.TaskName
end as /s4ppm/tv_description preserving type ) as NextMilestoneName,
MilestRelNextTextUserLang.ObjectName as NextMilestoneNameUserLanguage,
MilestRelNextTask.TaskName as NextMilestoneNameMasterLang,
MilestRelNextTask.ExternalId as NextMilestone,
@Semantics.businessDate.to: true
MilestRelNextTask.LatestFinishDate as NextMilestoneDate,
projectImage.ProjectImageURL,
*/
Project._AuthUser,
Project._AuthSubst,
Project._AuthRole,
Project._AuthGroup
}
where IsMyProject.IsMyProject = 'X'
and
// All active Status: Partially Released, Released, Released (Processing has begun), Locked, Locked (Released First), (OP & CE)
( Project.ProjectProcessingStatus between '10' and '21'
or
// Completed (since CE2002, reinserted in CE2105)
( Project.ProjectProcessingStatus = '40' and Project.ProjectCategory >= '6' ) )
and Project.ProjectVersionNumber = '' // active projects do not have a version!
// and _ProjectManager.BusinessPartnerUUID = MyBusinessPartnerUUID