I_EngagementProjectRole
Roles for an Engagement Project
I_EngagementProjectRole is a Composite CDS View that provides data about "Roles for an Engagement Project" in SAP S/4HANA. It reads from 5 data sources (I_EngagementProject, I_EngagementProjectMember, I_EngagementProjectTeam, I_EngagementProjectTeamRole, I_EngmtProjTeamMember) and exposes 17 fields with key fields EngagementProject, EngagementProjectTeamRole. It has 3 associations to related views.
Data Sources (5)
| Source | Alias | Join Type |
|---|---|---|
| I_EngagementProject | EngagementProject | from |
| I_EngagementProjectMember | EngagementProjectMember | left_outer |
| I_EngagementProjectTeam | EngagementProjectTeam | inner |
| I_EngagementProjectTeamRole | EngagementProjectTeamRole | left_outer |
| I_EngmtProjTeamMember | EngmtProjTeamMember | left_outer |
Associations (3)
| Cardinality | Target | Alias | Condition |
|---|---|---|---|
| [0..*] | I_PersnWrkAgreementDet | _PersonWorkAgreement | $projection.EmploymentInternalID = _PersonWorkAgreement.PersonWorkAgreement |
| [1..1] | I_EngagementProject | _EngagementProject | $projection.EngagementProject = _EngagementProject.EngagementProject |
| [0..*] | I_EngmtProjectRoleText | _Text | $projection.EngagementProjectTeamRole = _Text.EngagementProjectRole |
Annotations (11)
| Name | Value | Level | Field |
|---|---|---|---|
| ClientHandling.algorithm | #SESSION_VARIABLE | view | |
| AbapCatalog.sqlViewName | IENGMTPROJROLE | view | |
| AbapCatalog.preserveKey | true | view | |
| AbapCatalog.compiler.compareFilter | true | view | |
| AccessControl.authorizationCheck | #CHECK | view | |
| EndUserText.label | Roles for an Engagement Project | view | |
| VDM.viewType | #COMPOSITE | view | |
| ObjectModel.usageType.serviceQuality | #D | view | |
| ObjectModel.usageType.sizeCategory | #L | view | |
| ObjectModel.usageType.dataClass | #TRANSACTIONAL | view | |
| AccessControl.personalData.blocking | #NOT_REQUIRED | view |
Fields (17)
| Key | Field | Source Table | Source Field | Description |
|---|---|---|---|---|
| KEY | EngagementProject | I_EngagementProject | EngagementProject | |
| KEY | EngagementProjectTeamRole | I_EngagementProjectTeamRole | EngagementProjectTeamRole | |
| ProjectStartDate | I_EngagementProject | ProjectStartDate | ||
| EngagementProjectUUID | ||||
| EngagementProjectTeamUUID | ||||
| EngagementProjectTeamRoleUUID | ||||
| EngmtProjTeamMemberUUID | ||||
| EngagementProjectMemberUUID | ||||
| EmploymentInternalID | I_EngagementProjectMember | EmploymentInternalID | ||
| BusinessPartnerType | I_EngagementProjectMember | BusinessPartnerType | ||
| BusinessPartnerMemberType | I_EngagementProjectMember | BusinessPartnerType | ||
| BusinessUser | ||||
| PersonFullName | ||||
| PersonExternalID | ||||
| _PersonWorkAgreement | _PersonWorkAgreement | |||
| _EngagementProject | _EngagementProject | |||
| _Text | _Text |
@ClientHandling.algorithm: #SESSION_VARIABLE
@AbapCatalog.sqlViewName: 'IENGMTPROJROLE'
@AbapCatalog.preserveKey:true
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Roles for an Engagement Project'
@VDM.viewType: #COMPOSITE
@ObjectModel.usageType.serviceQuality: #D
@ObjectModel.usageType.sizeCategory: #L
@ObjectModel.usageType.dataClass: #TRANSACTIONAL
@AccessControl.personalData.blocking: #NOT_REQUIRED
define view I_EngagementProjectRole
as select from I_EngagementProject as EngagementProject
inner join I_EngagementProjectTeam as EngagementProjectTeam on EngagementProject.EngagementProjectUUID = EngagementProjectTeam.EngagementProjectUUID
and EngagementProject.EngagementProject = EngagementProjectTeam.EngagementProjectTeamName
left outer join I_EngagementProjectTeamRole as EngagementProjectTeamRole on EngagementProjectTeam.EngagementProjectTeamUUID = EngagementProjectTeamRole.EngagementProjectTeamUUID
left outer join I_EngmtProjTeamMember as EngmtProjTeamMember on EngagementProjectTeamRole.EngagementProjectTeamRoleUUID = EngmtProjTeamMember.EngagementProjectTeamRoleUUID
left outer join I_EngagementProjectMember as EngagementProjectMember on EngmtProjTeamMember.EngagementProjectMemberUUID = EngagementProjectMember.EngagementProjectMemberUUID
association [0..*] to I_PersnWrkAgreementDet as _PersonWorkAgreement on $projection.EmploymentInternalID = _PersonWorkAgreement.PersonWorkAgreement
//and $projection.ProjectStartDate >= _Employment.StartDate
association [1..1] to I_EngagementProject as _EngagementProject on $projection.EngagementProject = _EngagementProject.EngagementProject
association [0..*] to I_EngmtProjectRoleText as _Text on $projection.EngagementProjectTeamRole = _Text.EngagementProjectRole
{
//--[ GENERATED:012:GlBfhyJl7jY4oBIOE}WCZW
@Consumption.valueHelpDefinition: [
{ entity: { name: 'I_EngagementProjectStdVH',
element: 'EngagementProject' }
}]
// ]--GENERATED
@ObjectModel.foreignKey.association: '_EngagementProject'
key EngagementProject.EngagementProject as EngagementProject,
key EngagementProjectTeamRole.EngagementProjectTeamRole as EngagementProjectTeamRole,
EngagementProject.ProjectStartDate as ProjectStartDate,
cast( EngagementProjectTeam.EngagementProjectUUID as /cpd/eng_db_key preserving type ) as EngagementProjectUUID,
cast(EngagementProjectTeam.EngagementProjectTeamUUID as /cpd/team_db_key preserving type ) as EngagementProjectTeamUUID,
cast(EngagementProjectTeamRole.EngagementProjectTeamRoleUUID as /cpd/eng_team_role_db_key preserving type ) as EngagementProjectTeamRoleUUID,
cast(EngmtProjTeamMember.EngmtProjTeamMemberUUID as /cpd/eng_team_member_db_key preserving type ) as EngmtProjTeamMemberUUID,
cast(EngmtProjTeamMember.EngagementProjectMemberUUID as /cpd/eng_proj_member_db_key preserving type ) as EngagementProjectMemberUUID,
EngagementProjectMember.EmploymentInternalID as EmploymentInternalID,
@VDM.lifecycle.status: #DEPRECATED
@VDM.lifecycle.successor: 'BusinessPartnerMemberType'
EngagementProjectMember.BusinessPartnerType as BusinessPartnerType,
EngagementProjectMember.BusinessPartnerType as BusinessPartnerMemberType,
//associations
// For Authorization
// case when EngagementProjectMember.EmploymentInternalID is not null and _PersonWorkAgreement._WorkforcePerson.UserID is null
// then '*****'
// else
_PersonWorkAgreement._WorkforcePerson.UserID as BusinessUser,
_PersonWorkAgreement._WorkforcePerson.PersonFullName,
_PersonWorkAgreement._WorkforcePerson.PersonExternalID,
// case when EngagementProjectMember.EmploymentInternalID is not null and _PersonWorkAgreement._WorkforcePerson.PersonFullName is null
// then '*****'
// else
// _PersonWorkAgreement._WorkforcePerson.PersonFullName
// end as EmployeeFullName,
//_PersonWorkAgreement._WorkforcePerson.BusinessPartnerUUID as BusinessPartnerUUID,
_PersonWorkAgreement,
_EngagementProject,
_Text
}
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_ENGAGEMENTPROJECT",
"I_ENGAGEMENTPROJECTMEMBER",
"I_ENGAGEMENTPROJECTTEAM",
"I_ENGAGEMENTPROJECTTEAMROLE",
"I_ENGMTPROJTEAMMEMBER",
"I_PERSNWRKAGREEMENTDET",
"I_WORKFORCEPERSONDET"
],
"ASSOCIATED":
[
"I_ENGAGEMENTPROJECT",
"I_ENGMTPROJECTROLETEXT",
"I_PERSNWRKAGREEMENTDET"
],
"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