I_ProjectMgrOrgDet is a Composite CDS View that provides data about "Retrieve project details for the session user" in SAP S/4HANA. It reads from 4 data sources (I_PersonWorkAgrmtForKeyDate, I_PersonWorkAgreement_1, I_User, I_WorkforcePerson) and exposes 4 fields with key field EngagementProjectUUID.
@AbapCatalog.sqlViewName: 'IPROJMGRORGDET'
@ClientHandling.algorithm: #SESSION_VARIABLE@AbapCatalog.compiler.compareFilter: true@ObjectModel.usageType.serviceQuality : #D@ObjectModel.usageType.sizeCategory : #XL@ObjectModel.usageType.dataClass : #MASTER@AccessControl.authorizationCheck: #NOT_REQUIRED@AccessControl.personalData.blocking: #REQUIRED// to check if this has to be required ornot. Scenario check. In Odata role anyways this would be handled
//@Analytics: { dataCategory: #DIMENSION, dataExtraction.enabled: true }@VDM.viewType: #COMPOSITE@EndUserText.label: 'Retrieve project details for the session user'
defineview I_ProjectMgrOrgDet
asselectdistinctfrom I_EngagementProjectRole as EngagementProjectRole
innerjoin I_PersonWorkAgrmtForKeyDate(P_KeyDate : $session.system_date) as PersonWorkAgrmtForKeyDate on EngagementProjectRole.EmploymentInternalID = PersonWorkAgrmtForKeyDate.PersonWorkAgreement
innerjoin I_PersonWorkAgreement_1 as PersonWorkAgreement on PersonWorkAgreement.PersonWorkAgreement = PersonWorkAgrmtForKeyDate.PersonWorkAgreement
innerjoin I_WorkforcePerson as WorkforcePerson on WorkforcePerson.Person = PersonWorkAgreement.Person
leftouterjoin I_User as User on User.BusinessPartnerUUID = WorkforcePerson.BusinessPartnerUUID
{
//key _PersonWorkAgrmtForKeyDate(P_KeyDate : $session.system_date).
//_Employment._Employee.PersonnelNumber,
key EngagementProjectRole.EngagementProjectUUID,
EngagementProjectRole.EngagementProject,
EngagementProjectRole._EngagementProject.EngagementProjectName,
EngagementProjectRole.EmploymentInternalID as ProjectManager
// _PersonWorkAgrmtForKeyDate(P_KeyDate : $session.system_date).PersonWorkAgreement.
// User.UserID as BusinessUser
}
where ( EngagementProjectRole.EngagementProjectTeamRole = 'P001' or EngagementProjectRole.EngagementProjectTeamRole = 'P003' )
and User.UserID = $session.user