P_EngmntProjWithStdRoles
P_EngmntProjWithStdRoles is a Composite CDS View in SAP S/4HANA. It reads from 6 data sources and exposes 30 fields with key fields EngagementProjectUUID, EngagementProject, EngagementProjectTeamRole, BusinessPartnerUUID, BusinessPartner.
Data Sources (6)
| Source | Alias | Join Type |
|---|---|---|
| I_EngagementProject | A | from |
| I_EnterpriseProjectRole | B | inner |
| I_EntProjectEntitlement | C | left_outer |
| I_EnterpriseProjectTeamMember | D | left_outer |
| I_BusinessUserBasic | E | left_outer |
| I_BPUsrExternalID | F | inner |
Annotations (12)
| Name | Value | Level | Field |
|---|---|---|---|
| ClientHandling.algorithm | #SESSION_VARIABLE | view | |
| AbapCatalog.sqlViewName | PEPWTHSTDROLES | view | |
| AbapCatalog.compiler.compareFilter | true | view | |
| AbapCatalog.preserveKey | true | view | |
| AccessControl.authorizationCheck | #NOT_REQUIRED | view | |
| ObjectModel.usageType.serviceQuality | #D | view | |
| ObjectModel.usageType.sizeCategory | #XL | view | |
| ObjectModel.usageType.dataClass | #MIXED | view | |
| VDM.private | true | view | |
| VDM.viewType | #COMPOSITE | view | |
| VDM.lifecycle.contract.type | #NONE | view | |
| Metadata.ignorePropagatedAnnotations | true | view |
Fields (30)
| Key | Field | Source Table | Source Field | Description |
|---|---|---|---|---|
| KEY | EngagementProjectUUID | I_EngagementProject | EngagementProjectUUID | |
| KEY | EngagementProject | I_EngagementProject | EngagementProject | |
| KEY | EngagementProjectTeamRole | I_EnterpriseProjectRole | ProjectRoleType | |
| KEY | BusinessPartnerUUID | I_BusinessUserBasic | BusinessPartnerUUID | |
| KEY | BusinessPartner | I_BusinessUserBasic | BusinessPartner | |
| ProjectStartDate | I_EngagementProject | ProjectStartDate | ||
| ProjectEndDate | I_EngagementProject | ProjectEndDate | ||
| Customer | I_EngagementProject | Customer | ||
| EngagementProjectServiceOrg | I_EngagementProject | EngagementProjectServiceOrg | ||
| EngagementProjectType | I_EngagementProject | EngagementProjectType | ||
| EngagementProjectCategory | I_EngagementProject | EngagementProjectCategory | ||
| EngagementProjectStage | I_EngagementProject | EngagementProjectStage | ||
| ProjectVisibility | I_EngagementProject | ProjectVisibility | ||
| ProjectProfileCode | I_EngagementProject | ProjectProfileCode | ||
| CompanyCode | I_EngagementProject | CompanyCode | ||
| ControllingArea | I_EngagementProject | ControllingArea | ||
| CostCenter | I_EngagementProject | CostCenter | ||
| ProfitCenter | I_EngagementProject | ProfitCenter | ||
| LastChangeDateTime | I_EngagementProject | LastChangeDateTime | ||
| EngagementProjectName | I_EngagementProject | EngagementProjectName | ||
| UserIDendasProjectManager | ||||
| PersonFullNameendasProjectManagerName | ||||
| UserIDendasProjectAccountant | ||||
| PersonFullNameendasProjectAccountantName | ||||
| UserIDendasProjectController | ||||
| PersonFullNameendasProjectControllerName | ||||
| UserIDendasProjectpartner | ||||
| PersonFullNameendasProjectpartnerName | ||||
| userthenXelseendasIsMyProjectRole | ||||
| CurrentDate |
@ClientHandling.algorithm: #SESSION_VARIABLE
@AbapCatalog: {
sqlViewName: 'PEPWTHSTDROLES',
compiler.compareFilter: true,
preserveKey: true
}
@AccessControl: {
authorizationCheck: #NOT_REQUIRED
}
@ObjectModel: {
usageType.serviceQuality: #D,
usageType.sizeCategory: #XL,
usageType.dataClass: #MIXED
}
@VDM: {
private: true,
viewType: #COMPOSITE,
lifecycle.contract.type: #NONE
}
@Metadata.ignorePropagatedAnnotations: true
define view P_EngmntProjWithStdRoles
as select from I_EngagementProject as A
inner join I_EnterpriseProjectRole as B on A.EngagementProjectUUID = B.ProjectUUID
left outer join I_EntProjectEntitlement as C on B.ProjectRoleUUID = C.ProjectRoleUUID
left outer join I_EnterpriseProjectTeamMember as D on C.TeamMemberUUID = D.TeamMemberUUID
left outer join I_BusinessUserBasic as E on E.BusinessPartnerUUID = D.BusinessPartnerUUID
inner join I_BPUsrExternalID as F on E.BusinessPartner = F.BusinessPartner
{
key A.EngagementProjectUUID,
key A.EngagementProject,
key B.ProjectRoleType as EngagementProjectTeamRole,
key E.BusinessPartnerUUID,
key E.BusinessPartner,
A.ProjectStartDate,
A.ProjectEndDate,
A.Customer,
A.EngagementProjectServiceOrg,
A.EngagementProjectType,
A.EngagementProjectCategory,
A.EngagementProjectStage,
A.ProjectVisibility,
A.ProjectProfileCode,
A.CompanyCode,
A.ControllingArea,
A.CostCenter,
A.ProfitCenter,
A.LastChangeDateTime,
A.EngagementProjectName,
case when B.ProjectRoleType = 'YP_RL_0001'
then F.BPIdentificationNumber
else '' end as ProjectManagerExternalID,
case when B.ProjectRoleType = 'YP_RL_0001'
then E.UserID
end as ProjectManager,
case when B.ProjectRoleType = 'YP_RL_0001'
then E.PersonFullName
end as ProjectManagerName,
case when B.ProjectRoleType = '0SAP_RL_006'
then F.BPIdentificationNumber
end as ProjectAccountantExternalID,
case when B.ProjectRoleType = '0SAP_RL_006'
then E.UserID
end as ProjectAccountant,
case when B.ProjectRoleType = '0SAP_RL_006'
then E.PersonFullName
end as ProjectAccountantName,
case when B.ProjectRoleType = '0SAP_RL_005'
then F.BPIdentificationNumber
end as ProjectControllerExternalID,
case when B.ProjectRoleType = '0SAP_RL_005'
then E.UserID
end as ProjectController,
case when B.ProjectRoleType = '0SAP_RL_005'
then E.PersonFullName
end as ProjectControllerName,
case when B.ProjectRoleType = '0SAP_RL_007'
then F.BPIdentificationNumber
end as ProjectpartnerExternalID,
case when B.ProjectRoleType = '0SAP_RL_007'
then E.UserID
end as Projectpartner,
case when B.ProjectRoleType = '0SAP_RL_007'
then E.PersonFullName
end as ProjectpartnerName,
case when E.UserID = $session.user
then 'X'
else ''
end as IsMyProjectRole,
$session.system_date as CurrentDate
}
where
F.BPIdentificationType = 'HCM001' // HCM001 - Employee ID
or F.BPIdentificationType = 'HCM030' // HCM030 - Service Agent
or F.BPIdentificationType = 'HCM031' // HCM031 - Freelancer
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_BPUSREXTERNALID",
"I_BUSINESSUSERBASIC",
"I_ENGAGEMENTPROJECT",
"I_ENTERPRISEPROJECTROLE",
"I_ENTERPRISEPROJECTTEAMMEMBER",
"I_ENTPROJECTENTITLEMENT"
],
"ASSOCIATED":
[],
"BASE":
[],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/
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