P_ProjectObject_2

DDL: P_PROJECTOBJECT_2 SQL: PPROJECTOBJECT2 Type: view COMPOSITE

Project Object

P_ProjectObject_2 is a Composite CDS View that provides data about "Project Object" in SAP S/4HANA. It reads from 6 data sources and exposes 66 fields with key fields ProjectObjectNode, IsActiveEntity, IsActiveEntity, IsActiveEntity, IsActiveEntity. It has 2 associations to related views.

Data Sources (6)

SourceAliasJoin Type
I_NetworkActivityForCostReport _Activity union_all
I_ProjectNetwork _Network union_all
I_InternalOrder I_InternalOrder union_all
I_MaintenanceOrder I_MaintenanceOrder union_all
I_ProjectData_2 I_ProjectData_2 from
I_WBSElementHierarchyData I_WBSElementHierarchyData union_all

Associations (2)

CardinalityTargetAliasCondition
[0..1] I_ProjectData_2 _Projectdata $projection.ProjectObjectRootNode = _Projectdata.ProjectObject
[0..1] I_WBSElementData_2 _WBSElement $projection.ProjectObjectInternalID = _WBSElement.WBSElementInternalID

Annotations (9)

NameValueLevelField
AbapCatalog.sqlViewName PPROJECTOBJECT2 view
AbapCatalog.compiler.compareFilter true view
AbapCatalog.preserveKey true view
AccessControl.authorizationCheck #NOT_REQUIRED view
EndUserText.label Project Object view
ObjectModel.representativeKey ProjectObjectNode view
VDM.viewType #COMPOSITE view
VDM.private true view
ClientHandling.algorithm #SESSION_VARIABLE view

Fields (66)

KeyFieldSource TableSource FieldDescription
KEY ProjectObjectNode ProjectObject
KEY IsActiveEntity
ProjectObjectRootNode ProjectObject
ProjectObjectParentNode
ProjectObjectType
ProjectObjectInternalID ProjectInternalID
WBSElement
ProjectObjectProfitCenter ProfitCenter
ResponsibleCostCenter
ProjectType
WBSElementObjectasProjectObjectNode
KEY IsActiveEntity
ProjectObjectRootNode _Project ProjectObject
ProjectObjectType
ProjectObjectInternalID WBSElementInternalID
ProjectObjectExternalID _WBSElement WBSElementExternalID
ProjectExternalIDendasProject
WBSElement _WBSElement WBSElementExternalID
ProjectObjectProfitCenter _WBSElement ProfitCenter
ResponsibleCostCenter _WBSElement ResponsibleCostCenter
ProjectType _WBSElement ProjectType
KEY IsActiveEntity
ProjectObjectRootNode
ProjectObjectParentNode _WBSElement WBSElementObject
ProjectObjectType
ProjectObjectInternalID MaintenanceOrder
ProjectObjectExternalID
ProjectObjectDescription MaintenanceOrderDesc
ProjectWithCodingMaskendasProject
WBSElement _WBSElement WBSElementExternalID
ProjectObjectProfitCenter ProfitCenter
ResponsibleCostCenter _WBSElement ResponsibleCostCenter
ProjectType _WBSElement ProjectType
KEY IsActiveEntity
ProjectObjectRootNode _Project ProjectObject
ProjectObjectParentNode _WBSElement WBSElementObject
ProjectObjectType
ProjectObjectInternalID ProjectNetwork
ProjectObjectExternalID
ProjectWithCodingMaskendasProject
WBSElement _WBSElement WBSElementExternalID
ProjectObjectProfitCenter ProfitCenter
ResponsibleCostCenter
ProjectType
KEY IsActiveEntity
ProjectObjectRootNode
char2endasProjectObjectType
ProjectObjectInternalID ProjectNetwork
ProjectWithCodingMaskendasproject
WBSElement _WBSElement WBSElement
ProjectObjectProfitCenter ProfitCenter
ResponsibleCostCenter _WBSElement ResponsibleCostCenter
ProjectType _WBSElement ProjectType
KEY IsActiveEntity
ProjectObjectRootNode
ProjectObjectParentNode _WBSElementBasicData WBSElementObject
ProjectObjectType
ProjectObjectInternalID InternalOrder
ProjectObjectExternalID
ProjectObjectDescription InternalOrderDescription
ProjectExternalIDendasProject
WBSElement _WBSElementBasicData WBSElementExternalID
ProjectObjectProfitCenter ProfitCenter
ResponsibleCostCenter _WBSElementBasicData ResponsibleCostCenter
ProjectType _WBSElementBasicData ProjectType
OrderType OrderType
@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":""
}
}*/