I_ProjectByProjMgr

DDL: I_PROJECTBYPROJMGR SQL: IPPROJMNGR Type: view COMPOSITE

Project by Project Manager

I_ProjectByProjMgr is a Composite CDS View that provides data about "Project by Project Manager" in SAP S/4HANA. It reads from 2 data sources (I_ProjectBasicData, I_ProjectBasicData) and exposes 43 fields with key field Project. It has 2 associations to related views.

Data Sources (2)

SourceAliasJoin Type
I_ProjectBasicData Project from
I_ProjectBasicData Project union_all

Associations (2)

CardinalityTargetAliasCondition
[0..1] I_SingleResponsibleForProj _Responsible _Responsible.ReferencedObjectUUID = ProjectSummary.ProjectSummaryTaskUUID
[1..1] I_ResponsiblePersonForProj _ResPerson _ResPerson.ProjectInternalID = Project.ProjectInternalID

Annotations (14)

NameValueLevelField
AbapCatalog.sqlViewName IPPROJMNGR view
ClientHandling.algorithm #SESSION_VARIABLE view
AbapCatalog.compiler.compareFilter true view
AccessControl.authorizationCheck #CHECK view
EndUserText.label Project by Project Manager view
ObjectModel.representativeKey Project view
ObjectModel.usageType.serviceQuality #D view
ObjectModel.usageType.sizeCategory #L view
ObjectModel.usageType.dataClass #MASTER view
AccessControl.personalData.blocking #NOT_REQUIRED view
VDM.viewType #COMPOSITE view
Metadata.ignorePropagatedAnnotations true view
VDM.lifecycle.contract.type #SAP_INTERNAL_API view
AbapCatalog.preserveKey true view

Fields (43)

KeyFieldSource TableSource FieldDescription
KEY Project I_ProjectBasicData ProjectExternalID
ProjectUUID ProjectSummary ProjectUUID
ProjectDescription I_ProjectBasicData ProjectDescription
ProjectInternalID I_ProjectBasicData ProjectInternalID
ProjectObject ProjectObject
ProjectObjectRootNode ProjectObject
ProjectProfileCode ProjectProfileCode
PlannedStartDate PlannedStartDate
PlannedEndDate PlannedEndDate
ProjectManagerUUID _Responsible BusinessPartnerUUID
BusinessPartnerFullName _Responsible BusinessPartnerFullName
ProjectSummaryTaskUUID ProjectSummary ProjectSummaryTaskUUID
ProjectCategory ProjectSummary ProjectCategory
CompanyCode I_ProjectBasicData CompanyCode
ProfitCenter I_ProjectBasicData ProfitCenter
AvailyCtrlTimeRangeType
BudgetCurrencyRole
AvailabilityControlIsActive I_ProjectBasicData AvailabilityControlIsActive
AvailabilityControlProfile I_ProjectBasicData AvailabilityControlProfile
ControllingArea I_ProjectBasicData ControllingArea
ProjectProcessingStatus ProjectSummary ProjectProcessingStatus
ProjectExternalIDasProject
ProjectUUID ProjectSummary ProjectUUID
ProjectDescription I_ProjectBasicData ProjectDescription
ProjectInternalID I_ProjectBasicData ProjectInternalID
ProjectObject ProjectObject
ProjectObjectRootNode ProjectObject
ProjectProfileCode ProjectProfileCode
PlannedStartDate PlannedStartDate
PlannedEndDate PlannedEndDate
ProjectManagerUUID _Responsible BusinessPartnerUUID
BusinessPartnerFullName _ResPerson ResponsiblePersonName
ProjectSummaryTaskUUID ProjectSummary ProjectSummaryTaskUUID
ProjectCategory ProjectSummary ProjectCategory
CompanyCode I_ProjectBasicData CompanyCode
ProfitCenter I_ProjectBasicData ProfitCenter
AvailyCtrlTimeRangeType
BudgetCurrencyRole
AvailabilityControlIsActive I_ProjectBasicData AvailabilityControlIsActive
AvailabilityControlProfile I_ProjectBasicData AvailabilityControlProfile
ControllingArea I_ProjectBasicData ControllingArea
ProjectProcessingStatus ProjectSummary ProjectProcessingStatus
WBSElementInternalID ProjectSummary WBSElementInternalID
@AbapCatalog.sqlViewName: 'IPPROJMNGR'
@ClientHandling.algorithm: #SESSION_VARIABLE
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Project by Project Manager'
@ObjectModel.representativeKey: 'Project'
@ObjectModel.usageType.serviceQuality: #D
@ObjectModel.usageType.sizeCategory: #L
@ObjectModel.usageType.dataClass: #MASTER
@AccessControl.personalData.blocking: #NOT_REQUIRED
@VDM.viewType: #COMPOSITE
@Metadata.ignorePropagatedAnnotations: true
@VDM.lifecycle.contract.type:  #SAP_INTERNAL_API
@AbapCatalog.preserveKey:true

define view I_ProjectByProjMgr
  as select from    I_ProjectBasicData       as Project
    left outer to one join I_PPM_ProjectSummaryTask as ProjectSummary on ProjectSummary.ProjectInternalID = Project.ProjectInternalID
    association [0..1] to I_SingleResponsibleForProj as _Responsible on _Responsible.ReferencedObjectUUID = ProjectSummary.ProjectSummaryTaskUUID

{
      @ObjectModel.text.element: 'ProjectDescription'
  key Project.ProjectExternalID as Project, //Project.Project as Project,

      ProjectSummary.ProjectUUID,
      @Semantics.text: true
      Project.ProjectDescription,
      Project.ProjectInternalID,
      ProjectObject,
      ProjectObject as ProjectObjectRootNode,
      ProjectProfileCode,
      PlannedStartDate,
      PlannedEndDate,
      _Responsible.BusinessPartnerUUID as ProjectManagerUUID,
      _Responsible.BusinessPartnerFullName as BusinessPartnerFullName,
//      _ResPerson.ResponsiblePersonName,

//      case

//      when _Responsible.BusinessPartnerFullName is null

//      then cast ( _ResPerson.ResponsiblePersonName as ps_verna)

//      else cast ( _Responsible.BusinessPartnerFullName as ps_verna)

//      end                              as BusinessPartnerFullName,



      ProjectSummary.ProjectSummaryTaskUUID,
      ProjectSummary.ProjectCategory,

      Project.CompanyCode,
      Project.ProfitCenter,

      Project._AvailabilityCtrlProfile.AvailyCtrlTimeRangeType,
      Project._AvailabilityCtrlProfile.BudgetCurrencyRole,

      Project.AvailabilityControlIsActive,
      Project.AvailabilityControlProfile,

      Project.ControllingArea,
      ProjectSummary.ProjectProcessingStatus,
      ProjectSummary.WBSElementInternalID

}
where
  Project.ProjectInternalID != '00000000'
  and _Responsible.BusinessPartnerFullName is not null
  and 
  (
          _Responsible.BusinessPartnerUUID        is null
    or(
          _Responsible.BusinessPartnerUUID        is not null
      and _Responsible.IsBusinessPurposeCompleted <> 'X'
    )
  )
  
  union all select from    I_ProjectBasicData       as Project
    left outer to one join I_PPM_ProjectSummaryTask as ProjectSummary on ProjectSummary.ProjectInternalID = Project.ProjectInternalID
    association [0..1] to I_SingleResponsibleForProj as _Responsible on _Responsible.ReferencedObjectUUID = ProjectSummary.ProjectSummaryTaskUUID
    association [1..1] to I_ResponsiblePersonForProj as _ResPerson   on _ResPerson.ProjectInternalID = Project.ProjectInternalID
{
      @ObjectModel.text.element: 'ProjectDescription'
  key Project.ProjectExternalID as Project,
      ProjectSummary.ProjectUUID,
      @Semantics.text: true
      Project.ProjectDescription,
      Project.ProjectInternalID,
      ProjectObject,
      ProjectObject as ProjectObjectRootNode,
      ProjectProfileCode,
      PlannedStartDate,
      PlannedEndDate,
      _Responsible.BusinessPartnerUUID as ProjectManagerUUID,
//      _Responsible.BusinessPartnerFullName as BusinessPartnerFullName,

      _ResPerson.ResponsiblePersonName as BusinessPartnerFullName,
      ProjectSummary.ProjectSummaryTaskUUID,
      ProjectSummary.ProjectCategory,

      Project.CompanyCode,
      Project.ProfitCenter,

      Project._AvailabilityCtrlProfile.AvailyCtrlTimeRangeType,
      Project._AvailabilityCtrlProfile.BudgetCurrencyRole,

      Project.AvailabilityControlIsActive,
      Project.AvailabilityControlProfile,

      Project.ControllingArea,
      ProjectSummary.ProjectProcessingStatus,
      ProjectSummary.WBSElementInternalID

}
where
  Project.ProjectInternalID != '00000000'
  and _Responsible.BusinessPartnerFullName is null
  and 
  (
          _Responsible.BusinessPartnerUUID        is null
    or(
          _Responsible.BusinessPartnerUUID        is not null
      and _Responsible.IsBusinessPurposeCompleted <> 'X'
    )
  )