P_PROJECTOBJECT_2
Project Object
P_PROJECTOBJECT_2 is a CDS View in S/4HANA. Project Object. It contains 14 fields. 5 CDS views read from this table.
CDS Views using this table (5)
| View | Type | Join | VDM | Description |
|---|---|---|---|---|
| I_ProjectStructure_2 | view | from | COMPOSITE | Project Structure |
| I_ProjectStructure_3 | view | from | COMPOSITE | Project Structure for Line Items |
| I_ProjectStructureHierNodeRltn | view | from | COMPOSITE | Hierarchy for Project structure |
| P_ProjectActualCostLineItem | view | inner | COMPOSITE | |
| P_ProjectPlanCostLineItem | view | inner | COMPOSITE |
Fields (14)
| Key | Field | CDS Fields | Used in Views |
|---|---|---|---|
| KEY | ProjectObjectNode | ProjectObjectNode | 3 |
| IsActiveEntity | IsActiveEntity | 1 | |
| OrderType | OrderType | 2 | |
| Project | Project | 3 | |
| ProjectObjectDescription | ProjectObjectDescription | 3 | |
| ProjectObjectExternalID | ProjectObjectExternalID | 3 | |
| ProjectObjectInternalID | ProjectObjectInternalID | 1 | |
| ProjectObjectParentNode | ProjectObjectParentNode | 1 | |
| ProjectObjectProfitCenter | ProjectObjectProfitCenter | 2 | |
| ProjectObjectRootNode | ProjectObjectRootNode | 3 | |
| ProjectObjectType | ProjectObjectType | 3 | |
| ProjectType | ProjectType | 3 | |
| ResponsibleCostCenter | ResponsibleCostCenter | 2 | |
| WBSElement | WBSElement | 3 |
@AbapCatalog.sqlViewName: 'PPROJECTOBJECT2'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'Project Object'
@ObjectModel.representativeKey: 'ProjectObjectNode'
@VDM.viewType: #COMPOSITE
@VDM.private: true
@ClientHandling.algorithm: #SESSION_VARIABLE
define view P_ProjectObject_2
as select from I_ProjectData_2
{
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,
case ProjectExternalID
when ''
then cast( Project as ps_pspid_edit preserving type )
else
ProjectExternalID
end as ProjectObjectExternalID,
// Project as ProjectObjectExternalID,
case
when _ProjectShortText.LanguageBasedShortText is not initial
then _ProjectShortText.LanguageBasedShortText
else ProjectDescription end as ProjectObjectDescription,
case ProjectExternalID
when ''
then cast( Project as ps_pspid_edit preserving type )
else
ProjectExternalID
end as Project,
// Project,
cast( '' as ps_s4_posid ) as WBSElement,
ProfitCenter as ProjectObjectProfitCenter,
cast( '' as ps_s4_fkstl ) as ResponsibleCostCenter,
cast( '' as ps_s4_prart ) as ProjectType,
cast( '' as aufart ) as OrderType
}
//where
// I_ProjectData_2.ProjectObject <> ''
union all select from I_WBSElementHierarchyData
association [0..1] to I_ProjectData_2 as _Projectdata on $projection.ProjectObjectRootNode = _Projectdata.ProjectObject
association [0..1] to I_WBSElementData_2 as _WBSElement on $projection.ProjectObjectInternalID = _WBSElement.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,
_WBSElement.WBSElementExternalID as ProjectObjectExternalID,
case
when _WBSElement._WBSElementShortText.LanguageBasedShortText is not initial
then _WBSElement._WBSElementShortText.LanguageBasedShortText
else _WBSElement.WBSDescription end as ProjectObjectDescription,
case _Project.ProjectExternalID
when ''
then cast( _Project.Project as ps_pspid_edit preserving type )
else
_Project.ProjectExternalID
end as Project,
// _Project.Project as Project,
_WBSElement.WBSElementExternalID as WBSElement,
_WBSElement.ProfitCenter as ProjectObjectProfitCenter,
_WBSElement.ResponsibleCostCenter as ResponsibleCostCenter,
_WBSElement.ProjectType as ProjectType,
cast( '' as aufart ) as OrderType
}
//where
// _WBSElement.WBSElementObject <> ''
union all select from I_MaintenanceOrder
{
key MaintenanceOrderInternalID as ProjectObjectNode,
key 'A' as IsActiveEntity,
_WBSElement._Project.ProjectObject as ProjectObjectRootNode,
_WBSElement.WBSElementObject as ProjectObjectParentNode,
cast('OR' as abap.char(2)) as ProjectObjectType,
cast(MaintenanceOrder as ps_s4_pspnr) as ProjectObjectInternalID,
ltrim( MaintenanceOrder, '0' ) as ProjectObjectExternalID,
MaintenanceOrderDesc as ProjectObjectDescription,
case _WBSElement._Project.ProjectWithCodingMask
when ''
then cast( _WBSElement._Project.Project as ps_pspid_edit preserving type )
else
_WBSElement._Project.ProjectWithCodingMask
end as Project,
_WBSElement.WBSElementExternalID as WBSElement,
ProfitCenter as ProjectObjectProfitCenter,
_WBSElement.ResponsibleCostCenter as ResponsibleCostCenter,
_WBSElement.ProjectType as ProjectType,
MaintenanceOrderType as OrderType
}
where
// MaintenanceOrderInternalID <> ''
WBSElementInternalID <> '00000000'
union all select from I_ProjectNetwork as _Network
{
key ProjectNetworkObject as ProjectObjectNode,
key 'A' as IsActiveEntity,
_Project.ProjectObject as ProjectObjectRootNode,
// case when WBSElementInternalID = '00000000'
// then
// _Project.ProjectObject
// else
// _WBSElement.WBSElementObject end as ProjectObjectParentNode,
_WBSElement.WBSElementObject as ProjectObjectParentNode,
cast('NP' as abap.char(2)) as ProjectObjectType,
cast(ProjectNetwork as ps_s4_pspnr) as ProjectObjectInternalID,
ltrim( ProjectNetwork, '0' ) as ProjectObjectExternalID,
case
when _NetworkShortText.LanguageBasedShortText is not initial
then _NetworkShortText.LanguageBasedShortText
else
ProjectNetworkDescription end as ProjectObjectDescription,
case _Project.ProjectWithCodingMask
when ''
then cast( _Project.Project as ps_pspid_edit preserving type )
else
_Project.ProjectWithCodingMask
end as Project,
// _Project.Project as Project,
_WBSElement.WBSElementExternalID as WBSElement,
ProfitCenter as ProjectObjectProfitCenter,
_Network._WBSElementText.ResponsibleCostCenter as ResponsibleCostCenter,
_Network._WBSElementText.ProjectType as ProjectType,
ProjectNetworkType as OrderType
}
where
// ProjectNetwork <> ''
WBSElementInternalID <> '00000000'
and NetworkIsAccountAssigned = 'X'
union all select from I_NetworkActivityForCostReport as _Activity
{
key NetworkActivityObject as ProjectObjectNode,
key 'A' as IsActiveEntity,
_WBSElement._Project.ProjectObject as ProjectObjectRootNode,
case SuperiorNtwkActivityInternalID
when '00000000'
then
case
when _Activity.NtwkAccountAssignmentCode = '2'
then
// case
// when _Activity.WBSElementInternalID = '00000000'
// then _Project.ProjectObject
// else _WBSElement.WBSElementObject end
_WBSElement.WBSElementObject
else ( concat( 'NP', _ProjectNetwork.ProjectNetwork ) ) end
else
( concat ( concat( 'NV', _ProjectNetwork.ProjectNetworkInternalID), SuperiorNtwkActivityInternalID ) ) //NV
end as ProjectObjectParentNode,
case SuperiorNtwkActivityInternalID
when '00000000'
then cast('NV' as abap.char(2))
else cast('EL' as abap.char(2)) end as ProjectObjectType,
cast(ProjectNetwork as ps_s4_pspnr) as ProjectObjectInternalID,
case SuperiorNtwkActivityInternalID
when '00000000'
then concat(concat(ltrim( ProjectNetwork, '0' ),'/'), NetworkActivity)
else concat(concat(concat(concat(ltrim( ProjectNetwork, '0' ) , '/'), NetworkActivity),'/'),NetworkActivityElement) end as ProjectObjectExternalID,
case
when _ActivityShortText.LanguageBasedShortText is not initial
then _ActivityShortText.LanguageBasedShortText
else NetworkActivityDescription end as ProjectObjectDescription,
// case
// when WBSElementInternalID = '00000000'
// then _Project.Project
// else _WBSElement._Project.Project end as Project,
case _WBSElement._Project.ProjectWithCodingMask
when ''
then cast( _WBSElement._Project.Project as ps_pspid_edit preserving type )
else
_WBSElement._Project.ProjectWithCodingMask
end as project,
_WBSElement.WBSElement as WBSElement,
ProfitCenter as ProjectObjectProfitCenter,
// case
// when WBSElementInternalID = '00000000'
// then ''
// else _WBSElement.ResponsibleCostCenter end as ResponsibleCostCenter,
_WBSElement.ResponsibleCostCenter,
// case
// when WBSElementInternalID = '00000000'
// then ''
// else _WBSElement.ProjectType end as ProjectType
_WBSElement.ProjectType,
ProjectNetworkType as OrderType
}
where
ProjectNetwork <> ''
and NtwkAccountAssignmentCode <> '1'
and WBSElementInternalID <> '00000000'
// union all select from I_MaintenanceOrderOperation
//{
// key MaintOrderOperationInternalID as ProjectObjectNode,
// key 'A' as IsActiveEntity,
// _MaintenanceOrder._Project.ProjectObject as ProjectObjectRootNode,
// _MaintenanceOrder._WBSElement.WBSElementObject as ProjectObjectParentNode,
// cast('OV' as abap.char(2)) as ProjectObjectType,
// MaintenanceOrder as ProjectObjectInternalID,
// concat( concat( ltrim( MaintenanceOrder, '0' ), '/' ), MaintenanceOrderOperation ) as ProjectObjectExternalID,
// OperationDescription as ProjectObjectDescription,
// _MaintenanceOrder._Project.Project,
// ProfitCenter as ProjectObjectProfitCenter,
// _MaintenanceOrder._WBSElement.ResponsibleCostCenter as ResponsibleCostCenter,
// _MaintenanceOrder._WBSElement.ProjectType as ProjectType
//}
//where
// _MaintenanceOrder._WBSElement.WBSElementObject <> ''
union all select from I_InternalOrder
{
key ControllingObject as ProjectObjectNode,
key 'A' as IsActiveEntity,
_WBSElementBasicData._Project.ProjectObject as ProjectObjectRootNode,
_WBSElementBasicData.WBSElementObject as ProjectObjectParentNode,
cast('IO' as abap.char(2)) as ProjectObjectType,
cast(InternalOrder as ps_s4_pspnr) as ProjectObjectInternalID,
ltrim( InternalOrder, '0' ) as ProjectObjectExternalID,
InternalOrderDescription as ProjectObjectDescription,
case _WBSElementBasicData._Project.ProjectExternalID
when ''
then cast( _WBSElementBasicData._Project.Project as ps_pspid_edit preserving type )
else
_WBSElementBasicData._Project.ProjectExternalID
end as Project,
_WBSElementBasicData.WBSElementExternalID as WBSElement,
ProfitCenter as ProjectObjectProfitCenter,
_WBSElementBasicData.ResponsibleCostCenter as ResponsibleCostCenter,
_WBSElementBasicData.ProjectType as ProjectType,
OrderType
}
where
WBSElementInternalID <> '00000000'
// Production Order -
union all select from I_ManufacturingOrder
{
key ObjectInternalID as ProjectObjectNode,
key 'A' as IsActiveEntity,
_WBSElementBasicData._Project.ProjectObject as ProjectObjectRootNode,
_WBSElementBasicData.WBSElementObject as ProjectObjectParentNode,
cast('PP'as abap.char(2)) as ProjectObjectType,
cast(ManufacturingOrder as ps_s4_pspnr) as ProjectObjectInternalID,
ltrim(ManufacturingOrder,'0') as ProjectObjectExternalID,
case
when ManufacturingOrderText = ''
then
_Product._Text[1: Language = $session.system_language].ProductName
else
ManufacturingOrderText end as ProjectObjectDescription,
// ManufacturingOrderText as ProjectObjectDescription,
case _WBSElementBasicData._Project.ProjectExternalID
when''
then cast(_WBSElementBasicData._Project.Project as ps_pspid_edit preserving type)
else
_WBSElementBasicData._Project.ProjectExternalID
end as Project,
_WBSElementBasicData.WBSElementExternalID as WBSElement,
ProfitCenter as ProjectObjectProfitCenter,
_WBSElementBasicData.ResponsibleCostCenter as ResponsibleCostCenter,
_WBSElementBasicData.ProjectType as ProjectType,
ManufacturingOrderType as OrderType
}
where
WBSElementInternalID <> '00000000'
and ManufacturingOrderCategory = '10'
//Service Order and Service Contract assigned to WBS element
union all select from I_AcctgServiceDocumentItem
{
key ControllingObject as ProjectObjectNode,
key 'A' as IsActiveEntity,
_WBSElementBasicData._Project.ProjectObject as ProjectObjectRootNode,
_WBSElementBasicData.WBSElementObject as ProjectObjectParentNode,
case substring( ControllingObject, 1, 2 )
when 'SV'
then cast('SV' as abap.char(2))
when 'SC'
then cast('SC' as abap.char(2)) end as ProjectObjectType,
cast( concat( '00', ServiceDocumentItem ) as ps_s4_pspnr ) as ProjectObjectInternalID,
concat(concat(ltrim( ServiceDocument, '0' ),'/'), ServiceDocumentItem) as ProjectObjectExternalID,
ServiceDocumentItemDescription as ProjectObjectDescription,
case _WBSElementBasicData._Project.ProjectExternalID
when ''
then cast( _WBSElementBasicData._Project.Project as ps_pspid_edit preserving type )
else
_WBSElementBasicData._Project.ProjectExternalID
end as Project,
_WBSElementBasicData.WBSElementExternalID as WBSElement,
ProfitCenter as ProjectObjectProfitCenter,
_WBSElementBasicData.ResponsibleCostCenter as ResponsibleCostCenter,
_WBSElementBasicData.ProjectType as ProjectType,
cast( '' as aufart ) as OrderType
}
where
WBSElementInternalID <> '00000000'
and(
ServiceObjectType = 'BUS2000112' //Service Contract
or ServiceObjectType = 'BUS2000116' //Service Order
)
// Service Order via Service Contract where WBS Element assgined to Service Contract. And Service Order created from Service Contract
union all select from I_AcctgServiceDocumentItem as _SV
association [0..*] to I_AcctgServiceDocumentItem as _SC on _SV.SrvcContrItmControllingObject = _SC.ControllingObject
and _SC.WBSElementInternalID <> '00000000'
{
key _SV.ControllingObject as ProjectObjectNode,
key 'A' as IsActiveEntity,
_SC._WBSElementBasicData._Project.ProjectObject as ProjectObjectRootNode,
_SC._WBSElementBasicData.WBSElementObject as ProjectObjectParentNode,
cast('SV' as abap.char(2)) as ProjectObjectType,
cast( concat( '00', _SV.ServiceDocumentItem ) as ps_s4_pspnr ) as ProjectObjectInternalID,
concat(concat(ltrim( _SV.ServiceDocument, '0' ),'/'), _SV.ServiceDocumentItem) as ProjectObjectExternalID,
_SV.ServiceDocumentItemDescription as ProjectObjectDescription,
case _SC._WBSElementBasicData._Project.ProjectExternalID
when ''
then cast( _SC._WBSElementBasicData._Project.Project as ps_pspid_edit preserving type )
else
_SC._WBSElementBasicData._Project.ProjectExternalID
end as Project,
// _WBSElementBasicData._Project.Project,
_SC._WBSElementBasicData.WBSElementExternalID as WBSElement,
_SV.ProfitCenter as ProjectObjectProfitCenter,
_SC._WBSElementBasicData.ResponsibleCostCenter as ResponsibleCostCenter,
_SC._WBSElementBasicData.ProjectType as ProjectType,
cast( '' as aufart ) as OrderType
}
where
ServiceObjectType = 'BUS2000116' //Service Contract