I_ENTERPRISEPROJECTELEMENT

CDS View

Enterprise Project Element

I_ENTERPRISEPROJECTELEMENT is a CDS View in S/4HANA. Enterprise Project Element. It contains 17 fields. 7 CDS views read from this table.

CDS Views using this table (7)

ViewTypeJoinVDMDescription
C_EntProjElmntMassChangeVH view from CONSUMPTION Enterprise Project Elements Value Help for Mass change
C_ProjBillgReqWrkPckgWrkItmVH view_entity inner CONSUMPTION Work Item Work Package
P_BusSolnOrdEntProjectFlwLvl2 view inner CONSUMPTION Solution Order Enterprise Project Flow: Level 2
P_MyProjectBillingElements2 view_entity inner COMPOSITE Project Billing Elements by UserID (2)
P_PrjBlgElmPlndRevnAmt view_entity inner COMPOSITE Planned Revenue Amount for Billing Elmnt
P_WorkPackageList view from COMPOSITE
P_WorkPackageList view union COMPOSITE

Fields (17)

KeyField CDS FieldsUsed in Views
KEY ProjectElementUUID ProjectElementUUID,TaskUUID 2
CompanyCode CompanyCode 1
ControllingArea ControllingArea 2
FunctionalArea FunctionalArea 1
PlannedEndDate PlannedEndDate,WorkPackageEndDate 2
PlannedStartDate PlannedStartDate,WorkPackageStartDate 2
Plant Plant 1
ProfitCenter ProfitCenter 2
ProjectElement Task,TaskName,WorkPackage 2
ProjectElementDescription WorkPackageName 1
ProjectUUID ProjectUUID 1
ResponsibleCostCenter ResponsibleCostCenter 1
WBSElementInternalID WBSElementInternalID 2
WorkPackage WorkPackage 1
WorkPackageEndDate WorkPackageEndDate 1
WorkPackageName WorkPackageName 1
WorkPackageStartDate WorkPackageStartDate 1
@EndUserText.label: 'Enterprise Project Element'

@AbapCatalog: {
    sqlViewName: 'IENTERPROJELE',
    compiler.compareFilter: true,
    preserveKey: true,
    dataMaintenance: #RESTRICTED
}

@AccessControl.authorizationCheck: #CHECK
@AccessControl.personalData.blocking: #BLOCKED_DATA_EXCLUDED

@ClientHandling.algorithm: #SESSION_VARIABLE

@ObjectModel: {
   semanticKey:       [ 'ProjectElement' ],
   representativeKey: 'ProjectElementUUID',
   supportedCapabilities: [ #SQL_DATA_SOURCE, #CDS_MODELING_DATA_SOURCE, #CDS_MODELING_ASSOCIATION_TARGET, #EXTRACTION_DATA_SOURCE  ],
   usageType: {
     serviceQuality:  #B,
     dataClass:       #MASTER,
     sizeCategory:    #XL
   }
}

@Metadata.ignorePropagatedAnnotations: true

@Analytics.dataExtraction: {
        enabled: true,
        delta.changeDataCapture: {
            mapping:[
                {
                    table: '/s4ppm/task', role: #MAIN,
                    viewElement: ['ProjectElementUUID'],
                    tableElement: ['guid']
                },   
                {
                    table: 'prps', role: #LEFT_OUTER_TO_ONE_JOIN,
                    viewElement: ['WBSElementInternalID'],
                    tableElement: ['pspnr']
                },
                {
                    table: '/s4ppm/hierarchy', role: #LEFT_OUTER_TO_ONE_JOIN,
                    viewElement: ['HierarchyNodeUUID'],
                    tableElement: ['guid']
                }             
            ]
        }
}
@Analytics.dataCategory: #DIMENSION
@Metadata.allowExtensions:true
@VDM.viewType: #BASIC
@VDM.lifecycle.contract.type:  #PUBLIC_LOCAL_API

define view I_EnterpriseProjectElement
  as select from           /s4ppm/task      as task
    //Left Outer Join To get also Milestones

    left outer to one join  prps             as prps  on prps.pspnr = task.pspnr
    

  // to make sure parent is empty in case of parent being PST

    left outer to one join /s4ppm/hierarchy as hiera on  hiera.object_guid    = task.guid
                                                     and hiera.hierarchy_type = 'T'
                                                     and task.object_type     <> 'DPO'
                                                     
  association [1..1] to I_EnterpriseProject     as _Project                 on  _Project.ProjectUUID = $projection.ProjectUUID
  association [1..*] to I_EntProjElmntDlvbrl    as _EntProjElmntDlvbrl      on  _EntProjElmntDlvbrl.ProjectElementUUID  = $projection.ProjectElementUUID
//  association [0..1] to I_CostCenter              as _CostCenter           on  _CostCenter.CostCenter        = $projection.CostCenter

//                                                                            and _CostCenter.ControllingArea  = $projection.ControllingArea


  // ---Extension Association

  association [1..1] to E_PPM_Task              as _ProjectElementExtension on  $projection.ProjectElementUUID = _ProjectElementExtension.TaskUUID
  association [1..1] to E_PPM_EngagementProjElmnt  as _EngagementProjElmtExtension on  $projection.ProjectElementUUID = _EngagementProjElmtExtension.TaskUUID

  // associations to authorization views

  association [0..*] to I_PPM_AuthznByUsrH      as _AuthUser                on  _AuthUser.ReferencedObjectUUID = $projection.ProjectElementUUID
                                                                            and _AuthUser.UserID               = $session.user
                                                                            and (
                                                                               _AuthUser.Activity              = 'Admin'
                                                                               or _AuthUser.Activity           = 'Write'
                                                                               or _AuthUser.Activity           = 'Read'
                                                                             )
  association [0..*] to I_PPM_AuthznBySubstitH  as _AuthSubst               on  _AuthSubst.ReferencedObjectUUID = $projection.ProjectElementUUID
                                                                            and _AuthSubst.UserID               = $session.user
                                                                            and (
                                                                               _AuthSubst.Activity              = 'Admin'
                                                                               or _AuthSubst.Activity           = 'Write'
                                                                               or _AuthSubst.Activity           = 'Read'
                                                                             )
  association [0..*] to I_PPM_AuthznByUserRoleH as _AuthRole                on  _AuthRole.ReferencedObjectUUID = $projection.ProjectElementUUID
                                                                            and _AuthRole.UserID               = $session.user
                                                                            and (
                                                                               _AuthRole.Activity              = 'Admin'
                                                                               or _AuthRole.Activity           = 'Write'
                                                                               or _AuthRole.Activity           = 'Read'
                                                                             )
  association [0..*] to I_PPM_AuthznByUsrGrpH   as _AuthGroup               on  _AuthGroup.ReferencedObjectUUID = $projection.ProjectElementUUID
                                                                            and _AuthGroup.UserID               = $session.user
                                                                            and (
                                                                               _AuthGroup.Activity              = 'Admin'
                                                                               or _AuthGroup.Activity           = 'Write'
                                                                               or _AuthGroup.Activity           = 'Read'
                                                                             )
//For Cat 7 Authorization                                                                                      

association [0..1] to I_EnterpriseProjectForUser     as _EnterpriseProjectForUser on _EnterpriseProjectForUser.ProjectUUID = $projection.ProjectUUID

{
  @ObjectModel.text.element: ['ProjectElementDescription']
  key task.guid                                                          as ProjectElementUUID,
     cast ( task.external_id as /s4ppm/project_ele_id preserving type )  as ProjectElement,
      @ObjectModel.foreignKey.association: '_Project'
      task.project_guid                                                  as ProjectUUID,
      @Semantics.text: true
      task.name                                                          as ProjectElementDescription,
      task.proc_status_own                                               as ProcessingStatus,

      @EndUserText:
         { quickInfo : 'Latest Planned Start',
           label     : 'Latest Planned Start',
           heading   : 'Latest Planned Start'  }
      task.latest_start_date                                             as PlannedStartDate,
      @EndUserText:
         { quickInfo : 'Latest Planned Finish',
           label     : 'Latest Planned Finish',
           heading   : 'Latest Planned Finish' }
      task.latest_finish_date                                            as PlannedEndDate,
      task.actualstart_date                                              as ActualStartDate,
      task.actualfinish_date                                             as ActualFinishDate ,
      task.sort_number                                                   as SortingNumber,
      //2008 EPPM Harmonization Start

      task.task_type                                                     as EntProjectElementType,
      @Semantics.booleanIndicator: true
      task.milestone                                                     as IsProjectMilestone,
      prps.txjcd                                                         as TaxJurisdiction,
      prps.tplnr                                                         as FunctionalLocation,
      prps.fakkz                                                         as WBSElementIsBillingElement,
      //2008 EPPM Harmonization End

      cast ( task.pspnr as ps_s4_pspnr preserving type )                 as WBSElementInternalID,
     // 2105 Adding Project internal ID as part of BW integration.

      cast ( prps.psphi as ps_s4_proj_pspnr preserving type )            as ProjectInternalID,
     
      cast ( hiera.up as /s4ppm/tv_parent_entity_guid preserving type )  as ParentObjectUUID,
      cast (hiera.sort_number as /s4ppm/tv_sort_number preserving type ) as ProjectElementOrdinalNumber,

      prps.xstat                                                         as WBSIsStatisticalWBSElement,
      prps.pbukr                                                         as CompanyCode,
      prps.pkokr                                                         as ControllingArea,
      prps.kostl                                                         as CostCenter,
      prps.kalsm                                                         as CostingSheet,
      prps.fabkl                                                         as FactoryCalendar,
      prps.func_area                                                     as FunctionalArea,
      prps.imprf                                                         as InvestmentProfile,
      prps.stort                                                         as Location,
      prps.werks                                                         as Plant,
      prps.prctr                                                         as ProfitCenter,
      prps.fkstl                                                         as ResponsibleCostCenter,
      //SO Integration

      prps.abgsl                                                         as ResultAnalysisInternalID,
      prps.vbeln_prps                                                    as LeadingSalesOrder,
      prps.posnr_prps                                                    as LeadingSalesOrderItem,
      @Semantics.user.createdBy: true
      task.created_by                                                    as CreatedByUser,
      @Semantics.systemDateTime.createdAt: true
      task.created_on                                                    as CreationDateTime,
      @Semantics.user.lastChangedBy: true
      task.changed_by                                                    as LastChangedByUser,
      @Semantics.systemDateTime.lastChangedAt: true
      task.changed_on                                                    as LastChangeDateTime,
      
      hiera.guid                                                         as HierarchyNodeUUID,
      

//_CostCenter._Text[1:Language = $session.system_language].CostCenterName ,

      _Project,
      _EntProjElmntDlvbrl,
      // Authorization Association, do not expose externally

      @Consumption.hidden: true
      _AuthUser,
      @Consumption.hidden: true
      _AuthSubst,
      @Consumption.hidden: true
      _AuthRole,
      @Consumption.hidden: true
      _AuthGroup,
 //     _CostCenter

      _EnterpriseProjectForUser
}
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"/S4PPM/HIERARCHY",
"/S4PPM/TASK",
"PRPS"
],
"ASSOCIATED":
[
"E_PPM_ENGAGEMENTPROJELMNT",
"E_PPM_TASK",
"I_ENTERPRISEPROJECT",
"I_ENTERPRISEPROJECTFORUSER",
"I_ENTPROJELMNTDLVBRL",
"I_PPM_AUTHZNBYSUBSTITH",
"I_PPM_AUTHZNBYUSERROLEH",
"I_PPM_AUTHZNBYUSRGRPH",
"I_PPM_AUTHZNBYUSRH"
],
"BASE":
[],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/