I_PPM_ProjectObjectLink
PPM Project Object Link
I_PPM_ProjectObjectLink is a Composite CDS View that provides data about "PPM Project Object Link" in SAP S/4HANA. It reads from 2 data sources (I_PPM_ObjectLinkBasicData, I_PPM_ProjectSummaryTask) and exposes 19 fields with key field ProjectObjectLinkUUID. It has 3 associations to related views. Part of development package PPM_OBJECTS_DEPRECATED.
Data Sources (2)
| Source | Alias | Join Type |
|---|---|---|
| I_PPM_ObjectLinkBasicData | ProjectObjectLink | from |
| I_PPM_ProjectSummaryTask | PST | inner |
Associations (3)
| Cardinality | Target | Alias | Condition |
|---|---|---|---|
| [1 ] | I_PPM_ObjectLinkType | _ObjectLinkType | $projection.ObjectLinkType = _ObjectLinkType.ObjectLinkType |
| [1 ] | I_PPM_ObjectLinkTypeText | _ObjectLinkTypeText | $projection.ObjectLinkType = _ObjectLinkTypeText.ObjectLinkType and _ObjectLinkTypeText.LanguageCode = $session.system_language |
| [1..1] | I_PPM_Project | _Root | $projection.ProjectUUID = _Root.ProjectUUID |
Annotations (13)
| Name | Value | Level | Field |
|---|---|---|---|
| VDM.lifecycle.status | #DEPRECATED | view | |
| VDM.lifecycle.successor | I_EnterpriseProjectObjectLink | view | |
| AbapCatalog.sqlViewName | IPPMPROJOBJLINK | view | |
| AbapCatalog.compiler.compareFilter | true | view | |
| ClientHandling.algorithm | #SESSION_VARIABLE | view | |
| VDM.viewType | #COMPOSITE | view | |
| ObjectModel.usageType.serviceQuality | #D | view | |
| ObjectModel.usageType.dataClass | #TRANSACTIONAL | view | |
| ObjectModel.usageType.sizeCategory | #L | view | |
| AccessControl.authorizationCheck | #CHECK | view | |
| AccessControl.personalData.blocking | #NOT_REQUIRED | view | |
| EndUserText.label | PPM Project Object Link | view | |
| VDM.lifecycle.contract.type | #SAP_INTERNAL_API | view |
Fields (19)
| Key | Field | Source Table | Source Field | Description |
|---|---|---|---|---|
| KEY | ProjectObjectLinkUUID | |||
| ProjectUUID | I_PPM_ProjectSummaryTask | ProjectUUID | ||
| ProjectSummaryTaskUUID | I_PPM_ProjectSummaryTask | ProjectSummaryTaskUUID | ||
| WBSElementInternalID | I_PPM_ProjectSummaryTask | WBSElementInternalID | ||
| ObjectLinkType | I_PPM_ObjectLinkBasicData | ObjectLinkType | ||
| ObjectLinkTypeGrouping | _ObjectLinkType | ObjectLinkTypeGrouping | ||
| CreatedByUser | I_PPM_ObjectLinkBasicData | CreatedByUser | ||
| CreationDateTime | ||||
| LastChangedByUser | I_PPM_ObjectLinkBasicData | LastChangedByUser | ||
| LastChangeDateTime | ||||
| ObjectLinkURL | ObjectLinkURL | |||
| _Root | _Root | |||
| _ProjObjRoot | I_PPM_ProjectSummaryTask | _ProjObjRoot | ||
| _AuthUser | I_PPM_ProjectSummaryTask | _AuthUser | ||
| _AuthSubst | I_PPM_ProjectSummaryTask | _AuthSubst | ||
| _AuthRole | I_PPM_ProjectSummaryTask | _AuthRole | ||
| _AuthGroup | I_PPM_ProjectSummaryTask | _AuthGroup | ||
| _ObjectLinkType | _ObjectLinkType | |||
| _ObjectLinkTypeText | _ObjectLinkTypeText |
@VDM.lifecycle:
{ status: #DEPRECATED,
successor: 'I_EnterpriseProjectObjectLink' }
@AbapCatalog.sqlViewName: 'IPPMPROJOBJLINK'
@AbapCatalog.compiler.compareFilter: true
@ClientHandling.algorithm: #SESSION_VARIABLE
@VDM.viewType: #COMPOSITE
@ObjectModel.usageType:
{
// representativeKey: 'ProjectObjectLinkUUID',
// alternativeKey: [ { id : 'Project', uniqueness: #UNIQUE, element: [ 'ProjectUUID' ] } ],
serviceQuality: #D,
dataClass: #TRANSACTIONAL,
sizeCategory: #L
}
@AccessControl.authorizationCheck: #CHECK
@AccessControl.personalData.blocking: #NOT_REQUIRED
@EndUserText.label: 'PPM Project Object Link'
@VDM.lifecycle.contract.type: #SAP_INTERNAL_API
define view I_PPM_ProjectObjectLink as select from I_PPM_ObjectLinkBasicData as ProjectObjectLink
inner join I_PPM_ProjectSummaryTask as PST on ProjectObjectLink.ProjectUUID = PST.ProjectSummaryTaskUUID //Authorization Check
// left outer join /s4ppm/cds_dummy as dummy on PST.ProjectUUID = dummy.dummy_key //workaround to get 'transient' string field
// associations for fixed values and texts
association [1 ] to I_PPM_ObjectLinkType as _ObjectLinkType on $projection.ObjectLinkType = _ObjectLinkType.ObjectLinkType
// TODO TOASK [*] cardinality in Template area code (but cardinality defined differrently in StatusAreaCode view
association [1 ] to I_PPM_ObjectLinkTypeText as _ObjectLinkTypeText on $projection.ObjectLinkType = _ObjectLinkTypeText.ObjectLinkType
and _ObjectLinkTypeText.LanguageCode = $session.system_language
// BO composition associations
association [1..1] to I_PPM_Project as _Root on $projection.ProjectUUID = _Root.ProjectUUID
{
//@ObjectModel.text.element: ['ObjectLinkName']
key cast( ProjectObjectLink.ObjectLinkUUID as /s4ppm/tv_entity_guid ) as ProjectObjectLinkUUID,
@ObjectModel.readOnly: true
PST.ProjectUUID,
// Needed for authorization - Association
@ObjectModel.readOnly: true
PST.ProjectSummaryTaskUUID,
@ObjectModel.readOnly: true
PST.WBSElementInternalID,
@ObjectModel.readOnly: true
@ObjectModel.foreignKey.association: '_ObjectLinkType'
@ObjectModel.text.association: '_ObjectLinkTypeText'
// @Consumption.valueHelp: '' // Not needed as field is readOnly.
ProjectObjectLink.ObjectLinkType,
@ObjectModel.readOnly: true
_ObjectLinkType.ObjectLinkTypeGrouping,
@ObjectModel.readOnly: true
@Semantics.user.createdBy: true
ProjectObjectLink.CreatedByUser,
@ObjectModel.readOnly: true
@Semantics.systemDateTime.createdAt: true
cast( ProjectObjectLink.CreationDateTime as /s4ppm/tv_created_on ) as CreationDateTime,
@ObjectModel.readOnly: true
@Semantics.user.lastChangedBy: true
ProjectObjectLink.LastChangedByUser,
@ObjectModel.readOnly: true
@Semantics.systemDateTime.lastChangedAt: true
cast( ProjectObjectLink.LastChangeDateTime as /s4ppm/tv_changed_on ) as LastChangeDateTime,
// @ObjectModel.readOnly: true
// ObjectKey,
// @ObjectModel.readOnly: true
// ExternalId,
//@ObjectModel.readOnly: true
//ObjectLinkName,
@ObjectModel.readOnly: true
ObjectLinkURL,
// BO Hierarchy related associations
@ObjectModel.association.type: [ #TO_COMPOSITION_PARENT, #TO_COMPOSITION_ROOT ]
_Root,
// Authorization association
PST._ProjObjRoot,
PST._AuthUser,
PST._AuthSubst,
PST._AuthRole,
PST._AuthGroup,
_ObjectLinkType,
_ObjectLinkTypeText
} where _ObjectLinkType.ObjectLinkTypeGrouping = 'YIPD_COLLABORAT'
or _ObjectLinkType.ObjectLinkTypeGrouping = 'SPIN_COLLABORAT' ;
// ProjectObjectLink.ObjectLinkType <> 'YPSROOTWBS' //'YPSPROJDEF'
Learn More
- What Is a CDS View in SAP S/4HANA?
- Types of CDS Views: Basic, Composite, Consumption, and Transactional
- SAP Tables vs CDS Views — Key Differences
- Understanding Data Lineage in SAP S/4HANA
- VDM (Virtual Data Model) in SAP S/4HANA Explained
- CDS View Annotations — A Complete Guide
- CDS View Field Mapping and Associations
- Understanding the SAP S/4HANA Data Model
- CDS View Extensions and Custom Fields in SAP S/4HANA
- Released APIs and Stability Contracts in SAP S/4HANA