I_ProjectByProjMgr
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 51 fields with key field Project. It has 2 associations to related views. Part of development package ODATA_PS_COS_PROJFIN_MNTR.
Data Sources (2)
| Source | Alias | Join Type |
|---|---|---|
| I_ProjectBasicData | Project | from |
| I_ProjectBasicData | Project | union_all |
Associations (2)
| Cardinality | Target | Alias | Condition |
|---|---|---|---|
| [0..1] | I_SingleResponsibleForProj | _Responsible | _Responsible.ReferencedObjectUUID = ProjectSummary.ProjectSummaryTaskUUID |
| [1..1] | I_ResponsiblePersonForProj | _ResPerson | _ResPerson.ProjectInternalID = Project.ProjectInternalID |
Annotations (13)
| Name | Value | Level | Field |
|---|---|---|---|
| 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 |
Fields (51)
| Key | Field | Source Table | Source Field | Description |
|---|---|---|---|---|
| KEY | Project | I_ProjectBasicData | ProjectExternalID | |
| ProjectUUID | ProjectSummary | ProjectUUID | ||
| ProjectDescription | I_ProjectBasicData | ProjectDescription | ||
| ProjectInternalID | I_ProjectBasicData | ProjectInternalID | ||
| ProjectObject | I_ProjectBasicData | ProjectObject | ||
| ProjectObjectRootNode | I_ProjectBasicData | ProjectObject | ||
| ProjectProfileCode | I_ProjectBasicData | ProjectProfileCode | ||
| PlannedStartDate | I_ProjectBasicData | PlannedStartDate | ||
| PlannedEndDate | I_ProjectBasicData | 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 | ProcessingStatus | ||
| WBSElementInternalID | ProjectSummary | WBSElementInternalID | ||
| ResponsibleCostCenter | ||||
| Plant | I_ProjectBasicData | Plant | ||
| ProjectType | ||||
| ProjectExternalIDasProject | ||||
| ProjectUUID | ProjectSummary | ProjectUUID | ||
| ProjectDescription | I_ProjectBasicData | ProjectDescription | ||
| ProjectInternalID | I_ProjectBasicData | ProjectInternalID | ||
| ProjectObject | I_ProjectBasicData | ProjectObject | ||
| ProjectObjectRootNode | I_ProjectBasicData | ProjectObject | ||
| ProjectProfileCode | I_ProjectBasicData | ProjectProfileCode | ||
| PlannedStartDate | I_ProjectBasicData | PlannedStartDate | ||
| PlannedEndDate | I_ProjectBasicData | 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 | ProcessingStatus | ||
| WBSElementInternalID | ProjectSummary | WBSElementInternalID | ||
| ResponsibleCostCenter | ||||
| Plant | I_ProjectBasicData | Plant | ||
| ProjectType | ||||
| FunctionalArea | I_ProjectBasicData | FunctionalArea |
@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
define view I_ProjectByProjMgr
as select from I_ProjectBasicData as Project
left outer to one join R_EnterpriseProject 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,
Project.ProjectObject,
Project.ProjectObject as ProjectObjectRootNode,
Project.ProjectProfileCode,
Project.PlannedStartDate,
Project.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.ProcessingStatus as ProjectProcessingStatus,
ProjectSummary.WBSElementInternalID,
//CE2402 : //Required Fields for AO /s4ppm/pr1(C_ProjectVH) :- start
Project._RootWBSElement.ResponsibleCostCenter as ResponsibleCostCenter,
Project.Plant,
Project._RootWBSElement.ProjectType as ProjectType,
Project.FunctionalArea
//CE2402 : //Required Fields for AO /s4ppm/pr1 :- end
}
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 R_EnterpriseProject 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,
Project.ProjectObject,
Project.ProjectObject as ProjectObjectRootNode,
Project.ProjectProfileCode,
Project.PlannedStartDate,
Project.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.ProcessingStatus as ProjectProcessingStatus,
ProjectSummary.WBSElementInternalID,
//CE2402 : //Required Fields for AO /s4ppm/pr1(C_ProjectVH) :- start
Project._RootWBSElement.ResponsibleCostCenter as ResponsibleCostCenter,
Project.Plant,
Project._RootWBSElement.ProjectType as ProjectType,
Project.FunctionalArea
//CE2402 : //Required Fields for AO /s4ppm/pr1 :- end
}
where
Project.ProjectInternalID != '00000000'
and _Responsible.BusinessPartnerFullName is null
and(
_Responsible.BusinessPartnerUUID is null
or(
_Responsible.BusinessPartnerUUID is not null
and _Responsible.IsBusinessPurposeCompleted <> 'X'
)
)
Learn More
- What Is a CDS View in SAP S/4HANA?
- Types of CDS Views: Basic, Composite, Consumption, and Transactional
- SAP Tables vs CDS Views — Key Differences
- Understanding Data Lineage in SAP S/4HANA
- VDM (Virtual Data Model) in SAP S/4HANA Explained
- CDS View Annotations — A Complete Guide
- CDS View Field Mapping and Associations
- Understanding the SAP S/4HANA Data Model
- CDS View Extensions and Custom Fields in SAP S/4HANA
- Released APIs and Stability Contracts in SAP S/4HANA