I_ProjectObjectHierarchySource

DDL: I_PROJECTOBJECTHIERARCHYSOURCE SQL: IPROJHIERSOURCE Type: view COMPOSITE Package: VDM_PS_PROJECT_SCHEDULE

Project Hierarchy Source

I_ProjectObjectHierarchySource 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. Part of development package VDM_PS_PROJECT_SCHEDULE.

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_ProjectMilestoneData mlst union_all
I_ProjectMilestoneData mlst union_all
I_ProjectMilestoneData mlst union_all
I_ProjectMilestoneData mlst union_all
I_WBSElementSortHierNode prhi union_all
I_ProjectBasicData proj inner

Annotations (11)

NameValueLevelField
AbapCatalog.sqlViewName IPROJHIERSOURCE 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 I_ProjectBasicData ProjectObject
ProjectObject I_ProjectBasicData ProjectObject
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: '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'