I_PPM_PROJECTROOT
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)
| View | Type | Join | VDM | Description |
|---|---|---|---|---|
| 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)
| Key | Field | CDS Fields | Used 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":""
}
}*/