I_EnterpriseProjectElementTP

DDL: I_ENTERPRISEPROJECTELEMENTTP Type: view TRANSACTIONAL

TP view for CRUD API for EPPM Workpackages and milestones

I_EnterpriseProjectElementTP is a Transactional CDS View that provides data about "TP view for CRUD API for EPPM Workpackages and milestones" in SAP S/4HANA. It reads from 2 data sources (I_PPM_ProjectSummaryTask, I_PPM_ProjectTask) and exposes 53 fields with key field ProjectElementUUID. It has 10 associations to related views.

Data Sources (2)

SourceAliasJoin Type
I_PPM_ProjectSummaryTask Project inner
I_PPM_ProjectTask Workpackage from

Associations (10)

CardinalityTargetAliasCondition
[0..1] I_EnterpriseProjectElementTP _ParentProjElement $projection.ParentObjectUUID = _ParentProjElement.ProjectElementUUID
[1..*] I_EnterpriseProjectElementTP _SubProjElement $projection.ProjectElementUUID = _SubProjElement.ParentObjectUUID
[0..*] I_PPM_AuthznByUsrH _AuthUser _AuthUser.ReferencedObjectUUID = $projection.ProjectElementUUID and _AuthUser.UserID = $session.user and ( _AuthUser.Activity = 'Admin' or _AuthUser.Activity = 'Write' or _AuthUser.Activity = 'Read' )
[0..*] I_PPM_AuthznBySubstitH _AuthSubst _AuthSubst.ReferencedObjectUUID = $projection.ProjectElementUUID and _AuthSubst.UserID = $session.user and ( _AuthSubst.Activity = 'Admin' or _AuthSubst.Activity = 'Write' or _AuthSubst.Activity = 'Read' )
[0..*] I_PPM_AuthznByUserRoleH _AuthRole _AuthRole.ReferencedObjectUUID = $projection.ProjectElementUUID and _AuthRole.UserID = $session.user and ( _AuthRole.Activity = 'Admin' or _AuthRole.Activity = 'Write' or _AuthRole.Activity = 'Read' )
[0..*] I_PPM_AuthznByUsrGrpH _AuthGroup _AuthGroup.ReferencedObjectUUID = $projection.ProjectElementUUID and _AuthGroup.UserID = $session.user and ( _AuthGroup.Activity = 'Admin' or _AuthGroup.Activity = 'Write' or _AuthGroup.Activity = 'Read' ) ---Extension
[1..1] E_PPM_Task _ProjectElementExtension $projection.ProjectElementUUID = _ProjectElementExtension.TaskUUID
[0..1] I_EntProjectElementJVATP _EntProjectElementJVA
[0..1] I_EntProjElmntPublicSectorTP _EntProjectElmntPublicSector
[0..1] R_EntProjElmntBlockFuncTP _EntProjElmntBlkFunc

Annotations (14)

NameValueLevelField
AbapCatalog.sqlViewName IENRPRPROELEMTP view
AbapCatalog.compiler.compareFilter true view
ClientHandling.algorithm #SESSION_VARIABLE view
Metadata.ignorePropagatedAnnotations true view
AccessControl.authorizationCheck #CHECK view
AccessControl.personalData.blocking #BLOCKED_DATA_EXCLUDED view
ObjectModel.representativeKey ProjectElementUUID view
ObjectModel.usageType.dataClass #MIXED view
ObjectModel.usageType.serviceQuality #C view
ObjectModel.usageType.sizeCategory #L view
VDM.viewType #TRANSACTIONAL view
VDM.lifecycle.contract.type #SAP_INTERNAL_API view
AbapCatalog.preserveKey true view
EndUserText.label TP view for CRUD API for EPPM Workpackages and milestones view

Fields (53)

KeyFieldSource TableSource FieldDescription
KEY ProjectElementUUID I_PPM_ProjectTask TaskUUID
ProjectElement I_PPM_ProjectTask Task
WBSElementInternalID I_PPM_ProjectTask WBSElementInternalID
ProjectUUID I_PPM_ProjectTask ProjectUUID
ProjectElementDescription
ParentObjectUUID HierarchyData ParentObjectUUID
ProcessingStatus I_PPM_ProjectTask ProcessingStatus
SortingNumber I_PPM_ProjectTask SortingNumber
IsProjectMilestone I_PPM_ProjectTask IsProjectMilestone
MilestoneApprovalStatus I_PPM_ProjectTask MilestoneApprovalStatus
IsMainMilestone I_PPM_ProjectTask IsMainMilestone
PlannedStartDate I_PPM_ProjectTask PlannedStartDate
PlannedEndDate I_PPM_ProjectTask PlannedEndDate
ActualStartDate I_PPM_ProjectTask ActualStartDate
ActualEndDate I_PPM_ProjectTask ActualEndDate
ResponsibleCostCenter I_PPM_ProjectTask ResponsibleCostCenter
CompanyCode I_PPM_ProjectTask CompanyCode
ProfitCenter I_PPM_ProjectTask ProfitCenter
FunctionalArea I_PPM_ProjectTask FunctionalArea
ControllingArea I_PPM_ProjectTask ControllingArea
Plant I_PPM_ProjectTask Plant
Location I_PPM_ProjectTask Location
TaxJurisdiction I_PPM_ProjectTask TaxJurisdiction
FunctionalLocation I_PPM_ProjectTask FunctionalLocation
FactoryCalendar I_PPM_ProjectTask FactoryCalendar
CostingSheet I_PPM_ProjectTask CostingSheet
InvestmentProfile I_PPM_ProjectTask InvestmentProfile
WBSIsStatisticalWBSElement I_PPM_ProjectTask WBSIsStatisticalWBSElement
CostCenter I_PPM_ProjectTask CostCenter
WBSElementIsBillingElement I_PPM_ProjectTask WBSElementIsBillingElement
CreatedByUser I_PPM_ProjectTask CreatedByUser
CreationDateTime I_PPM_ProjectTask CreationDateTime
LastChangedByUser I_PPM_ProjectTask LastChangedByUser
LastChangeDateTime I_PPM_ProjectTask LastChangeDateTime
ProjectLastChangedDateTime I_PPM_ProjectSummaryTask LastChangeDateTime
_CompanyCode I_PPM_ProjectTask _CompanyCode
_ControllingArea I_PPM_ProjectTask _ControllingArea
_FunctionalArea I_PPM_ProjectTask _FunctionalArea
_ProfitCenter I_PPM_ProjectTask _ProfitCenter
_Plant I_PPM_ProjectTask _Plant
_ResponsibleCostCenter I_PPM_ProjectTask _ResponsibleCostCenter
_FactoryCalendar I_PPM_ProjectTask _FactoryCalendar
_CostCenter I_PPM_ProjectTask _CostCenter
_EnterpriseProject _EnterpriseProject
_ParentProjElement _ParentProjElement
_SubProjElement _SubProjElement
_EntProjectElementJVA _EntProjectElementJVA
_EntProjectElmntPublicSector _EntProjectElmntPublicSector
_AuthUser _AuthUser
_AuthSubst _AuthSubst
_AuthRole _AuthRole
_AuthGroup _AuthGroup
_EntProjElmntBlkFunc _EntProjElmntBlkFunc
@AbapCatalog: {

    sqlViewName: 'IENRPRPROELEMTP',
    compiler.compareFilter: true
}

@ClientHandling.algorithm: #SESSION_VARIABLE

@Metadata.ignorePropagatedAnnotations: true

@AccessControl: {
    authorizationCheck:     #CHECK,
    personalData.blocking:  #BLOCKED_DATA_EXCLUDED
}

@ObjectModel: {
    semanticKey:       [ 'ProjectElement' ],
    representativeKey: 'ProjectElementUUID',
    alternativeKey: [ { id : 'WBSElementInternalID',       element: ['WBSElementInternalID'],         uniqueness: #UNIQUE } ],
    usageType: {
      dataClass:       #MIXED,
      serviceQuality:  #C,
      sizeCategory:    #L
    }
}

@VDM: {
    viewType: #TRANSACTIONAL,
    lifecycle.contract.type: #SAP_INTERNAL_API
}
@AbapCatalog.preserveKey: true
@EndUserText.label: 'TP view for CRUD API for EPPM Workpackages and milestones'


define view I_EnterpriseProjectElementTP
  as select from I_PPM_ProjectTask     as Workpackage
//    inner join   I_EnterpriseProjectTP as Project on Workpackage.ProjectUUID = Project.ProjectUUID // reduce complexity

      inner join   I_PPM_ProjectSummaryTask as Project on Workpackage.ProjectUUID = Project.ProjectUUID
 // to make sure parent is empty in case of parent being PST                                                         

    left outer to one join I_PPM_StdTaskHierarchyData as HierarchyData 
                    on   Workpackage.TaskUUID = HierarchyData.ReferencedObjectUUID
                     and Project.ProjectSummaryTaskUUID <> HierarchyData.ParentObjectUUID

  //  association [1..1] to I_EnterpriseProjectTP as  _EnterpriseProject  on $projection.ProjectUUID = _EnterpriseProject.ProjectUUID


  association        to parent I_EnterpriseProjectTP as _EnterpriseProject       on  $projection.ProjectUUID = _EnterpriseProject.ProjectUUID

  association [0..1] to I_EnterpriseProjectElementTP as _ParentProjElement       on  $projection.ParentObjectUUID = _ParentProjElement.ProjectElementUUID

  association [1..*] to I_EnterpriseProjectElementTP as _SubProjElement          on  $projection.ProjectElementUUID = _SubProjElement.ParentObjectUUID
  // 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'
                                                                                  )
  ---Extension Association
  association [1..1] to E_PPM_Task                   as _ProjectElementExtension on  $projection.ProjectElementUUID = _ProjectElementExtension.TaskUUID
  composition [0..1] of I_EntProjectElementJVATP     as _EntProjectElementJVA

  //Add PSM fields on 27.06

  composition [0..1] of I_EntProjElmntPublicSectorTP as _EntProjectElmntPublicSector
  //Add PSM fields on 27.06


  composition [0..1] of R_EntProjElmntBlockFuncTP    as _EntProjElmntBlkFunc

{
  key Workpackage.TaskUUID                          as ProjectElementUUID,
      Workpackage.Task                              as ProjectElement,
      Workpackage.WBSElementInternalID              as WBSElementInternalID,

      Workpackage.ProjectUUID           as ProjectUUID,

      cast(TaskName    as text40 )      as ProjectElementDescription,

      HierarchyData.ParentObjectUUID    as ParentObjectUUID,

      // task type needed ?

      Workpackage.ProcessingStatus      as ProcessingStatus,

      Workpackage.SortingNumber                     as SortingNumber,
      Workpackage.IsProjectMilestone                as IsProjectMilestone,
      Workpackage.MilestoneApprovalStatus           as MilestoneApprovalStatus,
      Workpackage.IsMainMilestone                   as IsMainMilestone,

      //      PlannedStartDate             as TaskStartDate,

      //      PlannedEndDate               as TaskEndDate,

      Workpackage.PlannedStartDate                  as PlannedStartDate,
      Workpackage.PlannedEndDate                    as PlannedEndDate,

      Workpackage.ForecastedStartDate               as ForecastedStartDate,
      Workpackage.ForecastedEndDate                 as ForecastedEndDate,
      Workpackage.ActualStartDate                   as ActualStartDate,
      Workpackage.ActualEndDate                     as ActualEndDate,

      Workpackage.ResponsibleCostCenter as ResponsibleCostCenter,
      Workpackage.CompanyCode           as CompanyCode,
      Workpackage.ProfitCenter          as ProfitCenter,
      Workpackage.FunctionalArea        as FunctionalArea,
      Workpackage.ControllingArea       as ControllingArea,
      Workpackage.Plant                 as Plant,
      Workpackage.Location              as Location,
      //Tax Jurisdiction, Functional Location fields

      Workpackage.TaxJurisdiction       as TaxJurisdiction,
      Workpackage.FunctionalLocation    as FunctionalLocation,

      Workpackage.FactoryCalendar                   as FactoryCalendar,
      Workpackage.CostingSheet                      as CostingSheet,
      Workpackage.InvestmentProfile     as InvestmentProfile,
      Workpackage.WBSIsStatisticalWBSElement        as WBSIsStatisticalWBSElement,
      Workpackage.CostCenter                        as CostCenter,
      // S4H 2005 Billing element indicator

      Workpackage.WBSElementIsBillingElement        as WBSElementIsBillingElement,
      //admin data

      Workpackage.CreatedByUser         as CreatedByUser,
      Workpackage.CreationDateTime      as CreationDateTime,
      Workpackage.LastChangedByUser     as LastChangedByUser,
      Workpackage.LastChangeDateTime    as LastChangeDateTime,
      
      // needed for etag

      Project.LastChangeDateTime        as ProjectLastChangedDateTime,

      Workpackage._CompanyCode,
      Workpackage._ControllingArea,
      Workpackage._FunctionalArea,
      Workpackage._ProfitCenter,
      Workpackage._Plant,
      Workpackage._ResponsibleCostCenter,
      Workpackage._FactoryCalendar,
      Workpackage._CostCenter,

      //needed or not ?

      //      @ObjectModel.association.type:  [ #TO_COMPOSITION_ROOT, #TO_COMPOSITION_PARENT ]

      _EnterpriseProject,

      //needed or not ?

      //             @ObjectModel.association.type:  [ #TO_COMPOSITION_PARENT ]

      _ParentProjElement,

      //needed or not ?

      //            @ObjectModel.association.type: [ #TO_COMPOSITION_CHILD ]

      _SubProjElement,

      //needed or not ?

      //            @ObjectModel.association.type: [ #TO_COMPOSITION_CHILD

      _EntProjectElementJVA,
      //     @feature: 'BF:PSM_BUDGET_ACCOUNTING_CONTROL, EPPM_PUBLIC_SECTOR'

      _EntProjectElmntPublicSector,

      _AuthUser,
      _AuthSubst,
      _AuthRole,
      _AuthGroup,
      _EntProjElmntBlkFunc

}

where
  Workpackage.ObjectType <> 'DPO';