I_ProjectObjectHierarchySrc_2

DDL: I_PROJECTOBJECTHIERARCHYSRC_2 SQL: IPROJHIERSRC_2 Type: view COMPOSITE

Project Hierarchy Source

I_ProjectObjectHierarchySrc_2 is a Composite CDS View that provides data about "Project Hierarchy Source" in SAP S/4HANA. It reads from 18 data sources and exposes 63 fields with key fields ProjectObjectNode, ProjectObjectRootNode, ProjectObjectRootNode, ProjectObjectRootNode, ProjectObjectRootNode.

Data Sources (18)

SourceAliasJoin Type
I_ProjectNetworkBasicData _ProjectNetworkBasicData union_all
I_ProjectNetworkBasicData _ProjectNetworkBasicData union_all
I_ProjSchedMaintOrderData _WorkOrderBasicData union_all
I_ProjSchedMaintOrderData _WorkOrderBasicData union_all
I_ProjSchedMaintOrderData _WorkOrderBasicData union_all
I_NtwkActyForProjSchedHier afvc inner
I_NtwkActyForProjSchedHier afvc inner
I_NtwkActyForProjSchedHier afvc inner
I_NtwkActyForProjSchedHier afvc union_all
I_NtwkActyForProjSchedHier afvc union_all
I_NtwkActyForProjSchedHier afvc union_all
I_ProjectBasicData I_ProjectBasicData from
I_WBSElementSortHierNode_2 I_WBSElementSortHierNode_2 union_all
I_ProjectMilestoneData mlst union_all
I_ProjectMilestoneData mlst union_all
I_ProjectMilestoneData mlst union_all
I_ProjectMilestoneData mlst union_all
I_ProjectBasicData proj inner

Parameters (1)

NameTypeDefault
P_ProjectObjectRootNode j_objnr

Annotations (11)

NameValueLevelField
AbapCatalog.sqlViewName IPROJHIERSRC_2 view
AbapCatalog.compiler.compareFilter true view
AbapCatalog.preserveKey true view
ClientHandling.algorithm #SESSION_VARIABLE view
VDM.viewType #COMPOSITE view
ObjectModel.usageType.sizeCategory #XL view
ObjectModel.usageType.serviceQuality #D view
ObjectModel.usageType.dataClass #MIXED view
AccessControl.personalData.blocking #BLOCKED_DATA_EXCLUDED view
AccessControl.authorizationCheck #NOT_REQUIRED view
EndUserText.label Project Hierarchy Source view

Fields (63)

KeyFieldSource TableSource FieldDescription
KEY ProjectObjectNode ProjectObject
KEY ProjectObjectRootNode ProjectObject
ProjectObjectParentNode
ProjectObject ProjectObject
ProjectObjectNodeType
WBSElementObjectasProjectObjectNode
KEY ProjectObjectRootNode prhi ProjectObjectRootNode
ProjectObject prhi ProjectObjectRootNode
ProjectObjectNodeType
NetworkActivityObjectasProjectObjectNode
KEY ProjectObjectRootNode I_ProjectBasicData ProjectObject
ProjectObject I_ProjectBasicData ProjectObject
NetworkActivityObjectasProjectObjectNode
KEY ProjectObjectRootNode proj_prps ProjectObject
ProjectObject proj_prps ProjectObject
NetworkActivityObjectasProjectObjectNode
KEY ProjectObjectRootNode proj_afvc ProjectObject
ProjectObjectParentNode I_ProjSchedMaintOrderData ObjectInternalID
ProjectObject proj_afvc ProjectObject
ProjectObjectNodeType
char22asProjectObjectNode
KEY ProjectObjectRootNode I_ProjectBasicData ProjectObject
ProjectObjectParentNode prps WBSElementObject
ProjectObject I_ProjectBasicData ProjectObject
ProjectObjectNodeType
char22asProjectObjectNode
KEY ProjectObjectRootNode proj_afvc ProjectObject
ProjectObjectParentNode I_NtwkActyForProjSchedHier NetworkActivityObject
ProjectObject proj_afvc ProjectObject
ProjectObjectNodeType
char22asProjectObjectNode
KEY ProjectObjectRootNode proj_afko ProjectObject
ProjectObjectParentNode I_NtwkActyForProjSchedHier NetworkActivityObject
ProjectObject proj_afko ProjectObject
ProjectObjectNodeType
ObjectInternalIDasProjectObjectNode
KEY ProjectObjectRootNode I_ProjectBasicData ProjectObject
ProjectObjectParentNode afvc_main NetworkActivityObject
ProjectObject I_ProjectBasicData ProjectObject
ProjectObjectNodeType
KEY ProjectObjectRootNode ProjectNetworkObject
ProjectObjectParentNode
ProjectObject I_ProjectBasicData ProjectObject
ProjectObjectNodeType
NetworkActivityObjectasProjectObjectNode
KEY ProjectObjectRootNode ProjectNetworkObject
ProjectObject I_ProjectBasicData ProjectObject
char22asProjectObjectNode
KEY ProjectObjectRootNode I_ProjectNetworkBasicData ProjectNetworkObject
ProjectObjectParentNode I_NtwkActyForProjSchedHier NetworkActivityObject
ProjectObject I_ProjectBasicData ProjectObject
ProjectObjectNodeType
ObjectInternalIDasProjectObjectNode
KEY ProjectObjectRootNode I_ProjectNetworkBasicData ProjectNetworkObject
ProjectObjectParentNode afvc_main NetworkActivityObject
ProjectObject I_ProjectBasicData ProjectObject
ProjectObjectNodeType
NetworkActivityObjectasProjectObjectNode
KEY ProjectObjectRootNode I_ProjectNetworkBasicData ProjectNetworkObject
ProjectObjectParentNode I_ProjSchedMaintOrderData ObjectInternalID
ProjectObject I_ProjectBasicData ProjectObject
ProjectObjectNodeType
SortingNumber
@AbapCatalog.sqlViewName: 'IPROJHIERSRC_2'
@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_ProjectObjectHierarchySrc_2
  with parameters
    P_ProjectObjectRootNode : j_objnr
  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

      cast( 0 as abap.char(16))               as SortingNumber
}
  where ProjectObject = $parameters.P_ProjectObjectRootNode
//WBS

union all select from     I_WBSElementSortHierNode_2( P_ProjectObjectRootNode : $parameters.P_ProjectObjectRootNode ) 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 prhi.ProjectObjectRootNode,
      case when prps_child.WBSElementObject is not initial then prps_child.WBSElementObject
            else prhi.ProjectObjectRootNode end       as ProjectObjectParentNode,
      prhi.ProjectObjectRootNode                     as ProjectObject,
      cast ( 'PR' as ps_project_object_type ) as ProjectObjectNodeType,
//    prhi.SortingNumber                      as SortingNumber

      cast(prhi.SortingNumber as abap.char(16)) 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

      cast( concat(_ProjectNetworkBasicData.ProjectNetwork,afvc.NetworkActivity ) as abap.char(16))  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

           cast( concat(_ProjectNetworkBasicData.ProjectNetwork,afvc.NetworkActivity ) as abap.char(16))  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

      cast( 0 as abap.char(16))               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

      cast( 0 as abap.char(16))                        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

      cast( 0 as abap.char(16))                        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

      cast( 0 as abap.char(16))                        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

      cast( 0 as abap.char(16))               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

      cast( 0 as abap.char(16))               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

      cast( 0 as abap.char(16))          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

      cast( 0 as abap.char(16))                          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

      cast( 0 as abap.char(16))                     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

      cast( 0 as abap.char(16))                     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'