I_PPM_MyActiveProjects

DDL: I_PPM_MYACTIVEPROJECTS SQL: IPPMMYACTIVE Type: view COMPOSITE

My Projects – Active

I_PPM_MyActiveProjects is a Composite CDS View that provides data about "My Projects – Active" in SAP S/4HANA. It reads from 12 data sources and exposes 25 fields with key field ProjectUUID.

Data Sources (12)

SourceAliasJoin Type
I_EPPMGlobalSetting _GlobalSetting left_outer
I_PPM_ItemInfo Item left_outer
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)

NameValueLevelField
EndUserText.label My Projects – Active view
VDM.viewType #COMPOSITE view
AbapCatalog.sqlViewName IPPMMYACTIVE 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 (25)

KeyFieldSource TableSource FieldDescription
KEY ProjectUUID P_PPM_ProjectList ProjectUUID
ProjectSummaryTaskUUID P_PPM_ProjectList ProjectSummaryTaskUUID
PortfolioItemUUID I_PPM_ItemInfo PortfolioItemUUID
PortfolioUUID I_PPM_ItemInfo PortfolioUUID
ProjectNameUserLanguage ProjectNameUserLanguage
ProjectNameMasterLanguage ProjectNameMasterLanguage
Project P_PPM_ProjectList Project
ProjectType P_PPM_ProjectList ProjectType
ProjectTypeName P_PPM_ProjectList ProjectTypeName
ProjectInternalID P_PPM_ProjectList ProjectInternalID
CurrentPhaseNameUserLanguage I_PPM_Text ObjectName
CurrentPhaseNameMasterLanguage I_PPM_Task TaskName
CurrentPhase I_PPM_Task ExternalId
CurrentPhaseEndDate I_PPM_Task LatestFinishDate
LaunchDate I_PPM_Task LatestFinishDate
NextMilestoneNameUserLanguage I_PPM_Text ObjectName
NextMilestoneNameMasterLang I_PPM_Task TaskName
NextMilestone I_PPM_Task ExternalId
NextMilestoneDate I_PPM_Task LatestFinishDate
ProjectImageURL P_PPM_ProjectImage ProjectImageURL
EPPMSettingsDefaultValue I_EPPMGlobalSetting EPPMSettingsDefaultValue
_AuthUser P_PPM_ProjectList _AuthUser
_AuthSubst P_PPM_ProjectList _AuthSubst
_AuthRole P_PPM_ProjectList _AuthRole
_AuthGroup P_PPM_ProjectList _AuthGroup
@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

define view I_PPM_MyActiveProjects
  as select from    P_PPM_ProjectList          as Project
/* To distinguish CE Project Category from OP project ( CE completed is active ).
      inner join    I_PPM_ProjectType          as ProjectType                 on Project.ProjectType = ProjectType.ProjectType */

  // next relevant milestone

    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_Text                 as MilestRelNextTextUserLang   on (
         MilestRelNextTextUserLang.LanguageCode = $session.system_language   and
         MilestRelNextTextUserLang.ReferencedObjectUUID = MilestRelNext.TaskUUID   )

  // essential milestone

    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                 )

  // 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    )

  // retrieve portfolio info

    left outer join I_PPM_ItemInfo             as Item                        on(
                             Project.ProjectUUID = Item.ProjectUUID
                           )
  // project image

    left outer join P_PPM_ProjectImage         as projectImage                on
                             projectImage.ProjectUUID = Project.ProjectUUID
    left outer join I_EPPMGlobalSetting as _GlobalSetting on _GlobalSetting.EPPMUsageArea = '0007' and _GlobalSetting.EPPMGlobalSettingsCode = '0053'
{
      @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,

      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,
      _GlobalSetting.EPPMSettingsDefaultValue,

      Project._AuthUser,
      Project._AuthSubst,
      Project._AuthRole,
      Project._AuthGroup
}
where
// 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