I_InternalProject

DDL: I_INTERNALPROJECT Type: view COMPOSITE Package: CPD_CDS

Internal Project

I_InternalProject is a Composite CDS View (Dimension) that provides data about "Internal Project" in SAP S/4HANA. It reads from 1 data source (I_EngagementProject) and exposes 29 fields with key field InternalProject. It has 11 associations to related views. Part of development package CPD_CDS.

Data Sources (1)

SourceAliasJoin Type
I_EngagementProject EngagementProject from

Associations (11)

CardinalityTargetAliasCondition
[1..1] I_EngagementProjFinancialPlan _EngagementProjFinancialPlan $projection.InternalProjectUUID = _EngagementProjFinancialPlan.EngagementProjectUUID
[0..*] I_PersnWrkAgreementDet _PersonWorkAgreementDet $projection.ProjectManager = _PersonWorkAgreementDet.PersonWorkAgreement
[0..*] I_CostCenter _CostCenter $projection.CostCenter = _CostCenter.CostCenter and $projection.ControllingArea = _CostCenter.ControllingArea
[0..*] I_ProfitCenter _ProfitCenter $projection.ProfitCenter = _ProfitCenter.ProfitCenter and $projection.ControllingArea = _ProfitCenter.ControllingArea
[0..1] I_EngagementProjectStage _EngagementProjectStage $projection.EngagementProjectStage = _EngagementProjectStage.EngagementProjectStage
[0..*] I_EngagementProjectItem _EngagementProjectItem $projection.InternalProjectUUID = _EngagementProjectItem.EngagementProjectUUID
[0..1] I_EngagementProjectSrvcOrg _EngagementProjectServiceOrg $projection.EngagementProjectServiceOrg = _EngagementProjectServiceOrg.EngagementProjectServiceOrg
[0..1] E_Internalproject _Extension $projection.InternalProjectUUID = _Extension.InternalProjectUUID
[0..*] I_PersonWorkAgreement _PersonWorkAgreement $projection.ProjectManager = _PersonWorkAgreement.PersonWorkAgreement
[0..1] I_PersonWorkAgreement_1 _PersonWorkAgreement_1 $projection.ProjectManager = _PersonWorkAgreement_1.PersonWorkAgreement
[1..1] I_EngmntProjWithUserInvlmnt _UserInvlmnt $projection.InternalProjectUUID = _UserInvlmnt.ProjectUUID

Annotations (18)

NameValueLevelField
AbapCatalog.sqlViewName IINTERNALPROJ view
AbapCatalog.compiler.compareFilter true view
AccessControl.authorizationCheck #CHECK view
AccessControl.personalData.blocking #REQUIRED view
Analytics.dataCategory #DIMENSION view
Analytics.dataExtraction.enabled true view
ClientHandling.algorithm #SESSION_VARIABLE view
EndUserText.label Internal Project view
ObjectModel.representativeKey InternalProject view
ObjectModel.sapObjectNodeType.name CommercialProject view
ObjectModel.usageType.serviceQuality #C view
ObjectModel.usageType.sizeCategory #M view
ObjectModel.usageType.dataClass #MIXED view
ObjectModel.modelingPattern #ANALYTICAL_DIMENSION view
Metadata.allowExtensions true view
Metadata.ignorePropagatedAnnotations true view
VDM.lifecycle.contract.type #PUBLIC_LOCAL_API view
VDM.viewType #COMPOSITE view

Fields (29)

KeyFieldSource TableSource FieldDescription
KEY InternalProject I_EngagementProject EngagementProject
InternalProjectUUID
InternalProjectName I_EngagementProject EngagementProjectName
EngagementProjectType I_EngagementProject EngagementProjectType
EngagementProjectServiceOrg I_EngagementProject EngagementProjectServiceOrg
EngagementProjectStage I_EngagementProject EngagementProjectStage
EngagementProjectCategory I_EngagementProject EngagementProjectCategory
ProjectStartDate I_EngagementProject ProjectStartDate
ProjectEndDate I_EngagementProject ProjectEndDate
ProjectVisibility I_EngagementProject ProjectVisibility
ProjectManager I_EngagementProject ProjectManager
ProjectManagerWorkAgreement I_EngagementProject ProjectManagerWorkAgreement
LastChangeDateTime I_EngagementProject LastChangeDateTime
LastChangedByUser I_EngagementProject LastChangedByUser
ProfitCenter I_EngagementProject ProfitCenter
CostCenter I_EngagementProject CostCenter
ControllingArea I_EngagementProject ControllingArea
ProjectProfileCode I_EngagementProject ProjectProfileCode
CompanyCode I_EngagementProject CompanyCode
_PersonWorkAgreementDet _PersonWorkAgreementDet
_PersonWorkAgreement _PersonWorkAgreement
_PersonWorkAgreement_1 _PersonWorkAgreement_1
_CostCenter _CostCenter
_EngagementProjFinancialPlan _EngagementProjFinancialPlan
_EngagementProjectStage _EngagementProjectStage
_EngagementProjectServiceOrg _EngagementProjectServiceOrg
_EngagementProjectItem _EngagementProjectItem
_ProfitCenter _ProfitCenter
_UserInvlmnt _UserInvlmnt
@AbapCatalog: {
  sqlViewName: 'IINTERNALPROJ',
//  preserveKey: true,

  compiler.compareFilter: true
}
@AccessControl: {
  authorizationCheck: #CHECK,
  personalData: {
    blockingIndicator: [ '_PersonWorkAgreementDet._BusinessPartner.IsBusinessPurposeCompleted' ],
    blocking: #REQUIRED
  }
}
@Analytics: {
  dataCategory: #DIMENSION,
  dataExtraction.enabled: true
}
@ClientHandling.algorithm: #SESSION_VARIABLE
@EndUserText.label: 'Internal Project'
@ObjectModel: {
  representativeKey: 'InternalProject',
  sapObjectNodeType.name: 'CommercialProject',    
  usageType: {
    serviceQuality: #C,
    sizeCategory: #M,
    dataClass: #MIXED
  },
  modelingPattern: #ANALYTICAL_DIMENSION, 
  supportedCapabilities: [#ANALYTICAL_DIMENSION,
                          #CDS_MODELING_ASSOCIATION_TARGET,
                          #CDS_MODELING_DATA_SOURCE,
                          #EXTRACTION_DATA_SOURCE,
                          #SQL_DATA_SOURCE]
}
@Metadata: {
  allowExtensions: true,
  ignorePropagatedAnnotations: true
}
@VDM: {
//  private: false,

  lifecycle.contract.type: #PUBLIC_LOCAL_API,
  viewType: #COMPOSITE
}
define view I_InternalProject
  as select from I_EngagementProject as EngagementProject


  association [1..1] to I_EngagementProjFinancialPlan as _EngagementProjFinancialPlan on  $projection.InternalProjectUUID = _EngagementProjFinancialPlan.EngagementProjectUUID
  association [0..*] to I_PersnWrkAgreementDet        as _PersonWorkAgreementDet      on  $projection.ProjectManager = _PersonWorkAgreementDet.PersonWorkAgreement
  //and $projection.ProjectStartDate >= _Employment.StartDate

  //and $projection.ProjectEndDate   <= _Employment.EndDate

  association [0..*] to I_CostCenter                  as _CostCenter                  on  $projection.CostCenter      = _CostCenter.CostCenter
                                                                                      and $projection.ControllingArea = _CostCenter.ControllingArea

  association [0..*] to I_ProfitCenter                as _ProfitCenter                on  $projection.ProfitCenter    = _ProfitCenter.ProfitCenter
                                                                                      and $projection.ControllingArea = _ProfitCenter.ControllingArea
  association [0..1] to I_EngagementProjectStage      as _EngagementProjectStage      on  $projection.EngagementProjectStage = _EngagementProjectStage.EngagementProjectStage
  association [0..*] to I_EngagementProjectItem       as _EngagementProjectItem       on  $projection.InternalProjectUUID = _EngagementProjectItem.EngagementProjectUUID
  association [0..1] to I_EngagementProjectSrvcOrg    as _EngagementProjectServiceOrg on  $projection.EngagementProjectServiceOrg = _EngagementProjectServiceOrg.EngagementProjectServiceOrg
  association [0..1] to E_Internalproject             as _Extension                   on  $projection.InternalProjectUUID = _Extension.InternalProjectUUID
  // Association to I_PersonWorkAgreement ( Released CDS View by HCM. Used for EOP Authorization Check )


  association [0..*] to I_PersonWorkAgreement         as _PersonWorkAgreement         on  $projection.ProjectManager = _PersonWorkAgreement.PersonWorkAgreement
  association [0..1] to I_PersonWorkAgreement_1       as _PersonWorkAgreement_1       on  $projection.ProjectManager = _PersonWorkAgreement_1.PersonWorkAgreement
  
  association [1..1] to I_EngmntProjWithUserInvlmnt   as _UserInvlmnt                 on $projection.InternalProjectUUID = _UserInvlmnt.ProjectUUID
{
  key       EngagementProject.EngagementProject                                                    as             InternalProject,
            cast( EngagementProject.EngagementProjectUUID  as /cpd/eng_db_key preserving type )    as             InternalProjectUUID,
            EngagementProject.EngagementProjectName                                                as             InternalProjectName,
            EngagementProject.EngagementProjectType                                                as             EngagementProjectType,
            //--[ GENERATED:012:GlBfhyJl7jY4oCtwOMwjv0

            @Consumption.valueHelpDefinition: [
              { entity:  { name:    'I_EngmntProjSrvcOrgStdVH',
                           element: 'EngagementProjectServiceOrg' }
              }]
            // ]--GENERATED

            EngagementProject.EngagementProjectServiceOrg                                          as             EngagementProjectServiceOrg,
            EngagementProject.EngagementProjectStage                                               as             EngagementProjectStage,
            EngagementProject.EngagementProjectCategory                                            as             EngagementProjectCategory,
            EngagementProject.ProjectStartDate                                                     as             ProjectStartDate,
            EngagementProject.ProjectEndDate                                                       as             ProjectEndDate,
            EngagementProject.ProjectVisibility                                                    as             ProjectVisibility,
            
            @VDM.lifecycle.status: #DEPRECATED
            @VDM.lifecycle.successor: 'ProjectManagerWorkAgreement'
            EngagementProject.ProjectManager                                                       as             ProjectManager,
            EngagementProject.ProjectManagerWorkAgreement                                          as             ProjectManagerWorkAgreement,
            @Semantics.dateTime:true
            @Semantics.systemDateTime.lastChangedAt:true
            EngagementProject.LastChangeDateTime                                                   as             LastChangeDateTime,
            EngagementProject.LastChangedByUser                                                    as             LastChangedByUser,
            //--[ GENERATED:012:GlBfhyJl7jY4oCtwOMwjv0

            @Consumption.valueHelpDefinition: [
              { entity:  { name:    'I_ProfitCenterStdVH',
                           element: 'ProfitCenter' },
                additionalBinding: [{ localElement: 'ControllingArea',
                                      element: 'ControllingArea' }]
              }]
            // ]--GENERATED

            EngagementProject.ProfitCenter                                                         as             ProfitCenter,
            //--[ GENERATED:012:GlBfhyJl7jY4oCtwOMwjv0

            @Consumption.valueHelpDefinition: [
              { entity:  { name:    'I_CostCenterStdVH',
                           element: 'CostCenter' },
                additionalBinding: [{ localElement: 'ControllingArea',
                                      element: 'ControllingArea' }]
              }]
            // ]--GENERATED

            EngagementProject.CostCenter                                                           as             CostCenter,
            EngagementProject.ControllingArea                                                      as             ControllingArea,
            
            @Consumption.hidden: true
            EngagementProject.ProjectProfileCode,
            
            @Consumption.hidden: true
            EngagementProject.CompanyCode, 
//            @Consumption.hidden: true

//            @Semantics.booleanIndicator: true

//            EngagementProject.IsMyProject,

            
            /* Associations */
            _PersonWorkAgreementDet,
            @API.element: {
              successor: '_PersonWorkAgreement_1',
              releaseState: #DEPRECATED
            }
            @VDM.lifecycle: {
              successor: '_PersonWorkAgreement_1',
              status: #DEPRECATED
            }
            _PersonWorkAgreement,
            _PersonWorkAgreement_1,
            @ObjectModel.association.boundFields.dataMatchesSourceAndTargetTypes: true //CE2111 - Fix Association join condition in analytical model

            _CostCenter,
            _EngagementProjFinancialPlan,
            _EngagementProjectStage,
            _EngagementProjectServiceOrg,
            _EngagementProjectItem,
            _ProfitCenter,
            _UserInvlmnt
              
}
where
  EngagementProject.EngagementProjectCategory = 'I'