@AbapCatalog.sqlViewName: 'IPROJHIERSOURCE'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@ClientHandling.algorithm: #SESSION_VARIABLE
@VDM.viewType: #COMPOSITE
@ObjectModel.usageType.sizeCategory: #XL
@ObjectModel.usageType.serviceQuality: #D
@ObjectModel.usageType.dataClass: #MIXED
@AccessControl.personalData.blocking: #BLOCKED_DATA_EXCLUDED
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'Project Hierarchy Source'
define view I_ProjectObjectHierarchySource
as select from I_ProjectBasicData
//Project
{
key ProjectObject as ProjectObjectNode,
key ProjectObject as ProjectObjectRootNode,
cast( ' ' as j_objnr ) as ProjectObjectParentNode,
ProjectObject as ProjectObject,
cast ( 'PD' as ps_project_object_type ) as ProjectObjectNodeType,
cast( 0 as abap.int4 ) as SortingNumber
}
//WBS
union all select from I_WBSElementSortHierNode as prhi
left outer to many join I_WBSElementBasicData as prps_parent on prps_parent.WBSElementInternalID = prhi.WBSElementInternalID
left outer to many join I_WBSElementBasicData as prps_child on prps_child.WBSElementInternalID = prhi.WBSElementParentInternalID
inner join I_ProjectBasicData as proj on proj.ProjectInternalID = prhi.ProjectInternalID
{
key prps_parent.WBSElementObject as ProjectObjectNode,
key proj.ProjectObject as ProjectObjectRootNode,
case when prps_child.WBSElementObject is not initial then prps_child.WBSElementObject
else proj.ProjectObject end as ProjectObjectParentNode,
proj.ProjectObject as ProjectObject,
cast ( 'PR' as ps_project_object_type ) as ProjectObjectNodeType,
prhi.SortingNumber as SortingNumber
}
//03.01.2022 - Begin of comments(Perfomance fixes)
////Activity + Element
//union all select from I_NtwkActyForProjSchedHier as afvc
// left outer to many join I_WBSElementBasicData as prps on prps.WBSElementInternalID = afvc.WBSElementInternalID
// left outer to many join I_NtwkActyForProjSchedHier as afvc_main on afvc_main.ProjectNetworkInternalID = afvc.ProjectNetworkInternalID
// and afvc_main.NetworkActivityInternalID = afvc.SuperiorNtwkActivityInternalID
// left outer to many join I_ProjectNetworkBasicData as _ProjectNetworkBasicData on _ProjectNetworkBasicData.ProjectNetworkInternalID = afvc.ProjectNetworkInternalID
// left outer to many join I_ProjectBasicData as proj on proj.ProjectInternalID = _ProjectNetworkBasicData.ProjectInternalID
// left outer to many join I_ProjectBasicData as proj_prps on proj_prps.ProjectInternalID = prps.ProjectInternalID
////New -> add work order operations
//
// left outer to many join I_ProjSchedMaintOrderData as _WorkOrderBasicData on _WorkOrderBasicData.OrderInternalBillOfOperations = afvc.ProjectNetworkInternalID
// left outer to many join I_ProjectBasicData as proj_afvc on proj_afvc.ProjectInternalID = _WorkOrderBasicData.ProjectInternalID
//
// //New -> add work order operations
//{ //I_ProjectData
//
// key afvc.NetworkActivityObject as ProjectObjectNode,
// key case when proj_prps.ProjectObject is not initial then proj_prps.ProjectObject
// when proj_afvc.ProjectObject is not initial then proj_afvc.ProjectObject
// else proj.ProjectObject end as ProjectObjectRootNode,
// case when afvc_main.NetworkActivityObject is not initial
// and afvc.WBSElementInternalID = afvc_main.WBSElementInternalID then afvc_main.NetworkActivityObject
// when prps.WBSElementObject is not initial then prps.WBSElementObject
// when _WorkOrderBasicData.ObjectInternalID is not initial then _WorkOrderBasicData.ObjectInternalID
// else proj.ProjectObject end as ProjectObjectParentNode,
// case when proj_prps.ProjectObject is not initial then proj_prps.ProjectObject
// when proj_afvc.ProjectObject is not initial then proj_afvc.ProjectObject
// else proj.ProjectObject end as ProjectObject,
// case when afvc.SuperiorNtwkActivityInternalID is not initial then 'EL'
// else substring( afvc.NetworkActivityObject, 1, 2 ) end as ProjectObjectNodeType,
// cast( 0 as abap.int4 ) as SortingNumber
//
//}
//where
// (
// _ProjectNetworkBasicData.OrderCategory = '20'
// and(
// proj_prps.ProjectInternalID is not initial
// or proj.ProjectInternalID is not initial
// )
// )
// or(
// _WorkOrderBasicData.OrderCategory = '30'
// and _WorkOrderBasicData.ProjectInternalID is not initial
// and _WorkOrderBasicData.SuperiorProjectNetworkIntID is not initial
// and _WorkOrderBasicData.SuperiorNtwkActivityInternalID is not initial
// and afvc.SuperiorNtwkActivityInternalID is initial
// )
//03.01.2022 - End of comments(Perfomance fixes)
//03.01.2022 - Begin of code(Perfomance fixes)
//Activity + Element - section 1: connection to Project
union all select from I_NtwkActyForProjSchedHier as afvc
left outer to many join I_NtwkActyForProjSchedHier as afvc_main on afvc_main.ProjectNetworkInternalID = afvc.ProjectNetworkInternalID
and afvc_main.NetworkActivityInternalID = afvc.SuperiorNtwkActivityInternalID
left outer to many join I_ProjectNetworkBasicData as _ProjectNetworkBasicData on _ProjectNetworkBasicData.ProjectNetworkInternalID = afvc.ProjectNetworkInternalID
left outer to many join I_ProjectBasicData as proj on proj.ProjectInternalID = _ProjectNetworkBasicData.ProjectInternalID
{ //I_ProjectData
key afvc.NetworkActivityObject as ProjectObjectNode,
key proj.ProjectObject as ProjectObjectRootNode,
case when afvc_main.NetworkActivityObject is not initial
and afvc.WBSElementInternalID = afvc_main.WBSElementInternalID then afvc_main.NetworkActivityObject
else proj.ProjectObject end as ProjectObjectParentNode,
proj.ProjectObject as ProjectObject,
case when afvc.SuperiorNtwkActivityInternalID is not initial then 'EL'
else 'NV' end as ProjectObjectNodeType,
cast( 0 as abap.int4 ) as SortingNumber
}
where
(
_ProjectNetworkBasicData.OrderCategory = '20'
and proj.ProjectInternalID is not initial
and afvc.WBSElementInternalID is initial
)
//Activity + Element - section 2: connection to WBS
union all select from I_NtwkActyForProjSchedHier as afvc
left outer to many join I_WBSElementBasicData as prps on prps.WBSElementInternalID = afvc.WBSElementInternalID
left outer to many join I_NtwkActyForProjSchedHier as afvc_main on afvc_main.ProjectNetworkInternalID = afvc.ProjectNetworkInternalID
and afvc_main.NetworkActivityInternalID = afvc.SuperiorNtwkActivityInternalID
left outer to many join I_ProjectNetworkBasicData as _ProjectNetworkBasicData on _ProjectNetworkBasicData.ProjectNetworkInternalID = afvc.ProjectNetworkInternalID
left outer to many join I_ProjectBasicData as proj_prps on proj_prps.ProjectInternalID = prps.ProjectInternalID
{
key afvc.NetworkActivityObject as ProjectObjectNode,
key proj_prps.ProjectObject as ProjectObjectRootNode,
case when afvc_main.NetworkActivityObject is not initial
and afvc.WBSElementInternalID = afvc_main.WBSElementInternalID then afvc_main.NetworkActivityObject
else prps.WBSElementObject end as ProjectObjectParentNode,
proj_prps.ProjectObject as ProjectObject,
case when afvc.SuperiorNtwkActivityInternalID is not initial then 'EL'
else 'NV' end as ProjectObjectNodeType,
cast( 0 as abap.int4 ) as SortingNumber
}
where
(
_ProjectNetworkBasicData.OrderCategory = '20'
and proj_prps.ProjectInternalID is not initial
)
//Operation - section 3: connection to Work Order
union all select from I_NtwkActyForProjSchedHier as afvc
left outer to many join I_ProjSchedMaintOrderData as _WorkOrderBasicData on _WorkOrderBasicData.OrderInternalBillOfOperations = afvc.ProjectNetworkInternalID
left outer to many join I_ProjectBasicData as proj_afvc on proj_afvc.ProjectInternalID = _WorkOrderBasicData.ProjectInternalID
{ //I_ProjectData
key afvc.NetworkActivityObject as ProjectObjectNode,
key proj_afvc.ProjectObject as ProjectObjectRootNode,
_WorkOrderBasicData.ObjectInternalID as ProjectObjectParentNode,
proj_afvc.ProjectObject as ProjectObject,
cast ( 'OV' as ps_project_object_type ) as ProjectObjectNodeType,
cast( 0 as abap.int4 ) as SortingNumber
}
where
_WorkOrderBasicData.OrderCategory = '30'
and _WorkOrderBasicData.ProjectInternalID is not initial
and _WorkOrderBasicData.SuperiorProjectNetworkIntID is not initial
and _WorkOrderBasicData.SuperiorNtwkActivityInternalID is not initial
and afvc.SuperiorNtwkActivityInternalID is initial
//03.01.2022 - End of code(Perfomance fixes)
//03.01.2022 - Begin of comments(Perfomance fixes)
////Milestone
//union all select from I_ProjectMilestoneData as mlst
// left outer to many join I_WBSElementBasicData as prps on(
// prps.WBSElementInternalID = mlst.WBSElementInternalID
// )
// left outer to many join I_ProjectBasicData as proj on proj.ProjectInternalID = prps.ProjectInternalID
// left outer to many join I_NtwkActyForProjSchedHier as afvc on(
// afvc.ProjectNetworkInternalID = mlst.ProjectNetworkInternalID
// and afvc.NetworkActivityInternalID = mlst.NetworkActivityInternalID
// )
// left outer to many join I_ProjectNetworkBasicData as _ProjectNetworkBasicData on _ProjectNetworkBasicData.ProjectNetworkInternalID = afvc.ProjectNetworkInternalID
// left outer to many join I_WBSElementBasicData as prps_afvc on(
// prps_afvc.WBSElementInternalID = afvc.WBSElementInternalID
// )
// left outer to many join I_ProjectBasicData as proj_afvc on proj_afvc.ProjectInternalID = prps_afvc.ProjectInternalID
// left outer to many join I_ProjectBasicData as proj_afko on proj_afko.ProjectInternalID = _ProjectNetworkBasicData.ProjectInternalID
//{
//
// key cast( mlst.ProjectMilestone as abap.char( 22 ) ) as ProjectObjectNode,
// key case when proj_afvc.ProjectObject is not initial then proj_afvc.ProjectObject
// when proj.ProjectObject is not initial then proj.ProjectObject
// else proj_afko.ProjectObject end as ProjectObjectRootNode,
// case when prps.WBSElementObject is not initial then prps.WBSElementObject
// else afvc.NetworkActivityObject end as ProjectObjectParentNode,
// case when proj_afvc.ProjectObject is not initial then proj_afvc.ProjectObject
// when proj.ProjectObject is not initial then proj.ProjectObject
// else proj_afko.ProjectObject end as ProjectObject,
// case when prps.WBSElementObject is not initial then 'WML'
// else 'ML' end as ProjectObjectNodeType,
// cast( 0 as abap.int4 ) as SortingNumber
//}
//where
// prps.ProjectInternalID is not initial
// or(
// _ProjectNetworkBasicData.OrderCategory = '20'
// and(
// proj_afvc.ProjectInternalID is not initial
// or proj_afko.ProjectInternalID is not initial
// )
// )
//03.01.2022 - End of comments(Perfomance fixes)
//03.01.2022 - Begin of code(Perfomance fixes)
//Milestone - Section 1: Connect to WBS
union all select from I_ProjectMilestoneData as mlst
left outer to many join I_WBSElementBasicData as prps on(
prps.WBSElementInternalID = mlst.WBSElementInternalID
)
left outer to many join I_ProjectBasicData as proj on proj.ProjectInternalID = prps.ProjectInternalID
{
key cast( mlst.ProjectMilestone as abap.char( 22 ) ) as ProjectObjectNode,
key proj.ProjectObject as ProjectObjectRootNode,
prps.WBSElementObject as ProjectObjectParentNode,
proj.ProjectObject as ProjectObject,
'WML' as ProjectObjectNodeType,
cast( 0 as abap.int4 ) as SortingNumber
}
where
prps.ProjectInternalID is not initial
//Milestone - Section 2: Connect to Activity/WBS
union all select from I_ProjectMilestoneData as mlst
left outer to many join I_NtwkActyForProjSchedHier as afvc on(
afvc.ProjectNetworkInternalID = mlst.ProjectNetworkInternalID
and afvc.NetworkActivityInternalID = mlst.NetworkActivityInternalID
)
left outer to many join I_ProjectNetworkBasicData as _ProjectNetworkBasicData on _ProjectNetworkBasicData.ProjectNetworkInternalID = afvc.ProjectNetworkInternalID
left outer to many join I_WBSElementBasicData as prps_afvc on(
prps_afvc.WBSElementInternalID = afvc.WBSElementInternalID
)
left outer to many join I_ProjectBasicData as proj_afvc on proj_afvc.ProjectInternalID = prps_afvc.ProjectInternalID
{
key cast( mlst.ProjectMilestone as abap.char( 22 ) ) as ProjectObjectNode,
key proj_afvc.ProjectObject as ProjectObjectRootNode,
afvc.NetworkActivityObject as ProjectObjectParentNode,
proj_afvc.ProjectObject as ProjectObject,
'ML' as ProjectObjectNodeType,
cast( 0 as abap.int4 ) as SortingNumber
}
where
_ProjectNetworkBasicData.OrderCategory = '20'
and proj_afvc.ProjectInternalID is not initial
//Milestone - Section 3: Connect to Activity/Project
union all select from I_ProjectMilestoneData as mlst
left outer to many join I_NtwkActyForProjSchedHier as afvc on(
afvc.ProjectNetworkInternalID = mlst.ProjectNetworkInternalID
and afvc.NetworkActivityInternalID = mlst.NetworkActivityInternalID
)
left outer to many join I_ProjectNetworkBasicData as _ProjectNetworkBasicData on _ProjectNetworkBasicData.ProjectNetworkInternalID = afvc.ProjectNetworkInternalID
left outer to many join I_ProjectBasicData as proj_afko on proj_afko.ProjectInternalID = _ProjectNetworkBasicData.ProjectInternalID
{
key cast( mlst.ProjectMilestone as abap.char( 22 ) ) as ProjectObjectNode,
key proj_afko.ProjectObject as ProjectObjectRootNode,
afvc.NetworkActivityObject as ProjectObjectParentNode,
proj_afko.ProjectObject as ProjectObject,
'ML' as ProjectObjectNodeType,
cast( 0 as abap.int4 ) as SortingNumber
}
where
_ProjectNetworkBasicData.OrderCategory = '20'
and proj_afko.ProjectInternalID is not initial
and afvc.WBSElementInternalID is initial
//03.01.2022 - End of code(Perfomance fixes)
//Work Order - New ->Start
union all select from I_ProjSchedMaintOrderData as _WorkOrderBasicData
left outer to many join I_ProjectBasicData as proj on proj.ProjectInternalID = _WorkOrderBasicData.ProjectInternalID
left outer to many join I_NtwkActyForProjSchedHier as afvc_main on afvc_main.ProjectNetworkInternalID = _WorkOrderBasicData.SuperiorProjectNetworkIntID
and afvc_main.NetworkActivityInternalID = _WorkOrderBasicData.SuperiorNtwkActivityInternalID
{
key _WorkOrderBasicData.ObjectInternalID as ProjectObjectNode,
key proj.ProjectObject as ProjectObjectRootNode,
afvc_main.NetworkActivityObject as ProjectObjectParentNode,
proj.ProjectObject as ProjectObject,
cast ( 'OR' as ps_project_object_type ) as ProjectObjectNodeType,
cast( 0 as abap.int4 ) as SortingNumber
}
where
_WorkOrderBasicData.OrderCategory = '30'
and _WorkOrderBasicData.SuperiorProjectNetworkIntID is not initial
and _WorkOrderBasicData.SuperiorNtwkActivityInternalID is not initial
and _WorkOrderBasicData.ProjectInternalID is not initial
//Work order - New -> Finish
//Material
// union all select from I_ProjectMaterialCompBasicData as resb
// inner join I_NtwkActyForProjSchedHier as afvc on ( afvc.ProjectNetworkInternalID = resb.ProjectNetworkInternalID and
// afvc.NetworkActivityInternalID = resb.NetworkActivityInternalID )
// left outer to many join I_ProjectNetworkBasicData as _ProjectNetworkBasicData on _ProjectNetworkBasicData.ProjectNetworkInternalID = afvc.ProjectNetworkInternalID
// left outer to many join I_WBSElementByInternalKey as prps_afvc on ( prps_afvc.WBSElementInternalID = afvc.WBSElementInternalID )
// left outer to many join I_ProjectBasicData as proj_afvc on proj_afvc.ProjectInternalID = prps_afvc.ProjectInternalID
// left outer to many join I_ProjectBasicData as proj_afko on proj_afko.ProjectInternalID = _ProjectNetworkBasicData.ProjectInternalID {
//
//key resb.MaterialComponentObject as ProjectObjectNode,
//key case when proj_afvc.ProjectObject is not initial then proj_afvc.ProjectObject
// else proj_afko.ProjectObject end as ProjectObjectRootNode,
// afvc.NetworkActivityObject as ProjectObjectParentNode,
// case when proj_afvc.ProjectObject is not initial then proj_afvc.ProjectObject
// else proj_afko.ProjectObject end as ProjectObject,
// substring( resb.MaterialComponentObject, 1, 2 ) as ProjectObjectNodeType,
// cast( 0 as abap.int4 ) as SortingNumber
//
//} where _ProjectNetworkBasicData.OrderCategory = '20' and resb.GoodsMovementType = '281'
//Network
union all select from I_ProjectNetworkBasicData as _ProjectNetworkBasicData
left outer to many join I_ProjectBasicData as proj on proj.ProjectInternalID = _ProjectNetworkBasicData.ProjectInternalID
{
key ProjectNetworkObject as ProjectObjectNode,
key ProjectNetworkObject as ProjectObjectRootNode,
' ' as ProjectObjectParentNode,
proj.ProjectObject as ProjectObject,
cast ( 'NP' as ps_project_object_type ) as ProjectObjectNodeType,
cast( 0 as abap.int4 ) as SortingNumber
}
where
_ProjectNetworkBasicData.OrderCategory = '20'
//Activity + Element
union all select from I_ProjectNetworkBasicData as _ProjectNetworkBasicData
inner join I_NtwkActyForProjSchedHier as afvc on(
afvc.ProjectNetworkInternalID = _ProjectNetworkBasicData.ProjectNetworkInternalID
)
left outer to many join I_NtwkActyForProjSchedHier as afvc_main on(
afvc_main.ProjectNetworkInternalID = afvc.ProjectNetworkInternalID
and afvc_main.NetworkActivityInternalID = afvc.SuperiorNtwkActivityInternalID
)
left outer to many join I_ProjectBasicData as proj on proj.ProjectInternalID = _ProjectNetworkBasicData.ProjectInternalID
{
key afvc.NetworkActivityObject as ProjectObjectNode,
key ProjectNetworkObject as ProjectObjectRootNode,
case when afvc_main.NetworkActivityObject is not initial then afvc_main.NetworkActivityObject
else ProjectNetworkObject end as ProjectObjectParentNode,
proj.ProjectObject as ProjectObject,
case when afvc.SuperiorNtwkActivityInternalID is not initial then 'EL'
else 'NV' end as ProjectObjectNodeType,
cast( 0 as abap.int4 ) as SortingNumber
}
where
_ProjectNetworkBasicData.OrderCategory = '20'
//Milestone
union all select from I_ProjectMilestoneData as mlst
inner join I_NtwkActyForProjSchedHier as afvc on(
afvc.ProjectNetworkInternalID = mlst.ProjectNetworkInternalID
and afvc.NetworkActivityInternalID = mlst.NetworkActivityInternalID
)
left outer to many join I_ProjectNetworkBasicData as _ProjectNetworkBasicData on _ProjectNetworkBasicData.ProjectNetworkInternalID = afvc.ProjectNetworkInternalID
left outer to many join I_ProjectBasicData as proj on proj.ProjectInternalID = _ProjectNetworkBasicData.ProjectInternalID
{
key cast( mlst.ProjectMilestone as abap.char( 22 ) ) as ProjectObjectNode,
key _ProjectNetworkBasicData.ProjectNetworkObject as ProjectObjectRootNode,
afvc.NetworkActivityObject as ProjectObjectParentNode,
proj.ProjectObject as ProjectObject,
cast ( 'ML' as ps_project_object_type ) as ProjectObjectNodeType,
cast( 0 as abap.int4 ) as SortingNumber
}
where
_ProjectNetworkBasicData.OrderCategory = '20'
//Work Order - New ->Start
union all select from I_ProjSchedMaintOrderData as _WorkOrderBasicData
left outer to many join I_ProjectBasicData as proj on proj.ProjectInternalID = _WorkOrderBasicData.ProjectInternalID
left outer to many join I_NtwkActyForProjSchedHier as afvc_main on afvc_main.ProjectNetworkInternalID = _WorkOrderBasicData.SuperiorProjectNetworkIntID
and afvc_main.NetworkActivityInternalID = _WorkOrderBasicData.SuperiorNtwkActivityInternalID
left outer to many join I_ProjectNetworkBasicData as _ProjectNetworkBasicData on _ProjectNetworkBasicData.ProjectNetworkInternalID = _WorkOrderBasicData.SuperiorProjectNetworkIntID
{
key _WorkOrderBasicData.ObjectInternalID as ProjectObjectNode,
key _ProjectNetworkBasicData.ProjectNetworkObject as ProjectObjectRootNode,
afvc_main.NetworkActivityObject as ProjectObjectParentNode,
proj.ProjectObject as ProjectObject,
cast ( 'OR' as ps_project_object_type ) as ProjectObjectNodeType,
cast( 0 as abap.int4 ) as SortingNumber
}
where
_WorkOrderBasicData.OrderCategory = '30'
and _WorkOrderBasicData.SuperiorProjectNetworkIntID is not initial
and _WorkOrderBasicData.SuperiorNtwkActivityInternalID is not initial
//Work order - New -> Finish
//Operations - New -> Start
union all select from I_ProjSchedMaintOrderData as _WorkOrderBasicData
inner join I_NtwkActyForProjSchedHier as afvc on afvc.ProjectNetworkInternalID = _WorkOrderBasicData.OrderInternalBillOfOperations
left outer to many join I_ProjectBasicData as proj on proj.ProjectInternalID = _WorkOrderBasicData.ProjectInternalID
left outer to many join I_ProjectNetworkBasicData as _ProjectNetworkBasicData on _ProjectNetworkBasicData.ProjectNetworkInternalID = _WorkOrderBasicData.SuperiorProjectNetworkIntID
{
key afvc.NetworkActivityObject as ProjectObjectNode,
key _ProjectNetworkBasicData.ProjectNetworkObject as ProjectObjectRootNode,
_WorkOrderBasicData.ObjectInternalID as ProjectObjectParentNode,
proj.ProjectObject as ProjectObject,
cast ( 'OV' as ps_project_object_type ) as ProjectObjectNodeType,
cast( 0 as abap.int4 ) as SortingNumber
}
where
_WorkOrderBasicData.OrderCategory = '30'
and _WorkOrderBasicData.SuperiorProjectNetworkIntID is not initial
and _WorkOrderBasicData.SuperiorNtwkActivityInternalID is not initial
and afvc.SuperiorNtwkActivityInternalID is initial
//Operations - New -> Finish
//Material
// union all select from I_ProjectMaterialCompBasicData as resb
// inner join I_NtwkActyForProjSchedHier as afvc on ( afvc.ProjectNetworkInternalID = resb.ProjectNetworkInternalID and
// afvc.NetworkActivityInternalID = resb.NetworkActivityInternalID )
// left outer to many join I_ProjectNetworkBasicData as _ProjectNetworkBasicData on _ProjectNetworkBasicData.ProjectNetworkInternalID = afvc.ProjectNetworkInternalID
// left outer to many join I_ProjectBasicData as proj on proj.ProjectInternalID = _ProjectNetworkBasicData.ProjectInternalID
//{
//
//key resb.MaterialComponentObject as ProjectObjectNode,
//key _ProjectNetworkBasicData.ProjectNetworkObject as ProjectObjectRootNode,
// afvc.NetworkActivityObject as ProjectObjectParentNode,
// proj.ProjectObject as ProjectObject,
// substring( resb.MaterialComponentObject, 1, 2 ) as ProjectObjectNodeType,
// cast( 0 as abap.int4 ) as SortingNumber
//
//} where _ProjectNetworkBasicData.OrderCategory = '20'