P_ProjectObject
P_ProjectObject is a Composite CDS View in SAP S/4HANA. It reads from 5 data sources (I_ManufacturingOrder, I_WBSElementBasicData, I_MaintenanceOrder, I_ProjectBasicData, I_WBSElementStructure) and exposes 35 fields with key fields ProjectObjectNode, IsActiveEntity, IsActiveEntity, IsActiveEntity, IsActiveEntity. It has 2 associations to related views.
Data Sources (5)
| Source | Alias | Join Type |
|---|---|---|
| I_ManufacturingOrder | _Order | union |
| I_WBSElementBasicData | _WBS | inner |
| I_MaintenanceOrder | I_MaintenanceOrder | union |
| I_ProjectBasicData | I_ProjectBasicData | from |
| I_WBSElementStructure | I_WBSElementStructure | union |
Associations (2)
| Cardinality | Target | Alias | Condition |
|---|---|---|---|
| [0..1] | I_EnterpriseProject | _EnterpriseProject | $projection.ProjectObjectInternalID = _EnterpriseProject.ProjectInternalID |
| [0..1] | I_EnterpriseProjectElement | _EnterpriseProjectElement | $projection.ProjectObjectInternalID = _EnterpriseProjectElement.WBSElementInternalID |
Annotations (5)
| Name | Value | Level | Field |
|---|---|---|---|
| AbapCatalog.sqlViewName | PPROJECTOBJECT | view | |
| AccessControl.authorizationCheck | #NOT_REQUIRED | view | |
| ObjectModel.representativeKey | ProjectObjectNode | view | |
| VDM.viewType | #COMPOSITE | view | |
| VDM.private | true | view |
Fields (35)
| Key | Field | Source Table | Source Field | Description |
|---|---|---|---|---|
| KEY | ProjectObjectNode | ProjectObject | ||
| KEY | IsActiveEntity | |||
| ProjectObjectRootNode | ProjectObject | |||
| ProjectObjectParentNode | ||||
| ProjectObjectType | ||||
| ProjectObjectInternalID | ProjectInternalID | |||
| ProjectObjectUUID | _EnterpriseProject | ProjectUUID | ||
| ProjectObjectExternalID | Project | |||
| ProjectObjectDescription | ProjectDescription | |||
| WBSElementObjectasProjectObjectNode | ||||
| KEY | IsActiveEntity | |||
| ProjectObjectRootNode | _Project | ProjectObject | ||
| ProjectObjectType | ||||
| ProjectObjectInternalID | WBSElementInternalID | |||
| ProjectObjectUUID | _EnterpriseProjectElement | ProjectElementUUID | ||
| ProjectObjectExternalID | _WBSElement | WBSElement | ||
| ProjectObjectDescription | _WBSElement | WBSDescription | ||
| KEY | IsActiveEntity | |||
| ProjectObjectRootNode | ||||
| ProjectObjectParentNode | _WBSElement | WBSElementObject | ||
| ProjectObjectType | ||||
| ProjectObjectInternalID | MaintenanceOrder | |||
| ProjectObjectUUID | _EnterpriseProject | ProjectUUID | ||
| ProjectObjectExternalID | ||||
| ProjectObjectDescription | MaintenanceOrderDesc | |||
| ManufacturingOrderasProjectObjectNode | ||||
| KEY | IsActiveEntity | |||
| ProjectObjectRootNode | ||||
| ProjectObjectParentNode | ||||
| ProjectObjectType | ||||
| ProjectObjectInternalID | I_ManufacturingOrder | ManufacturingOrder | ||
| ProjectObjectUUID | _EnterpriseProject | ProjectUUID | ||
| ProjectObjectExternalID | ||||
| ProjectObjectDescription | I_ManufacturingOrder | ManufacturingOrderText | ||
| Project |
@AbapCatalog.sqlViewName: 'PPROJECTOBJECT'
@AccessControl.authorizationCheck: #NOT_REQUIRED
@ObjectModel.representativeKey: 'ProjectObjectNode'
@ObjectModel.semanticKey: [ 'ProjectObjectExternalID', 'IsActiveEntity' ]
@VDM.viewType: #COMPOSITE
@VDM.private: true
define view P_ProjectObject
as select from I_ProjectBasicData
association [0..1] to I_EnterpriseProject as _EnterpriseProject on $projection.ProjectObjectInternalID = _EnterpriseProject.ProjectInternalID
{
key ProjectObject as ProjectObjectNode,
key 'A' as IsActiveEntity,
ProjectObject as ProjectObjectRootNode,
cast(' ' as abap.char(22)) as ProjectObjectParentNode,
cast('PD' as abap.char(2)) as ProjectObjectType,
ProjectInternalID as ProjectObjectInternalID,
_EnterpriseProject.ProjectUUID as ProjectObjectUUID,
Project as ProjectObjectExternalID,
ProjectDescription as ProjectObjectDescription,
Project
}
where
I_ProjectBasicData.ProjectObject <> ''
union select from I_WBSElementStructure
association [0..1] to I_EnterpriseProjectElement as _EnterpriseProjectElement on $projection.ProjectObjectInternalID = _EnterpriseProjectElement.WBSElementInternalID
{
key _WBSElement.WBSElementObject as ProjectObjectNode,
key 'A' as IsActiveEntity,
_Project.ProjectObject as ProjectObjectRootNode,
case
when WBSElementParentInternalID = '00000000'
then _Project.ProjectObject
else
_WBSElementParent.WBSElementObject
end as ProjectObjectParentNode,
cast('PR' as abap.char(2)) as ProjectObjectType,
WBSElementInternalID as ProjectObjectInternalID,
_EnterpriseProjectElement.ProjectElementUUID as ProjectObjectUUID,
_WBSElement.WBSElement as ProjectObjectExternalID,
_WBSElement.WBSDescription as ProjectObjectDescription,
_Project.Project as Project
}
where
_WBSElement.WBSElementObject <> ''
//S/4HANA CE2108 - Maintenance Order enablement-Begin
union select from I_MaintenanceOrder
association [0..1] to I_EnterpriseProject as _EnterpriseProject on I_MaintenanceOrder.ProjectInternalID = _EnterpriseProject.ProjectInternalID
{
key MaintenanceOrder as ProjectObjectNode,
key 'A' as IsActiveEntity,
_WBSElement._Project.ProjectObject as ProjectObjectRootNode,
_WBSElement.WBSElementObject as ProjectObjectParentNode,
cast('OR' as abap.char(2)) as ProjectObjectType,
MaintenanceOrder as ProjectObjectInternalID,
_EnterpriseProject.ProjectUUID as ProjectObjectUUID,
ltrim( MaintenanceOrder, '0' ) as ProjectObjectExternalID,
MaintenanceOrderDesc as ProjectObjectDescription,
_WBSElement._Project.Project
}
where
MaintenanceOrder <> ''
//S/4HANA CE2108 - Maintenance Order enablement-End
//S/4HANA CE2302 - Production Order enablement-Begin
union select from I_ManufacturingOrder as _Order
inner join I_WBSElementBasicData as _WBS on _Order.WBSElementInternalID = _WBS.WBSElementInternalID
association [0..1] to I_EnterpriseProject as _EnterpriseProject on _WBS.ProjectInternalID = _EnterpriseProject.ProjectInternalID
{
key _Order.ManufacturingOrder as ProjectObjectNode,
key 'A' as IsActiveEntity,
_Order._WBSElement._Project.ProjectObject as ProjectObjectRootNode,
_Order._WBSElement.WBSElementObject as ProjectObjectParentNode,
cast('PO' as abap.char(2)) as ProjectObjectType,
_Order.ManufacturingOrder as ProjectObjectInternalID,
_EnterpriseProject.ProjectUUID as ProjectObjectUUID,
ltrim( _Order.ManufacturingOrder, '0' ) as ProjectObjectExternalID,
_Order.ManufacturingOrderText as ProjectObjectDescription,
_Order._WBSElement._Project.Project as Project
}
where
_Order.ManufacturingOrder <> ''
//S/4HANA CE2302 - Production Order enablement-End
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_ENTERPRISEPROJECT",
"I_ENTERPRISEPROJECTELEMENT",
"I_MAINTENANCEORDER",
"I_MANUFACTURINGORDER",
"I_PROJECTBASICDATA",
"I_PROJECTBYINTERNALKEY",
"I_WBSELEMENTBASICDATA",
"I_WBSELEMENTBYINTERNALKEY",
"I_WBSELEMENTSTRUCTURE"
],
"ASSOCIATED":
[
"I_ENTERPRISEPROJECT"
],
"BASE":
[],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/
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