@VDM.private: true@VDM.viewType: #COMPOSITE@AbapCatalog.sqlViewName: 'PPPMPROJECTLIST'
@AbapCatalog.compiler.compareFilter: true@AccessControl.authorizationCheck: #CHECK@ClientHandling.algorithm: #SESSION_VARIABLE@ObjectModel.usageType.serviceQuality: #B@ObjectModel.usageType.sizeCategory: #L@ObjectModel.usageType.dataClass: #TRANSACTIONAL// @EndUserText.label: 'List of all Projects for UI consumption'
@ObjectModel.representativeKey: 'ProjectUUID'
defineview P_PPM_ProjectList asselectfrom I_PPM_ProjectSummaryTask as Project
// get the BuPa for the associations
innerjoin I_PPM_User as User
on User.UserID = $session.user
leftouterjoin I_PPM_Text as NameUserLanguage
on ( NameUserLanguage.LanguageCode = $session.system_language )
and ( NameUserLanguage.ReferencedObjectUUID = Project.ProjectSummaryTaskUUID )
// replaced by primary DB fallback in 1911
// leftouterjoin I_PPM_Text as NameMasterLanguage
// on ( NameMasterLanguage.LanguageCode = Project.MasterLanguage )
// and ( NameMasterLanguage.ReferencedObjectUUID = Project.ProjectSummaryTaskUUID )
leftouterjoin I_PPM_ProTypeText as ProTypeName
on ( ProTypeName.LanguageCode = $session.system_language )
and ( ProTypeName.ProjectType = Project.ProjectType )
leftouterjoin I_PPM_ProTypeText as TypeNameMasterLanguage
on ( TypeNameMasterLanguage.LanguageCode = Project.MasterLanguage )
and ( TypeNameMasterLanguage.ProjectType = Project.ProjectType )
// My Project Indicator
leftouterjoin I_PPM_IsMyProject as IsMyProject
on Project.ProjectUUID = IsMyProject.ProjectUUID
// My Project as Substitute Indicator
leftouterjoin I_PPM_IsMyProjectAsSubstitute as IsMyProjectAsSubstitute
on Project.ProjectUUID = IsMyProjectAsSubstitute.ProjectUUID
// other associations
association [0..1] to I_PPM_ProjectResponsible as _ProjectManager
on ( ( _ProjectManager.ProjectUUID = $projection.ProjectUUID )
and ( _ProjectManager.BusinessPartnerUUID = $projection.MyBusinessPartnerUUID ) )
association [0..1] to I_PPM_Substitute as _Substitute
on ( ( _Substitute.ReferencedObjectUUID = $projection.ProjectSummaryTaskUUID )
and ( _Substitute.SubstituteUser = $session.user ) )
// associatioins to authorization views
association [0..*] to I_PPM_AuthznByUsrH as _AuthUser
on _AuthUser.ReferencedObjectUUID = $projection.ProjectSummaryTaskUUID
and _AuthUser.UserID = $session.user
and ( _AuthUser.Activity = 'Admin' or _AuthUser.Activity = 'Write' or _AuthUser.Activity = 'Read' )
association [0..*] to I_PPM_AuthznBySubstitH as _AuthSubst
on _AuthSubst.ReferencedObjectUUID = $projection.ProjectSummaryTaskUUID
and _AuthSubst.UserID = $session.user
and ( _AuthSubst.Activity = 'Admin' or _AuthSubst.Activity = 'Write' or _AuthSubst.Activity = 'Read' )
association [0..*] to I_PPM_AuthznByUserRoleH as _AuthRole
on _AuthRole.ReferencedObjectUUID = $projection.ProjectSummaryTaskUUID
and _AuthRole.UserID = $session.user
and ( _AuthRole.Activity = 'Admin' or _AuthRole.Activity = 'Write' or _AuthRole.Activity = 'Read' )
association [0..*] to I_PPM_AuthznByUsrGrpH as _AuthGroup
on _AuthGroup.ReferencedObjectUUID = $projection.ProjectSummaryTaskUUID
and _AuthGroup.UserID = $session.user
and ( _AuthGroup.Activity = 'Admin' or _AuthGroup.Activity = 'Write' or _AuthGroup.Activity = 'Read' )
{
key Project.ProjectUUID,
key Project.ProjectSummaryTaskUUID,
Project.ProjectCategory,
Project.ProjectLastChangedByUser,
Project.ProjectLastChangedDateTime,
Project.ProjectReasonCode,
Project.ProjectName,
Project.MasterLanguage,
Project.IsSummaryTaskEnabled,
Project.ProjectLocation,
Project.PlanVersion,
Project.OrganizationalUnitObjectType,
Project.OrganizationalUnit,
Project.ProjectEarliestOrLatest,
Project.EarliestStartDateTime,
Project.ActualStartDateTime,
Project.LatestStartDateTime,
Project.ForecastedStartDateTime,
Project.EarliestFinishDateTime,
Project.ActualFinishDateTime,
Project.LatestFinishDateTime,
Project.ForecastedFinishDateTime,
Project.StartConstraintDateTime,
Project.FinishConstraintDateTime,
Project.ProjectElementDuration,
Project.DurationUnit,
Project.ProjectType,
@EndUserText: { label: 'Project ID', quickInfo: 'Project ID' }
Project.Project,
Project.ReleaseDateTime,
Project.ProjectInternalID,
Project.WBSElementInternalID,
Project.ProjectProcessingStatus,
Project.PriorityCode,
Project.ProjectVersionNumber,
Project.CreatedByUser,
Project.CreationDateTime,
User.BusinessPartnerUUID as MyBusinessPartnerUUID,
@EndUserText: { label: 'My Project (Project Manager)',
quickInfo: 'My Project (Project Manager)'
}casewhen IsMyProject.IsMyProject isnullthen
' '
else
IsMyProject.IsMyProject
endas IsMyProject,
@EndUserText: { label: 'My Project (Substitute)',
quickInfo: 'My Project (Substitute)'
}casewhen IsMyProjectAsSubstitute.IsMyProject isnullthen
' '
else
IsMyProjectAsSubstitute.IsMyProject
endas IsMyProjectAsSubstitute,
NameUserLanguage.ObjectName as ProjectNameUserLanguage,
// replaced by primary DB fallback in 1911
// NameMasterLanguage.ObjectName as ProjectNameMasterLanguage,
ProjectName as ProjectNameMasterLanguage,
// _ProjectTypeName[1: LanguageCode = $session.system_language ] as ProjectTypeNameUserLanguage, can not be used incase
ProTypeName.ProjectTypeName,
ProTypeName.ProjectTypeName as ProjectTypeNameUserLanguage, // do not use - depreceated
TypeNameMasterLanguage.ProjectTypeName as ProjectTypeNameMasterLanguage, // do not use - depreceated
// , Project._ProjectType
_AuthUser,
_AuthSubst,
_AuthRole,
_AuthGroup,
_I_Project,
_ProjObjRoot,
_ProjectManager,
_Substitute
}