@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,
MaintenanceOrder 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._Project.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,
ProjectNetwork 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,
ProjectNetwork 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,
InternalOrder 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._Project.Project,
_WBSElementBasicData.WBSElementExternalID as WBSElement,
ProfitCenter as ProjectObjectProfitCenter,
_WBSElementBasicData.ResponsibleCostCenter as ResponsibleCostCenter,
_WBSElementBasicData.ProjectType as ProjectType,
OrderType
}
where
// _WBSElementBasicData.WBSElementObject <> ''
WBSElementInternalID <> '00000000'
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_INTERNALORDER",
"I_MAINTENANCEORDER",
"I_NETWORKACTIVITYFORCOSTREPORT",
"I_PROJECTBASICDATA",
"I_PROJECTBYINTERNALKEY",
"I_PROJECTDATA_2",
"I_PROJECTNETWORK",
"I_PROJECTOBJECTSHORTTEXT",
"I_WBSELEMENT",
"I_WBSELEMENTBASICDATA",
"I_WBSELEMENTBYINTERNALKEY",
"I_WBSELEMENTDATA_2",
"I_WBSELEMENTHIERARCHYDATA"
],
"ASSOCIATED":
[],
"BASE":
[],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/