R_EntProjectElementForUpdate

DDL: R_ENTPROJECTELEMENTFORUPDATE SQL: RPROJELEM4UPD Type: view COMPOSITE Package: VDM_PPM_OBJECTS_TP_TASK

Lists all elements a user is permitted and able to update

R_EntProjectElementForUpdate is a Composite CDS View that provides data about "Lists all elements a user is permitted and able to update" in SAP S/4HANA. It reads from 1 data source (R_EnterpriseProjectElement) and exposes 16 fields with key field TaskUUID. It has 4 associations to related views. Part of development package VDM_PPM_OBJECTS_TP_TASK.

Data Sources (1)

SourceAliasJoin Type
R_EnterpriseProjectElement Workpackage from

Associations (4)

CardinalityTargetAliasCondition
[0..*] I_PPM_AuthznByUsrH _AuthUser _AuthUser.ReferencedObjectUUID = $projection.TaskUUID and _AuthUser.UserID = $session.user and ( _AuthUser.Activity = 'Admin' or _AuthUser.Activity = 'Write' )
[0..*] I_PPM_AuthznBySubstitH _AuthSubst _AuthSubst.ReferencedObjectUUID = $projection.TaskUUID and _AuthSubst.UserID = $session.user and ( _AuthSubst.Activity = 'Admin' or _AuthSubst.Activity = 'Write' )
[0..*] I_PPM_AuthznByUserRoleH _AuthRole _AuthRole.ReferencedObjectUUID = $projection.TaskUUID and _AuthRole.UserID = $session.user and ( _AuthRole.Activity = 'Admin' or _AuthRole.Activity = 'Write' )
[0..*] I_PPM_AuthznByUsrGrpH _AuthGroup _AuthGroup.ReferencedObjectUUID = $projection.TaskUUID and _AuthGroup.UserID = $session.user and ( _AuthGroup.Activity = 'Admin' or _AuthGroup.Activity = 'Write' )

Annotations (14)

NameValueLevelField
VDM.viewType #COMPOSITE view
AbapCatalog.sqlViewName RPROJELEM4UPD view
AbapCatalog.compiler.compareFilter true view
AbapCatalog.preserveKey true view
AccessControl.authorizationCheck #MANDATORY view
AccessControl.personalData.blocking #BLOCKED_DATA_EXCLUDED view
Metadata.ignorePropagatedAnnotations true view
ClientHandling.algorithm #SESSION_VARIABLE view
ObjectModel.representativeKey TaskUUID view
ObjectModel.usageType.serviceQuality #B view
ObjectModel.usageType.dataClass #MIXED view
ObjectModel.usageType.sizeCategory #L view
EndUserText.label Lists all elements a user is permitted and able to update view
VDM.lifecycle.contract.type #SAP_INTERNAL_API view

Fields (16)

KeyFieldSource TableSource FieldDescription
KEY TaskUUID R_EnterpriseProjectElement ProjectElementUUID
ProjectElement R_EnterpriseProjectElement ProjectElement
WBSElementInternalID R_EnterpriseProjectElement WBSElementInternalID
ProjectUUID R_EnterpriseProjectElement ProjectUUID
ControllingArea ControllingArea
ProfitCenter ProfitCenter
CompanyCode CompanyCode
ResponsibleCostCenter ResponsibleCostCenter
Plant Plant
FunctionalArea FunctionalArea
IsEditable
_AuthUser _AuthUser
_AuthSubst _AuthSubst
_AuthRole _AuthRole
_AuthGroup _AuthGroup
_EnterpriseProject _EnterpriseProject
@VDM.viewType: #COMPOSITE 

@AbapCatalog.sqlViewName: 'RPROJELEM4UPD'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey:true

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

@Metadata.ignorePropagatedAnnotations: true
@ClientHandling.algorithm: #SESSION_VARIABLE

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

@EndUserText.label: 'Lists all elements a user is permitted and able to update'
@VDM.lifecycle.contract.type:  #SAP_INTERNAL_API 
define view R_EntProjectElementForUpdate as select from R_EnterpriseProjectElement as Workpackage
  // associations to authorization views need to be overwritten, as we need to check for write here

    association [0..*] to I_PPM_AuthznByUsrH        as _AuthUser
            on      _AuthUser.ReferencedObjectUUID   = $projection.TaskUUID
             and    _AuthUser.UserID                 = $session.user
             and (  _AuthUser.Activity = 'Admin'     or _AuthUser.Activity = 'Write' )
    association [0..*] to I_PPM_AuthznBySubstitH    as _AuthSubst 
            on      _AuthSubst.ReferencedObjectUUID  = $projection.TaskUUID
             and    _AuthSubst.UserID                = $session.user
             and (  _AuthSubst.Activity = 'Admin'    or _AuthSubst.Activity = 'Write' )
    association [0..*] to I_PPM_AuthznByUserRoleH   as _AuthRole
            on      _AuthRole.ReferencedObjectUUID   = $projection.TaskUUID
             and    _AuthRole.UserID                 = $session.user
             and (  _AuthRole.Activity = 'Admin'     or _AuthRole.Activity = 'Write' )
    association [0..*] to I_PPM_AuthznByUsrGrpH     as _AuthGroup
            on      _AuthGroup.ReferencedObjectUUID  = $projection.TaskUUID
             and    _AuthGroup.UserID                = $session.user
             and (  _AuthGroup.Activity = 'Admin'    or _AuthGroup.Activity = 'Write' )
{
  key Workpackage.ProjectElementUUID                 as TaskUUID,
      Workpackage.ProjectElement                     as ProjectElement,
      Workpackage.WBSElementInternalID,
      Workpackage.ProjectUUID                        as ProjectUUID,
      
      ControllingArea,
      ProfitCenter, 
      CompanyCode, 
      ResponsibleCostCenter, 
      Plant,
      FunctionalArea,
      
      cast( 'X' as boolean preserving type ) as IsEditable,         
      
      _AuthUser,
      _AuthSubst,
      _AuthRole,
      _AuthGroup,
      _EnterpriseProject
  
}