@EndUserText.label: 'My Projects - Critical'
@VDM.viewType: #COMPOSITE
@AbapCatalog.sqlViewName: 'IPPMMOSTCRITPRO'
@AbapCatalog.compiler.compareFilter: true
@ObjectModel.usageType.serviceQuality: #X
// size L because of underlying data to be searched
@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
define view I_PPM_MostCriticalProject as select from I_PPM_ProjectSummaryTask as Project
// retrieve portfolio info
left outer join I_PPM_ItemInfo as Item
on ( Project.ProjectUUID = Item.ProjectUUID )
// retrieve Milestone info
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 )
// 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 )
// left outer join I_PPM_Text as PhaseCurrentTextMasterLang
// on (PhaseCurrentTextMasterLang.LanguageCode = Project.MasterLanguage )
// and ( PhaseCurrentTextMasterLang.ReferencedObjectUUID = PhaseCurrent.TaskUUID )
// Severity
left outer join I_PPM_ObjectSeverity as Severity
on ( Project.ProjectSummaryTaskUUID = Severity.ReferencedObjectUUID )
left outer join I_PPM_Text as NameUserLanguage
on ( NameUserLanguage.LanguageCode = $session.system_language )
and ( NameUserLanguage.ReferencedObjectUUID = Project.ProjectSummaryTaskUUID )
// My Project Indicator
left outer join I_PPM_IsMyProject as IsMyProject
on Project.ProjectUUID = IsMyProject.ProjectUUID
// My Project as Substitute Indicator
left outer join I_PPM_IsMyProjectAsSubstitute as IsMyProjectAsSubstitute
on Project.ProjectUUID = IsMyProjectAsSubstitute.ProjectUUID
association [0..1] to I_PPM_ProjectPhaseCurrent as _ProjectPhaseCurrent
on $projection.ProjectUUID = _ProjectPhaseCurrent.ProjectUUID
{
@Consumption.semanticObject: 'EnterpriseProject'
key Project.ProjectUUID,
Project.ProjectSummaryTaskUUID,
// fields only used by navigation
Item.PortfolioItemUUID,
Item.PortfolioUUID,
Project.ProjectProcessingStatus,
NameUserLanguage.ObjectName as ProjectNameUserLanguage,
ProjectName as ProjectNameMasterLanguage,
@EndUserText: { label: 'Project name', quickInfo: 'Project name' }
cast( case
when NameUserLanguage.ObjectName > '' then
NameUserLanguage.ObjectName
else ProjectName
end as /s4ppm/tv_project_name preserving type ) as ProjectName,
Project,
ProjectType,
// ProjectTypeName,
// cast( case
// when PhaseCurrentTextUserLang.ObjectName > '' then
// PhaseCurrentTextUserLang.ObjectName
// else PhaseCurrentTask.TaskName
// end
// as /s4ppm/tv_description preserving type ) as CurrentPhaseName,
//
// PhaseCurrentTextUserLang.ObjectName as CurrentPhaseNameUserLanguage,
//
//// replaced by primary DB fallback in 1911
//// PhaseCurrentTextMasterLang.ObjectName as CurrentPhaseNameMasterLanguage,
// PhaseCurrentTask.TaskName as CurrentPhaseNameMasterLanguage,
//
// @Semantics.businessDate.to: true
////
// PhaseCurrentTask.LatestFinishDate as CurrentPhaseEndDate,
@Semantics.businessDate.at: true
// r
MilestEssentTask.LatestFinishDate as LaunchDate,
// criticality
Severity.CriticalityCode,
// Severtiy
// @ObjectModel.foreignKey.association: '_SeverityText' // only on UI layer to avoid ATC errors
@ObjectModel.text.association: '_SeverityText'
Severity.Severity,
Severity._SeverityText,
_ProjectPhaseCurrent,
Project._AuthUser,
Project._AuthSubst,
Project._AuthRole,
Project._AuthGroup
} where (
// All active Status: Partially Released, Released, Released (Processing has begun), Locked, Locked (Released First)
ProjectProcessingStatus between '10' and '21'
) and Project.ProjectVersionNumber = '' // active projects do not have a version!
and ( IsMyProject.IsMyProject = 'X' // only show 'My' or MeAsSubstitute
or IsMyProjectAsSubstitute.IsMyProject = 'X' )
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_PPM_ISMYPROJECT",
"I_PPM_ISMYPROJECTASSUBSTITUTE",
"I_PPM_ITEMINFO",
"I_PPM_OBJECTSEVERITY",
"I_PPM_PROJECTMILESTESSENT",
"I_PPM_PROJECTSUMMARYTASK",
"I_PPM_TASK",
"I_PPM_TEXT"
],
"ASSOCIATED":
[
"I_PPM_AUTHZNBYSUBSTITH",
"I_PPM_AUTHZNBYUSERROLEH",
"I_PPM_AUTHZNBYUSRGRPH",
"I_PPM_AUTHZNBYUSRH",
"I_PPM_PROJECTPHASECURRENT",
"I_PPM_SEVERITYTEXT"
],
"BASE":
[
"I_PPM_OBJECTSEVERITY",
"I_PPM_PROJECTSUMMARYTASK"
],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/