P_PROJECTOBJECT_2

CDS View

Project Object

P_PROJECTOBJECT_2 is a CDS View in S/4HANA. Project Object. It contains 14 fields. 5 CDS views read from this table.

CDS Views using this table (5)

ViewTypeJoinVDMDescription
I_ProjectStructure_2 view from COMPOSITE Project Structure
I_ProjectStructure_3 view from COMPOSITE Project Structure for Line Items
I_ProjectStructureHierNodeRltn view from COMPOSITE Hierarchy for Project structure
P_ProjectActualCostLineItem view inner COMPOSITE
P_ProjectPlanCostLineItem view inner COMPOSITE

Fields (14)

KeyField CDS FieldsUsed in Views
KEY ProjectObjectNode ProjectObjectNode 3
IsActiveEntity IsActiveEntity 1
OrderType OrderType 2
Project Project 3
ProjectObjectDescription ProjectObjectDescription 3
ProjectObjectExternalID ProjectObjectExternalID 3
ProjectObjectInternalID ProjectObjectInternalID 1
ProjectObjectParentNode ProjectObjectParentNode 1
ProjectObjectProfitCenter ProjectObjectProfitCenter 2
ProjectObjectRootNode ProjectObjectRootNode 3
ProjectObjectType ProjectObjectType 3
ProjectType ProjectType 3
ResponsibleCostCenter ResponsibleCostCenter 2
WBSElement WBSElement 3
@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,
       cast(MaintenanceOrder as ps_s4_pspnr) 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.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,
       cast(ProjectNetwork as ps_s4_pspnr)            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,

       cast(ProjectNetwork as ps_s4_pspnr)                                                                                             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,
       cast(InternalOrder as ps_s4_pspnr)          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.WBSElementExternalID   as WBSElement,

       ProfitCenter                                as ProjectObjectProfitCenter,
       _WBSElementBasicData.ResponsibleCostCenter  as ResponsibleCostCenter,
       _WBSElementBasicData.ProjectType            as ProjectType,
       OrderType
}
where
  WBSElementInternalID <> '00000000'

// Production Order -

union all select from I_ManufacturingOrder
{
  key ObjectInternalID                            as ProjectObjectNode,
  key 'A'                                         as IsActiveEntity,
      _WBSElementBasicData._Project.ProjectObject as ProjectObjectRootNode,
      _WBSElementBasicData.WBSElementObject       as ProjectObjectParentNode,
      cast('PP'as abap.char(2))                   as ProjectObjectType,
      cast(ManufacturingOrder as ps_s4_pspnr)     as ProjectObjectInternalID,
      ltrim(ManufacturingOrder,'0')               as ProjectObjectExternalID,
      case
      when ManufacturingOrderText = ''
      then
      _Product._Text[1: Language = $session.system_language].ProductName
      else
      ManufacturingOrderText end                  as ProjectObjectDescription,
      //      ManufacturingOrderText                      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.WBSElementExternalID   as WBSElement,

      ProfitCenter                                as ProjectObjectProfitCenter,
      _WBSElementBasicData.ResponsibleCostCenter  as ResponsibleCostCenter,
      _WBSElementBasicData.ProjectType            as ProjectType,
      ManufacturingOrderType                      as OrderType
}
where
      WBSElementInternalID       <> '00000000'
  and ManufacturingOrderCategory =  '10'

//Service Order and Service Contract assigned to WBS element

union all select from I_AcctgServiceDocumentItem
{
  key  ControllingObject                                                      as ProjectObjectNode,
  key  'A'                                                                    as IsActiveEntity,
       _WBSElementBasicData._Project.ProjectObject                            as ProjectObjectRootNode,
       _WBSElementBasicData.WBSElementObject                                  as ProjectObjectParentNode,
       case substring( ControllingObject, 1, 2 )
       when 'SV'
       then cast('SV' as abap.char(2))
       when 'SC'
       then cast('SC' as abap.char(2)) end                                    as ProjectObjectType,
       cast( concat( '00', ServiceDocumentItem ) as ps_s4_pspnr )             as ProjectObjectInternalID,
       concat(concat(ltrim( ServiceDocument, '0' ),'/'), ServiceDocumentItem) as ProjectObjectExternalID,
       ServiceDocumentItemDescription                                         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.WBSElementExternalID                              as WBSElement,

       ProfitCenter                                                           as ProjectObjectProfitCenter,
       _WBSElementBasicData.ResponsibleCostCenter                             as ResponsibleCostCenter,
       _WBSElementBasicData.ProjectType                                       as ProjectType,
       cast( '' as aufart )                                                   as OrderType
}
where
       WBSElementInternalID <> '00000000'
  and(
       ServiceObjectType    =  'BUS2000112' //Service Contract

    or ServiceObjectType    =  'BUS2000116' //Service Order

  )


// Service Order via Service Contract where WBS Element assgined to Service Contract. And Service Order created from Service Contract 

union all select from I_AcctgServiceDocumentItem as _SV
association [0..*] to I_AcctgServiceDocumentItem as _SC on  _SV.SrvcContrItmControllingObject =  _SC.ControllingObject
                                                        and _SC.WBSElementInternalID          <> '00000000'
{
  key  _SV.ControllingObject                                                          as ProjectObjectNode,
  key  'A'                                                                            as IsActiveEntity,
       _SC._WBSElementBasicData._Project.ProjectObject                                as ProjectObjectRootNode,
       _SC._WBSElementBasicData.WBSElementObject                                      as ProjectObjectParentNode,
       cast('SV' as abap.char(2))                                                     as ProjectObjectType,
       cast( concat( '00', _SV.ServiceDocumentItem ) as ps_s4_pspnr )                 as ProjectObjectInternalID,
       concat(concat(ltrim( _SV.ServiceDocument, '0' ),'/'), _SV.ServiceDocumentItem) as ProjectObjectExternalID,
       _SV.ServiceDocumentItemDescription                                             as ProjectObjectDescription,

       case _SC._WBSElementBasicData._Project.ProjectExternalID
       when ''
       then cast( _SC._WBSElementBasicData._Project.Project as ps_pspid_edit preserving type )
       else
       _SC._WBSElementBasicData._Project.ProjectExternalID
       end                                                                            as Project,
       //      _WBSElementBasicData._Project.Project,


       _SC._WBSElementBasicData.WBSElementExternalID                                  as WBSElement,

       _SV.ProfitCenter                                                               as ProjectObjectProfitCenter,
       _SC._WBSElementBasicData.ResponsibleCostCenter                                 as ResponsibleCostCenter,
       _SC._WBSElementBasicData.ProjectType                                           as ProjectType,
       cast( '' as aufart )                                                           as OrderType
}
where
  ServiceObjectType = 'BUS2000116' //Service Contract