I_EntProjProjectChgDocuments

DDL: I_ENTPROJPROJECTCHGDOCUMENTS Type: view COMPOSITE

Chg Doc for General Info of Ent Proj

I_EntProjProjectChgDocuments is a Composite CDS View that provides data about "Chg Doc for General Info of Ent Proj" in SAP S/4HANA. It reads from 4 data sources (I_ChangeDocument, I_ChangeDocumentItem, I_EnterpriseProject, I_EntProjChgDocTableField) and exposes 32 fields with key fields ChangeDocObject, ChangeDocObjectClass, ChangeDocument, DatabaseTable, ChangeDocTableKey. It has 8 associations to related views.

Data Sources (4)

SourceAliasJoin Type
I_ChangeDocument cdhdr from
I_ChangeDocumentItem cdpos inner
I_EnterpriseProject EntProject inner
I_EntProjChgDocTableField fields inner

Associations (8)

CardinalityTargetAliasCondition
[0..*] I_PPM_PriorityText _PriorityText $projection.ChangeDocumentOldFieldValue = _PriorityText.PriorityCodeName
[0..*] I_EntProjChangeIndicatorText _ChangeTypeText $projection.ChangeDocItemChangeType = _ChangeTypeText.ChangeDocItemChangeType
[0..*] I_PPM_ContactData _ChangedBy $projection.LastChangedByUser = _ChangedBy.UserID
[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 General Info of Ent Proj view
VDM.viewType #COMPOSITE view
VDM.lifecycle.contract.type #SAP_INTERNAL_API view
AbapCatalog.sqlViewName IPROJGENINFOCD 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 ChangeDocument I_ChangeDocumentItem ChangeDocument
KEY DatabaseTable I_ChangeDocumentItem DatabaseTable
KEY ChangeDocTableKey I_ChangeDocumentItem ChangeDocTableKey
KEY ChangeDocDatabaseTableField I_ChangeDocumentItem ChangeDocDatabaseTableField
KEY ChangeDocItemChangeType I_ChangeDocumentItem ChangeDocItemChangeType
KEY ProjectUUID I_EnterpriseProject ProjectUUID
ProjectSummaryTaskUUID I_EnterpriseProject ProjectSummaryTaskUUID
Project I_EnterpriseProject Project
ProjectName I_EnterpriseProject ProjectDescription
_ChangedBy _ChangedBy
_ChangeTypeText _ChangeTypeText
_FieldText _FieldText
_PriorityText _PriorityText
ControllingArea I_EnterpriseProject ControllingArea
ProfitCenter I_EnterpriseProject ProfitCenter
CompanyCode I_EnterpriseProject CompanyCode
ProjectProfileCode I_EnterpriseProject ProjectProfileCode
ResponsibleCostCenter I_EnterpriseProject ResponsibleCostCenter
Plant I_EnterpriseProject Plant
EnterpriseProjectType I_EnterpriseProject EnterpriseProjectType
FunctionalArea I_EnterpriseProject FunctionalArea
_AuthUser _AuthUser
_AuthSubst _AuthSubst
_AuthRole _AuthRole
_AuthGroup _AuthGroup
ChangeDocumentOldFieldValue ChangeDocPreviousFieldValue Old Value
ChangeDocumentNewFieldValue ChangeDocNewFieldValue New Value
LastChangedByUser I_ChangeDocument CreatedByUser
LastChangeDate I_ChangeDocument CreationDate
LastChangeTime I_ChangeDocument CreationTime
@EndUserText.label: 'Chg Doc for General Info of Ent Proj'

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

@AbapCatalog: {
   sqlViewName: 'IPROJGENINFOCD',
   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_EntProjProjectChgDocuments as select from I_ChangeDocument as cdhdr

      inner join I_EnterpriseProject as EntProject  
          on   cdhdr.ChangeDocObject  = concat ('ENTPROJ', bintohex(EntProject.ProjectUUID) )

      inner join I_ChangeDocumentItem as cdpos
//          on  cdpos.ChangeDocObject                 = concat ('ENTPROJ', bintohex(ProjectUUID) ) // This row leads to a redundancy, because it is concatenated already with cdhdr

          on  cdpos.ChangeDocObject                 = cdhdr.ChangeDocObject
          and cdpos.ChangeDocument                  = cdhdr.ChangeDocument
          and ( cdpos.DatabaseTable                 = '/S4PPM/PSTASK_CD' or cdpos.DatabaseTable ='/S4PPM/BLKFCT_CD' )

// To filter only the CD-Fields that shall be visible in App

      inner join I_EntProjChgDocTableField as fields
          on fields.ChangeDocDatabaseTableField     = cdpos.ChangeDocDatabaseTableField 
          and fields.DatabaseTable                  = cdpos.DatabaseTable

//TODO: what is this needed for?

// Priority  

  association [0..*] to I_PPM_PriorityText            as _PriorityText        on $projection.ChangeDocumentOldFieldValue        = _PriorityText.PriorityCodeName
                                        
 
// Change Type Text (Action in UI)                                   

  association [0..*] to I_EntProjChangeIndicatorText  as _ChangeTypeText      on $projection.ChangeDocItemChangeType            = _ChangeTypeText.ChangeDocItemChangeType
  
// 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
  

  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.ChangeDocument                                              as ChangeDocument,
  key cdpos.DatabaseTable                                               as DatabaseTable,
  key cdpos.ChangeDocTableKey                                           as ChangeDocTableKey,

// Field Name

  key cdpos.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,

      _ChangedBy, 
      _ChangeTypeText,
      _FieldText,
      _PriorityText,
       
// Needed for authorization check in DCL

      EntProject.ControllingArea                                        as ControllingArea, 
      EntProject.ProfitCenter                                           as ProfitCenter,      
      EntProject.CompanyCode                                            as CompanyCode,  
      EntProject.ProjectProfileCode                                     as ProjectProfileCode,
      EntProject.ResponsibleCostCenter                                  as ResponsibleCostCenter,
      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,

// 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.text.association: '_ChangedBy'
      cdhdr.CreatedByUser                                               as LastChangedByUser,     
      
// Separate Date

// LastChangedDate needed for Smart Filter Bar

      cdhdr.CreationDate                                                as LastChangeDate,
      
// Separate Time 

// LastChangeTime needed for sorting

      cdhdr.CreationTime                                                as LastChangeTime,
      
// 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                                          
                                                        
}

where
      cdhdr.ChangeDocObjectClass = '/S4PPM/PROJECT'