I_PPM_PROJECTROOT

CDS View

Root object for project like data

I_PPM_PROJECTROOT is a CDS View in S/4HANA. Root object for project like data. It contains 18 fields. 7 CDS views read from this table.

CDS Views using this table (7)

ViewTypeJoinVDMDescription
I_EnterpriseProjectForUser view_entity from COMPOSITE Enterprise Project with user involvement
I_EnterpriseProjectVH view inner COMPOSITE Enterprise Project value help
I_EntProjProfnlSrvcBillgDoc view_entity from COMPOSITE
I_EntProjProfnlSrvcBillgElmnt view_entity from COMPOSITE Billing Elements of Projects
I_PPM_ChecklistItemText view left_outer COMPOSITE Check item text
I_PPM_ProjectRoleText view left_outer COMPOSITE Project Role Text
I_PPM_ProjectSummaryTask view inner COMPOSITE Project, Projecttemplate or snapshot

Fields (18)

KeyField CDS FieldsUsed in Views
KEY ProjectUUID ProjectUUID 5
_I_Project _I_Project 1
_ProjectLastChangedByUser _ProjectLastChangedByUser 1
EnterpriseProjectServiceOrg EnterpriseProjectServiceOrg 2
EntProjectIsConfidential EntProjectIsConfidential 2
IsSummaryTaskEnabled IsSummaryTaskEnabled 1
MasterLanguage MasterLanguage 1
OrganizationalUnit OrganizationalUnit 1
OrganizationalUnitObjectType OrganizationalUnitObjectType 1
PlanVersion PlanVersion 1
ProjectCategory ProjectCategory 2
ProjectEarliestOrLatest ProjectEarliestOrLatest 1
ProjectInternalID ProjectInternalID 1
ProjectLastChangedByUser ProjectLastChangedByUser 1
ProjectLastChangedDateTime ProjectLastChangedDateTime 1
ProjectLocation ProjectLocation 1
ProjectReasonCode ProjectReasonCode 1
ProjectTemplateUUID ProjectTemplateUUID 1
@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    
}                                                                                 
  
  
  
  
  
  
  
  
 /*+[internal] {
"BASEINFO":
{
"FROM":
[
"/S4PPM/PROJECT"
],
"ASSOCIATED":
[
"I_PPM_TASK",
"I_PROJECTBASICDATA",
"I_USER"
],
"BASE":
[],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/