I_PPM_ProjectSummaryTask

DDL: I_PPM_PROJECTSUMMARYTASK Type: view COMPOSITE

Project, Projecttemplate or snapshot

I_PPM_ProjectSummaryTask is a Composite CDS View that provides data about "Project, Projecttemplate or snapshot" in SAP S/4HANA. It reads from 2 data sources (I_PPM_ProjectRoot, I_PPM_Task) and exposes 67 fields with key field ProjectUUID. It has 10 associations to related views.

Data Sources (2)

SourceAliasJoin Type
I_PPM_ProjectRoot ProjectRoot inner
I_PPM_Task SummaryTask from

Associations (10)

CardinalityTargetAliasCondition
[0..*] I_PPM_AuthznByUsrH _AuthUser _AuthUser.ReferencedObjectUUID = $projection.ProjectSummaryTaskUUID 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.ProjectSummaryTaskUUID 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.ProjectSummaryTaskUUID 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.ProjectSummaryTaskUUID and _AuthGroup.UserID = $session.user and ( _AuthGroup.Activity = 'Admin' or _AuthGroup.Activity = 'Write' or _AuthGroup.Activity = 'Read' )
[0..1] I_WBSElementBasicData _ProjObjRoot ( _ProjObjRoot.WBSElementInternalID = $projection.WBSElementInternalID )
[0..1] I_PPM_ProjectType _ProjectType ( _ProjectType.ProjectType = $projection.ProjectType )
[0..*] I_PPM_ProTypeText _ProjectTypeName ( _ProjectTypeName.ProjectType = $projection.ProjectType )
[0..*] I_PPM_Task _Task ( _Task.ProjectUUID = $projection.ProjectUUID ) and ( ( _Task.ObjectType = 'TPO' ) or( _Task.ObjectType = 'TTO' ) )
[0..*] I_PPM_Task _Phase ( _Phase.ProjectUUID = $projection.ProjectUUID ) and ( _Phase.ObjectType = 'PPO' )
[0..1] I_PPM_ItemInfo _Portfolio ( _Portfolio.ProjectUUID = $projection.ProjectUUID )

Annotations (15)

NameValueLevelField
EndUserText.label Project, Projecttemplate or snapshot view
VDM.viewType #COMPOSITE view
VDM.lifecycle.contract.type #SAP_INTERNAL_API view
AccessControl.authorizationCheck #CHECK view
AccessControl.personalData.blocking #BLOCKED_DATA_EXCLUDED view
ClientHandling.algorithm #SESSION_VARIABLE view
AbapCatalog.sqlViewName IPPMPROSUMTASK view
AbapCatalog.compiler.compareFilter true view
AbapCatalog.preserveKey true view
ObjectModel.representativeKey ProjectUUID view
ObjectModel.usageType.serviceQuality #B view
ObjectModel.usageType.dataClass #MASTER view
ObjectModel.usageType.sizeCategory #L view
UI.headerInfo.typeName Project view
UI.headerInfo.typeNamePlural Projects view

Fields (67)

KeyFieldSource TableSource FieldDescription
KEY ProjectUUID I_PPM_ProjectRoot ProjectUUID
ProjectSummaryTaskUUID I_PPM_Task TaskUUID
ProjectCategory I_PPM_ProjectRoot ProjectCategory
ProjectLastChangedByUser I_PPM_ProjectRoot ProjectLastChangedByUser
ProjectLastChangedDateTime I_PPM_ProjectRoot ProjectLastChangedDateTime
ProjectReasonCode I_PPM_ProjectRoot ProjectReasonCode
MasterLanguage I_PPM_ProjectRoot MasterLanguage
IsSummaryTaskEnabled I_PPM_ProjectRoot IsSummaryTaskEnabled
ProjectLocation I_PPM_ProjectRoot ProjectLocation
PlanVersion I_PPM_ProjectRoot PlanVersion
OrganizationalUnitObjectType I_PPM_ProjectRoot OrganizationalUnitObjectType
OrganizationalUnit I_PPM_ProjectRoot OrganizationalUnit
ProjectEarliestOrLatest I_PPM_ProjectRoot ProjectEarliestOrLatest
EntProjectIsConfidential I_PPM_ProjectRoot EntProjectIsConfidential
EnterpriseProjectServiceOrg I_PPM_ProjectRoot EnterpriseProjectServiceOrg
ProjectTemplateUUID I_PPM_ProjectRoot ProjectTemplateUUID
ProjectInternalID I_PPM_ProjectRoot ProjectInternalID
WBSElementInternalID I_PPM_Task WBSElementInternalID
ProjectType I_PPM_Task TaskType
Project I_PPM_Task ExternalId
ProjectName I_PPM_Task TaskName
ReleaseDateTime I_PPM_Task ReleaseDateTime
EarliestStartDateTime I_PPM_Task EarliestStartDateTime
EarliestStartDate I_PPM_Task EarliestStartDate
EarliestFinishDateTime I_PPM_Task EarliestFinishDateTime
EarliestFinishDate I_PPM_Task EarliestFinishDate
StartConstraintType I_PPM_Task StartConstraintType
StartConstraintDateTime I_PPM_Task StartConstraintDateTime
StartConstraintDate I_PPM_Task StartConstraintDate
ProjectFinishConstraintType I_PPM_Task FinishConstraintType
FinishConstraintDateTime I_PPM_Task FinishConstraintDateTime
FinishConstraintDate I_PPM_Task FinishConstraintDate
ActualStartDateTime I_PPM_Task ActualStartDateTime
ActualStartDate I_PPM_Task ActualStartDate
ActualFinishDateTime I_PPM_Task ActualFinishDateTime
ActualFinishDate I_PPM_Task ActualFinishDate
LatestStartDateTime I_PPM_Task LatestStartDateTime
LatestStartDate I_PPM_Task LatestStartDate
LatestFinishDateTime I_PPM_Task LatestFinishDateTime
LatestFinishDate I_PPM_Task LatestFinishDate
ProjectElementDuration I_PPM_Task ProjectElementDuration
DurationUnit I_PPM_Task DurationUnit
ProjectVersionNumber I_PPM_Task ProjectVersionNumber
ProjectProcessingStatus I_PPM_Task TaskProcessingStatus
PriorityCode I_PPM_Task PriorityCode
CreatedByUser I_PPM_Task CreatedByUser
CreationDateTime I_PPM_Task CreationDateTime
LastChangedByUser I_PPM_Task LastChangedByUser
LastChangeDateTime I_PPM_Task LastChangeDateTime
EntProjIsMultiSlsOrdItmsEnbld I_PPM_Task EntProjIsMultiSlsOrdItmsEnbld
_AuthUser _AuthUser
_AuthSubst _AuthSubst
_AuthRole _AuthRole
_AuthGroup _AuthGroup
_Task _Task
_Phase _Phase
_CreatedByUser I_PPM_Task _CreatedByUser
_LastChangedByUser I_PPM_Task _LastChangedByUser
_ProjectLastChangedByUser I_PPM_ProjectRoot _ProjectLastChangedByUser
_ProjectName I_PPM_Task _Text
_ProjectType _ProjectType
_ProjectTypeName _ProjectTypeName
_Portfolio _Portfolio
_I_Project I_PPM_ProjectRoot _I_Project
_ProjObjRoot _ProjObjRoot
_Priority I_PPM_Task _Priority
_PriorityText _PriorityText
@EndUserText.label: 'Project, Projecttemplate or snapshot'

@VDM.viewType: #COMPOSITE
@VDM.lifecycle.contract.type:  #SAP_INTERNAL_API

@AccessControl: {
    authorizationCheck: #CHECK,
    privilegedAssociations: [ 'I_PPM_ProjectType', 'I_PPM_ProTypeText' ],
    personalData.blocking: #BLOCKED_DATA_EXCLUDED
  }

@ClientHandling.algorithm: #SESSION_VARIABLE

@AbapCatalog: {
    sqlViewName: 'IPPMPROSUMTASK',
    compiler.compareFilter: true,
    preserveKey:true
}

@ObjectModel: {
   semanticKey:       [ 'Project' ],
   representativeKey: 'ProjectUUID',
   alternativeKey: [ { id : 'ProjectSummaryTaskUUID', uniqueness: #UNIQUE, element: 'ProjectSummaryTaskUUID' },
                     { id : 'ProjectInternalID'     , uniqueness: #UNIQUE, element: 'ProjectInternalID' }       ],
   usageType: {
     serviceQuality:  #B,
     dataClass:       #MASTER,
     sizeCategory:    #L
   }
}

@UI.headerInfo: {
  typeName:       'Project',
  typeNamePlural: 'Projects'
}

define view I_PPM_ProjectSummaryTask
  as select from I_PPM_Task        as SummaryTask
    inner join   I_PPM_ProjectRoot as ProjectRoot on(
      ProjectRoot.ProjectUUID = SummaryTask.ProjectUUID
    )
  // associations to authorization views

  association [0..*] to I_PPM_AuthznByUsrH      as _AuthUser        on  _AuthUser.ReferencedObjectUUID = $projection.ProjectSummaryTaskUUID
                                                                    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.ProjectSummaryTaskUUID
                                                                    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.ProjectSummaryTaskUUID
                                                                    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.ProjectSummaryTaskUUID
                                                                    and _AuthGroup.UserID               = $session.user
                                                                    and (
                                                                       _AuthGroup.Activity              = 'Admin'
                                                                       or _AuthGroup.Activity           = 'Write'
                                                                       or _AuthGroup.Activity           = 'Read'
                                                                     )

  // PS Root WBS Element

  association [0..1] to I_WBSElementBasicData   as _ProjObjRoot     on  (
          _ProjObjRoot.WBSElementInternalID = $projection.WBSElementInternalID
        )

  // other associations

  association [0..1] to I_PPM_ProjectType       as _ProjectType     on  (
          _ProjectType.ProjectType = $projection.ProjectType
        )
  association [0..*] to I_PPM_ProTypeText       as _ProjectTypeName on  (
      _ProjectTypeName.ProjectType = $projection.ProjectType
    )
  association [0..*] to I_PPM_Task              as _Task            on  (
                 _Task.ProjectUUID                                                        = $projection.ProjectUUID
               )
                                                                    and (
                                                                       (
                                                                         _Task.ObjectType = 'TPO'
                                                                       )
                                                                       or(
                                                                         _Task.ObjectType = 'TTO'
                                                                       )
                                                                     )
  association [0..*] to I_PPM_Task              as _Phase           on  (
                _Phase.ProjectUUID                                                       = $projection.ProjectUUID
              )
                                                                    and (
                                                                       _Phase.ObjectType = 'PPO'
                                                                     )
  association [0..1] to I_PPM_ItemInfo          as _Portfolio       on  (
            _Portfolio.ProjectUUID = $projection.ProjectUUID
          )

{
  key ProjectRoot.ProjectUUID,

/* CE2011 - Project is referred by Enterprise Project
      @Consumption.semanticObject: 'EnterpriseProject' */
      @ObjectModel.text.association: '_ProjectName'
      SummaryTask.TaskUUID             as ProjectSummaryTaskUUID,
      ProjectRoot.ProjectCategory,
       
      //    @Semantics.user.lastChangedBy: true  - This is on project level, not for this record only!


      ProjectRoot.ProjectLastChangedByUser,
      //    @Semantics.systemDateTime.lastChangedAt: true

      ProjectRoot.ProjectLastChangedDateTime,
      ProjectRoot.ProjectReasonCode,
      ProjectRoot.MasterLanguage,
      ProjectRoot.IsSummaryTaskEnabled,
      ProjectRoot.ProjectLocation,
      ProjectRoot.PlanVersion,
      ProjectRoot.OrganizationalUnitObjectType,
      ProjectRoot.OrganizationalUnit,
      ProjectRoot.ProjectEarliestOrLatest,
      ProjectRoot.EntProjectIsConfidential,
      ProjectRoot.EnterpriseProjectServiceOrg,

      ProjectRoot.ProjectTemplateUUID, // when the project was copied,this contains the UUID of the source project

      // PS Data

      ProjectRoot.ProjectInternalID,
    
      SummaryTask.WBSElementInternalID,

      @ObjectModel.text.association: '_ProjectTypeName'
      SummaryTask.TaskType             as ProjectType,
// CE2011 - Project is referred by EnterpriseProject   

      @Consumption.semanticObject: 'EnterpriseProject' 
      SummaryTask.ExternalId           as Project,
      SummaryTask.TaskName             as ProjectName,
      SummaryTask.ReleaseDateTime,

      SummaryTask.EarliestStartDateTime,
      SummaryTask.EarliestStartDate,
      SummaryTask.EarliestFinishDateTime,
      SummaryTask.EarliestFinishDate,

      SummaryTask.StartConstraintType,
      SummaryTask.StartConstraintDateTime,
      SummaryTask.StartConstraintDate,
      SummaryTask.FinishConstraintType as ProjectFinishConstraintType,
      SummaryTask.FinishConstraintDateTime,
      SummaryTask.FinishConstraintDate,

      SummaryTask.ActualStartDateTime,
      SummaryTask.ActualStartDate,
      SummaryTask.ActualFinishDateTime,
      SummaryTask.ActualFinishDate,

      SummaryTask.LatestStartDateTime,
      SummaryTask.LatestStartDate,
      SummaryTask.LatestFinishDateTime,
      SummaryTask.LatestFinishDate,

      SummaryTask.ForecastedStartDateTime,
      SummaryTask.ForecastedStartDate,
      SummaryTask.ForecastedFinishDateTime,
      SummaryTask.ForecastedFinishDate,
      SummaryTask.ForecastedFinishDate as ForecastedEndDate,

      SummaryTask.ProjectElementDuration,
      SummaryTask.DurationUnit,

      SummaryTask.ProjectVersionNumber,

      SummaryTask.TaskProcessingStatus as ProjectProcessingStatus,

      SummaryTask.PriorityCode,

      @Semantics.user.createdBy: true
      SummaryTask.CreatedByUser,
      //@Semantics.systemDateTime.createdAt: true

      SummaryTask.CreationDateTime,
      @Semantics.user.lastChangedBy: true
      SummaryTask.LastChangedByUser,
      //@Semantics.systemDateTime.lastChangedAt: true

      SummaryTask.LastChangeDateTime,
       //2102 Ent Project Multiple SO item indicator

      SummaryTask.EntProjIsMultiSlsOrdItmsEnbld,
    // SummaryTask.TaskTemplateUUID as TaskTemplateUUID,


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

      // when using the association to _Task or _Phase via project root, we need to carry the ProjectRootUUID everywhere, for this reason, I did introduce

      // a new association to I_PPM_Task

      //    ProjectRoot.ProjectRootUUID,

      _Task,
      _Phase,



      SummaryTask._CreatedByUser,
      SummaryTask._LastChangedByUser,

      ProjectRoot._ProjectLastChangedByUser,

      SummaryTask._Text                as _ProjectName,

      _ProjectType,
      _ProjectTypeName,

      _Portfolio,

      ProjectRoot._I_Project,
      _ProjObjRoot,
      SummaryTask._Priority,
      _PriorityText

}
where
  SummaryTask.ObjectType = 'DPO'