I_PPM_MostCriticalProject

DDL: I_PPM_MOSTCRITICALPROJECT SQL: IPPMMOSTCRITPRO Type: view COMPOSITE

My Projects - Critical

I_PPM_MostCriticalProject is a Composite CDS View that provides data about "My Projects - Critical" in SAP S/4HANA. It reads from 9 data sources and exposes 19 fields with key field ProjectUUID. It has 1 association to related views.

Data Sources (9)

SourceAliasJoin Type
I_EPPMGlobalSetting _GlobalSetting left_outer
I_PPM_IsMyProject IsMyProject left_outer
I_PPM_IsMyProjectAsSubstitute IsMyProjectAsSubstitute left_outer
I_PPM_ItemInfo Item left_outer
I_PPM_ProjectMilestEssent milestEssent left_outer
I_PPM_Task MilestEssentTask left_outer
I_PPM_Text NameUserLanguage left_outer
I_PPM_ProjectSummaryTask Project from
I_PPM_ObjectSeverity Severity left_outer

Associations (1)

CardinalityTargetAliasCondition
[0..1] I_PPM_ProjectPhaseCurrent _ProjectPhaseCurrent $projection.ProjectUUID = _ProjectPhaseCurrent.ProjectUUID

Annotations (13)

NameValueLevelField
EndUserText.label My Projects - Critical view
VDM.viewType #COMPOSITE view
AbapCatalog.sqlViewName IPPMMOSTCRITPRO view
AbapCatalog.compiler.compareFilter true view
ObjectModel.usageType.serviceQuality #X view
ObjectModel.usageType.sizeCategory #L view
ObjectModel.usageType.dataClass #MIXED view
ClientHandling.algorithm #SESSION_VARIABLE view
AccessControl.authorizationCheck #PRIVILEGED_ONLY view
AccessControl.personalData.blocking #NOT_REQUIRED view
ObjectModel.representativeKey ProjectUUID view
Metadata.allowExtensions true view
VDM.lifecycle.contract.type #SAP_INTERNAL_API view

Fields (19)

KeyFieldSource TableSource FieldDescription
KEY ProjectUUID I_PPM_ProjectSummaryTask ProjectUUID
ProjectSummaryTaskUUID I_PPM_ProjectSummaryTask ProjectSummaryTaskUUID
PortfolioItemUUID I_PPM_ItemInfo PortfolioItemUUID
PortfolioUUID I_PPM_ItemInfo PortfolioUUID
ProjectProcessingStatus I_PPM_ProjectSummaryTask ProjectProcessingStatus
ProjectNameUserLanguage I_PPM_Text ObjectName
ProjectNameMasterLanguage ProjectName
Project Project
ProjectType ProjectType
LaunchDate I_PPM_Task LatestFinishDate
CriticalityCode I_PPM_ObjectSeverity CriticalityCode
Severity I_PPM_ObjectSeverity Severity
_SeverityText I_PPM_ObjectSeverity _SeverityText
EPPMSettingsDefaultValue I_EPPMGlobalSetting EPPMSettingsDefaultValue
_ProjectPhaseCurrent _ProjectPhaseCurrent
_AuthUser I_PPM_ProjectSummaryTask _AuthUser
_AuthSubst I_PPM_ProjectSummaryTask _AuthSubst
_AuthRole I_PPM_ProjectSummaryTask _AuthRole
_AuthGroup I_PPM_ProjectSummaryTask _AuthGroup
@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

    left outer join I_EPPMGlobalSetting as _GlobalSetting on _GlobalSetting.EPPMUsageArea = '0007' and _GlobalSetting.EPPMGlobalSettingsCode = '0053'

    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,

    _GlobalSetting.EPPMSettingsDefaultValue,

    _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' )