I_EntProjTeamChgDocuments

DDL: I_ENTPROJTEAMCHGDOCUMENTS Type: view COMPOSITE

Chg Doc for Team tab of Ent Proj

I_EntProjTeamChgDocuments is a Composite CDS View that provides data about "Chg Doc for Team tab of Ent Proj" in SAP S/4HANA. It reads from 3 data sources (I_ChangeDocument, I_EntProjTeamChgDocItem, I_EnterpriseProject) and exposes 32 fields with key fields ChangeDocObject, ChangeDocObjectClass, DatabaseTable, ChangeDocTableKey, ChangeDocDatabaseTableField. It has 7 associations to related views.

Data Sources (3)

SourceAliasJoin Type
I_ChangeDocument cdhdr from
I_EntProjTeamChgDocItem cdpos inner
I_EnterpriseProject EntProject inner

Associations (7)

CardinalityTargetAliasCondition
[0..*] I_PPM_ContactData _ChangedBy $projection.LastChangedByUser = _ChangedBy.UserID
[0..*] I_EntProjChangeIndicatorText _ChangeTypeText $projection.ChangeDocItemChangeType = _ChangeTypeText.ChangeDocItemChangeType
[0..*] I_EntProjChgDocTableFieldText _FieldText ( _FieldText.ChangeDocDatabaseTableField = $projection.ChangeDocDatabaseTableField and _FieldText.DatabaseTable = cdpos.DatabaseTable )
[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' )

Annotations (13)

NameValueLevelField
EndUserText.label Chg Doc for Team tab of Ent Proj view
VDM.viewType #COMPOSITE view
VDM.lifecycle.contract.type #SAP_INTERNAL_API view
AbapCatalog.sqlViewName IPROJTEAMCD view
AbapCatalog.compiler.compareFilter true view
AbapCatalog.preserveKey true view
AccessControl.authorizationCheck #CHECK view
AccessControl.personalData.blocking #BLOCKED_DATA_EXCLUDED view
ClientHandling.algorithm #SESSION_VARIABLE view
ObjectModel.representativeKey ProjectUUID view
ObjectModel.usageType.serviceQuality #D view
ObjectModel.usageType.dataClass #TRANSACTIONAL view
ObjectModel.usageType.sizeCategory #XL view

Fields (32)

KeyFieldSource TableSource FieldDescription
KEY ChangeDocObject I_ChangeDocument ChangeDocObject
KEY ChangeDocObjectClass I_ChangeDocument ChangeDocObjectClass
KEY DatabaseTable I_EntProjTeamChgDocItem DatabaseTable
KEY ChangeDocTableKey I_EntProjTeamChgDocItem ChangeDocTableKey
KEY ChangeDocDatabaseTableField ChangeDocDatabaseTableField
KEY ChangeDocItemChangeType I_EntProjTeamChgDocItem ChangeDocItemChangeType
KEY ProjectUUID I_EnterpriseProject ProjectUUID
ProjectSummaryTaskUUID I_EnterpriseProject ProjectSummaryTaskUUID
Project I_EnterpriseProject Project
ProjectName I_EnterpriseProject ProjectDescription
ControllingArea I_EnterpriseProject ControllingArea
ProfitCenter I_EnterpriseProject ProfitCenter
CompanyCode I_EnterpriseProject CompanyCode
ResponsibleCostCenter I_EnterpriseProject ResponsibleCostCenter
ProjectProfileCode I_EnterpriseProject ProjectProfileCode
Plant I_EnterpriseProject Plant
EnterpriseProjectType I_EnterpriseProject EnterpriseProjectType
FunctionalArea I_EnterpriseProject FunctionalArea
_AuthUser _AuthUser
_AuthSubst _AuthSubst
_AuthRole _AuthRole
_AuthGroup _AuthGroup
ResourceUUID
ChangeDocumentOldFieldValue ChangeDocPreviousFieldValue Old Value
ChangeDocumentNewFieldValue ChangeDocNewFieldValue New Value
LastChangedByUser I_ChangeDocument CreatedByUser
LastChangeDate I_ChangeDocument CreationDate
LastChangeTime I_ChangeDocument CreationTime
BusinessPartnerRoleName I_EntProjTeamChgDocItem BusinessPartnerRoleName
_ChangedBy _ChangedBy
_ChangeTypeText _ChangeTypeText
_FieldText _FieldText
@EndUserText.label: 'Chg Doc for Team tab of Ent Proj'

@VDM: {
   viewType: #COMPOSITE,
   lifecycle.contract.type: #SAP_INTERNAL_API
}

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

// Authorization handling

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

@ClientHandling.algorithm: #SESSION_VARIABLE

@ObjectModel: {
   semanticKey:       [ 'Project' ],
   representativeKey: 'ProjectUUID',
   alternativeKey: [ 
                     { id : 'ProjectUUID', element: ['ProjectUUID', 'ChangeDocument' ], uniqueness: #UNIQUE }, //TODO

                     { id : 'ChangeDocObject', element: ['ChangeDocObject'], uniqueness: #UNIQUE } ], //TODO


   usageType: {
     serviceQuality:  #D,
     dataClass:       #TRANSACTIONAL,
     sizeCategory:    #XL
   }
}

define view I_EntProjTeamChgDocuments as select from I_ChangeDocument as cdhdr 

      inner join I_EnterpriseProject as EntProject
          on   cdhdr.ChangeDocObject  = concat ('ENTPROJ', bintohex(EntProject.ProjectUUID) )
       
      inner join I_EntProjTeamChgDocItem as cdpos  
          on  cdpos.ChangeDocObjectClass              = cdhdr.ChangeDocObjectClass
          and cdpos.ChangeDocObject                   = cdhdr.ChangeDocObject
          and cdpos.ChangeDocument                    = cdhdr.ChangeDocument

            
      left outer to one join  I_EntProjectEntitlement   as Entitlement
          on  cdpos.ChangeDocTableKey = concat(Entitlement.mandt, bintohex(Entitlement.ProjectEntitlementUUID)) 
                                                       
// Changed By + Changed By Text

//TODO: Cardinality 1 of Association _CHANGEDBYUSERNAME does not match to the ON-condition

  association [0..*] to I_PPM_ContactData               as _ChangedBy           on $projection.LastChangedByUser                  = _ChangedBy.UserID
  
// Change Type Text (Action in UI)                                   

  association [0..*] to I_EntProjChangeIndicatorText    as _ChangeTypeText      on $projection.ChangeDocItemChangeType            = _ChangeTypeText.ChangeDocItemChangeType
  
// Team Member

//  association [0..1] to I_EnterpriseProjectTeamMember   as _TeamMember          on $projection.teammemberuuid                     = _TeamMember.TeamMemberUUID


// Text for Field

  association [0..*] to I_EntProjChgDocTableFieldText   as _FieldText   on ( _FieldText.ChangeDocDatabaseTableField  = $projection.ChangeDocDatabaseTableField
                                                                      and _FieldText.DatabaseTable  = cdpos.DatabaseTable
                                                                     )

// 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'
                                                                                                                            )                                                                                         
                                                           
{

  key cdhdr.ChangeDocObject                                             as ChangeDocObject,
  key cdhdr.ChangeDocObjectClass                                        as ChangeDocObjectClass,    

  key cdpos.DatabaseTable                                               as DatabaseTable,
  key cdpos.ChangeDocTableKey                                           as ChangeDocTableKey,
  
  @ObjectModel.readOnly: true
  key ChangeDocDatabaseTableField                                       as ChangeDocDatabaseTableField,
  
// Change Indicator  

  @ObjectModel.text.association: '_ChangeTypeText'
  key cdpos.ChangeDocItemChangeType                                     as ChangeDocItemChangeType,       
  
  key EntProject.ProjectUUID                                            as ProjectUUID,
   
      EntProject.ProjectSummaryTaskUUID                                 as ProjectSummaryTaskUUID,
      EntProject.Project                                                as Project,
      EntProject.ProjectDescription                                     as ProjectName,
           
// Needed for authorization check in DCL   

      EntProject.ControllingArea                                        as ControllingArea, 
      EntProject.ProfitCenter                                           as ProfitCenter,  
      EntProject.CompanyCode                                            as CompanyCode,  
      EntProject.ResponsibleCostCenter                                  as ResponsibleCostCenter,
      EntProject.ProjectProfileCode                                     as ProjectProfileCode,
      EntProject.Plant                                                  as Plant,
      EntProject.EnterpriseProjectType                                  as EnterpriseProjectType, 
      EntProject.FunctionalArea                                         as FunctionalArea,
// Authorization Association, needed for DCL

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

      @ObjectModel.readOnly: true 
      cast (hextobin(cdpos.BusinessPartnerUUID) as sysuuid_x )          as ResourceUUID,
// Old Value      

      @ObjectModel.readOnly: true
      @EndUserText.label: 'Old Value'
      ChangeDocPreviousFieldValue                                       as ChangeDocumentOldFieldValue,

// New Value      

      @ObjectModel.readOnly: true
      @EndUserText.label: 'New Value'
      ChangeDocNewFieldValue                                            as ChangeDocumentNewFieldValue,
          
// Changed By

      @ObjectModel.readOnly: true
      cdhdr.CreatedByUser                                               as LastChangedByUser,       
      
// Separate Date

// LastChangeDate needed for Smart Filter Bar

      cdhdr.CreationDate                                                as LastChangeDate,  
      
// Separate Time 

// LastChangeTime needed for sorting

      cdhdr.CreationTime                                                as LastChangeTime,      
      
// Role Name

      @ObjectModel.readOnly: true 
      cdpos.BusinessPartnerRoleName,
           
// Date Time in One

// Needed for Smart Table

      cast ( dats_tims_to_tstmp ( cdhdr.CreationDate, 
                                  cdhdr.CreationTime, 
                                  abap_system_timezone ( $session.client, 'NULL' ),
                                                         $session.client, 'NULL' ) as cdcreated ) as LastChangeDateTime,
                                                            
   _ChangedBy,
   _ChangeTypeText,
   _FieldText
                                    
}

where
      cdhdr.ChangeDocObjectClass = '/S4PPM/PROJECT'
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_CHANGEDOCUMENT",
"I_ENTERPRISEPROJECT",
"I_ENTPROJECTENTITLEMENT",
"I_ENTPROJTEAMCHGDOCITEM"
],
"ASSOCIATED":
[
"I_ENTPROJCHANGEINDICATORTEXT",
"I_ENTPROJCHGDOCTABLEFIELDTEXT",
"I_PPM_AUTHZNBYSUBSTITH",
"I_PPM_AUTHZNBYUSERROLEH",
"I_PPM_AUTHZNBYUSRGRPH",
"I_PPM_AUTHZNBYUSRH",
"I_PPM_CONTACTDATA"
],
"BASE":
[],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/