I_PPM_ProjectRoot

DDL: I_PPM_PROJECTROOT Type: view BASIC

Root object for project like data

I_PPM_ProjectRoot is a Basic CDS View that provides data about "Root object for project like data" in SAP S/4HANA. It reads from 1 data source (/s4ppm/project) and exposes 21 fields with key field ProjectUUID. It has 5 associations to related views.

Data Sources (1)

SourceAliasJoin Type
/s4ppm/project Root from

Associations (5)

CardinalityTargetAliasCondition
[0..1] I_PPM_Task _SummaryTask ( _SummaryTask.ProjectUUID = $projection.ProjectUUID ) and ( _SummaryTask.ObjectType = 'DPO' )
[0..*] I_PPM_Task _Task ( _Task.ProjectUUID = $projection.ProjectUUID ) and ( _Task.ObjectType = 'TPO' ) and ( _Task.ObjectType = 'TTO' )
[0..*] I_PPM_Task _Phase ( _Phase.ProjectUUID = $projection.ProjectUUID ) and ( _Phase.ObjectType = 'PPO' )
[0..1] I_User _ProjectLastChangedByUser ( $projection.ProjectLastChangedByUser = _ProjectLastChangedByUser.UserID )
[0..1] I_ProjectBasicData _I_Project ( _I_Project.ProjectInternalID = $projection.ProjectInternalID )

Annotations (13)

NameValueLevelField
EndUserText.label Root object for project like data view
VDM.viewType #BASIC view
ClientHandling.algorithm #SESSION_VARIABLE view
AccessControl.authorizationCheck #PRIVILEGED_ONLY view
AccessControl.personalData.blocking #NOT_REQUIRED view
AbapCatalog.sqlViewName IPPMPROJECTROOT view
AbapCatalog.compiler.compareFilter true view
AbapCatalog.preserveKey true view
ObjectModel.representativeKey ProjectUUID view
ObjectModel.usageType.serviceQuality #A view
ObjectModel.usageType.dataClass #MIXED view
ObjectModel.usageType.sizeCategory #L view
VDM.lifecycle.contract.type #SAP_INTERNAL_API view

Fields (21)

KeyFieldSource TableSource FieldDescription
KEY ProjectUUID /s4ppm/project guid
ProjectCategory /s4ppm/project pro_category
ProjectLastChangedByUser /s4ppm/project last_changed_by
ProjectLastChangedDateTime /s4ppm/project last_changed_on
ProjectReasonCode /s4ppm/project cause
MasterLanguage /s4ppm/project master_language
ProjectTemplateUUID
IsSummaryTaskEnabled /s4ppm/project summary_tasks
ProjectLocation /s4ppm/project location
PlanVersion /s4ppm/project plvar
OrganizationalUnitObjectType /s4ppm/project otype
OrganizationalUnit /s4ppm/project resp_org_unit
ProjectInternalID
ProjectEarliestOrLatest /s4ppm/project earliest_latest_dates
EnterpriseProjectServiceOrg /s4ppm/project org_id
EntProjectIsConfidential /s4ppm/project confidential
_I_Project _I_Project
_SummaryTask _SummaryTask
_Task _Task
_Phase _Phase
_ProjectLastChangedByUser _ProjectLastChangedByUser
@EndUserText.label: 'Root object for project like data'

@VDM.viewType: #BASIC

@ClientHandling.algorithm: #SESSION_VARIABLE            

@AccessControl.authorizationCheck: #PRIVILEGED_ONLY
@AccessControl.personalData.blocking: #NOT_REQUIRED

@AbapCatalog: { 
    sqlViewName: 'IPPMPROJECTROOT',
    compiler.compareFilter: true,
    preserveKey:true
}

@ObjectModel: {
//   semanticKey:       [ 'Project' ], // no semantic key here, as this is part of the PST only

   representativeKey: 'ProjectUUID',
   alternativeKey: [ { id : 'ProjectInternalID', uniqueness: #UNIQUE, element: 'ProjectInternalID' } ],
   usageType: {
     serviceQuality:  #A,
     dataClass:       #MIXED,
     sizeCategory:    #L
   }
}

@VDM.lifecycle.contract.type:  #SAP_INTERNAL_API 

define view I_PPM_ProjectRoot as select from /s4ppm/project as Root
    association [0..1] to I_PPM_Task as _SummaryTask 
            on ( _SummaryTask.ProjectUUID = $projection.ProjectUUID )
           and ( _SummaryTask.ObjectType = 'DPO' )
    association [0..*] to I_PPM_Task as _Task 
            on ( _Task.ProjectUUID = $projection.ProjectUUID )
           and ( _Task.ObjectType = 'TPO' )
           and ( _Task.ObjectType = 'TTO' )
    association [0..*] to I_PPM_Task as _Phase 
            on ( _Phase.ProjectUUID = $projection.ProjectUUID )
           and ( _Phase.ObjectType = 'PPO' )
  // association [0..*] to I_PPM_TASK as _Milestone on ???? all milestones of a project

    association [0..1] to I_User as _ProjectLastChangedByUser 
            on ( $projection.ProjectLastChangedByUser = _ProjectLastChangedByUser.UserID )
  // PS Project

    association [0..1] to I_ProjectBasicData as _I_Project
          on   ( _I_Project.ProjectInternalID       = $projection.ProjectInternalID )
  // Association to source project

//    association [0..1] to I_PPM_ProjectRoot  as _TemplateProject

//          on   ( _TemplateProject.ProjectUUID       = $projection.ProjectTemplateUUID )

         
{
    key Root.guid                                                           as ProjectUUID, 
    Root.pro_category                                                       as ProjectCategory,
    @Semantics.user.lastChangedBy: true
    @ObjectModel.foreignKey.association: '_ProjectLastChangedByUser'
    Root.last_changed_by                                                    as ProjectLastChangedByUser, 
    //@Semantics.systemDateTime.lastChangedAt: true                

    Root.last_changed_on                                                    as ProjectLastChangedDateTime, 
    
    Root.cause                                                              as ProjectReasonCode,

    Root.master_language                                                    as MasterLanguage, 
    // how about BuPa association?

//    Root.template_admin     as ProjectTemplateAdminBuPaUUID, 

//    @ObjectModel.foreignKey.association: '_TemplateProject'

    cast(Root.template_guid   as /s4ppm/tv_entity_guid preserving type )    as ProjectTemplateUUID, 
//    Root.schedule_type      as ProjectScheduleingType, 

    Root.summary_tasks                                                      as IsSummaryTaskEnabled,
//    Root.summary_tasks      as IsSummaryTasksEnabled,  

//    Root.periodtype         as PeriodType, 

//    Root.allocation_unit    as ResourceAllocationUnit, 

    Root.location                                                           as ProjectLocation, 
//    Root.customer           as ProjectRcvCustomerUUID, 

//    Root.sold_to_party      as ProjectSoldToPartyUUID, 

//    Root.sort_overall       as ProjectSortMode, 

    Root.plvar                                                              as PlanVersion, 
    Root.otype                                                              as OrganizationalUnitObjectType, 
    Root.resp_org_unit                                                      as OrganizationalUnit, 
    
    @ObjectModel.foreignKey.association: '_I_Project'
    cast ( Root.pspnr as ps_s4_proj_pspnr preserving type )                 as ProjectInternalID,
//    Root.actual2plan        as ProjectActualToPlan, 

//    Root.rstr_vis           as HasRestrictedVisibility, 

//    Root.nonseq_phases      as HasNonSequentialPhases, 

    Root.earliest_latest_dates                                              as ProjectEarliestOrLatest,
    Root.org_id                                                             as EnterpriseProjectServiceOrg,
    Root.confidential                                                       as EntProjectIsConfidential,
    
// Make associations public

    _I_Project,
    _SummaryTask, 
    _Task,
    _Phase,
//    _TemplateProject,

    _ProjectLastChangedByUser    
}