@AbapCatalog.sqlViewName: 'PPMPROJBYFIG'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@ClientHandling.algorithm: #SESSION_VARIABLE
@ObjectModel: {
semanticKey: [ 'Project' ],
representativeKey: 'ProjectUUID',
alternativeKey: [ { id : 'ProjectSummaryTaskUUID', uniqueness: #UNIQUE } ],
usageType: {
serviceQuality: #X,
dataClass: #MIXED,
sizeCategory: #L
}
}
@VDM.viewType: #COMPOSITE
@VDM.private: true
define view P_PPM_PrStCmrProjByKeyFigures
as select from I_PPM_ProjectSummaryTask as _ProjectSummary
left outer join I_ProjectOverallCost as _ProjectOverallCost on _ProjectOverallCost.ProjectInternalID = _ProjectSummary.ProjectInternalID
/* PS Project */
left outer to one join I_ProjectBasicData as _Project on _Project.ProjectInternalID = _ProjectSummary.ProjectInternalID
/* PS WBS Element */
left outer to one join I_WBSElementBasicData as PS_RootWBS on PS_RootWBS.WBSElementInternalID = _ProjectSummary.WBSElementInternalID
/* Essential milestone */
left outer to one join I_PPM_ProjectMilestEssent as _MlstnEssential on _ProjectSummary.ProjectUUID = _MlstnEssential.ProjectUUID
/* next released milestone */
left outer to one join I_PPM_ProjectMilestRelNext as _MlstnRelevant on _ProjectSummary.ProjectUUID = _MlstnRelevant.ProjectUUID
left outer to one join I_PPM_ProjectStatusArea as _OverallStatusArea on _ProjectSummary.ProjectUUID = _OverallStatusArea.ProjectUUID
and _OverallStatusArea.IsOverallStatus = 'X'
left outer to one join I_PPM_SingleResponsibleForProj as _Responsible on _Responsible.ProjectSummaryTaskUUID = _ProjectSummary.ProjectSummaryTaskUUID
// Indicator for user being Project Steering Commitee Member
left outer to one join I_PPM_TeamMemberIsInRole( P_ProjectRoleCategory : 'SCM' ) as IsPrjSteerMbr on _ProjectSummary.ProjectUUID = IsPrjSteerMbr.ProjectUUID
association [0..1] to I_PPM_Task as _NextEssentialMlstn on _NextEssentialMlstn.TaskUUID = $projection.NextEssentialMlstnUUID
association [0..1] to I_PPM_Task as _NextRelevantMlstn on _NextRelevantMlstn.TaskUUID = $projection.NextRelevantMlstnUUID
association [0..*] to I_ProjectProfileCodeText as _ProjectProfileCodeText on _ProjectProfileCodeText.ProjectProfileCode = $projection.ProjectProfileCode
association [0..*] to I_PPM_StatusAreaStatusText as _AreaStatusText on _AreaStatusText.Status = $projection.Status
association [0..*] to I_PPM_StatusAreaTrendText as _AreaTrendText on _AreaTrendText.StatusTrend = $projection.StatusTrend
association [0..*] to I_PPM_ProcessingStatusText as _ProcessingStatusText on _ProcessingStatusText.ProcessingStatus = $projection.ProcessingStatus
// association [0..1] to I_PPM_TaskText as _ProjectName on _ProjectName.TaskUUID = $projection.ProjectSummaryTaskUUID
association [0..1] to I_PPM_TaskText as _MlstnRelevantName on _MlstnRelevantName.TaskUUID = $projection.NextRelevantMlstnUUID
association [0..1] to I_PPM_TaskText as _NextEssentialMlstnName on _NextEssentialMlstnName.TaskUUID = $projection.NextEssentialMlstnUUID
association [0..*] to I_Projecttypetext as _ProjectTypeText on $projection.ProjectType = _ProjectTypeText.ProjectType
// association [0..*] to I_PPM_PriorityText as _PriorityCodeText on $projection.PriorityCode = _PriorityCodeText.PriorityCode
{
key _ProjectSummary.ProjectUUID,
key '1' as ProjectFinPostingIsAvailable,
_ProjectSummary.ProjectInternalID,
_Project.ProjectExternalID as Project,
_ProjectSummary.ProjectSummaryTaskUUID,
_ProjectSummary.WBSElementInternalID,
PS_RootWBS.ProjectType,
_ProjectSummary.ProjectProcessingStatus as ProcessingStatus,
_ProjectSummary.PriorityCode,
_ProjectSummary.LatestStartDate as ProjectStartDate,
_ProjectSummary.LatestFinishDate as ProjectEndDate,
IsPrjSteerMbr.IsInRoleCategory as IsProjectSteeringCommitteeMbr,
ProjectName,
_Project.ProjectObject as StatusObject,
_Project.ControllingArea as ControllingArea,
_Project.ProfitCenter as ProfitCenter,
_Project.ProjectProfileCode,
PS_RootWBS.ProfitCenter as WBSElementProfitCenter,
_OverallStatusArea.StatusAreaUUID as OverallStatusAreaUUID,
_OverallStatusArea.Status,
_OverallStatusArea.Criticality as OverallProjectStsCriticality, // obsolete should be removed
_OverallStatusArea.StatusTrend as StatusTrend, // obsolete should be removed
//@ObjectModel.foreignKey.association: '_ProjectManager' commenting because to fix the ATC.
_Responsible.BusinessPartnerUUID as ProjectManagerUUID,
_Responsible._BPUsrExternalID.BPIdentificationNumber as ProjectManagerExternalID,
_Responsible._BusinessUser.PersonFullName as BusinessPartnerFullName,
_MlstnEssential.TaskUUID as NextEssentialMlstnUUID,
_NextEssentialMlstn.LatestFinishDate as NextEssentialMlstnDate,
_NextEssentialMlstnName.ObjectName as NextEssentialMlstnName,
_MlstnRelevant.TaskUUID as NextRelevantMlstnUUID,
_NextRelevantMlstn.LatestFinishDate as NextRelevantMlstnDate,
_MlstnRelevantName.ObjectName as NextRelevantMlstnName,
@Semantics.currencyCode:true
_Project._ControllingArea.ControllingAreaCurrency as GlobalCurrency,
@Semantics: { amount : {currencyCode: 'GlobalCurrency'} }
@DefaultAggregation: #SUM
coalesce(_ProjectOverallCost.ActualAmountInGlobalCurrency, 0) as ActualAmountInGlobalCurrency,
@Semantics: { amount : {currencyCode: 'GlobalCurrency'} }
@DefaultAggregation: #SUM
coalesce(_ProjectOverallCost.PlanAmountInGlobalCurrency, 0) as PlanAmountInGlobalCurrency,
@Semantics: { amount : {currencyCode: 'GlobalCurrency'} }
@DefaultAggregation: #SUM
coalesce(_ProjectOverallCost.CmtmtCostInGlobalCurrency, 0) as CmtmtCostInGlobalCurrency,
@Semantics: { amount : {currencyCode: 'GlobalCurrency'} }
@DefaultAggregation: #SUM
coalesce(_ProjectOverallCost.PredictedAmtInGlobalCurrency, 0) as PredictedAmtInGlobalCurrency,
@Semantics: { amount : {currencyCode: 'GlobalCurrency'} }
@DefaultAggregation: #SUM
coalesce(_ProjectOverallCost.BaselineAmtInGlobalCrcy, 0) as BaselineAmtInGlobalCrcy,
@Semantics: { amount : {currencyCode: 'GlobalCurrency'} }
@DefaultAggregation: #SUM
coalesce(_ProjectOverallCost.ActlPlnDiffAmtInGlobalCrcy, 0) as ActlPlnDiffAmtInGlobalCrcy,
@DefaultAggregation: #SUM
coalesce(_ProjectOverallCost.ActPlnDiffAmtInPercentage, 0) as ActPlnDiffAmtInPercentage,
_NextEssentialMlstn,
_NextRelevantMlstn,
// Text Associations
_ProjectProfileCodeText,
_AreaStatusText,
_AreaTrendText,
_ProcessingStatusText,
_ProjectName,
_MlstnRelevantName,
_NextEssentialMlstnName,
_ProjectTypeText,
_PriorityText as _PriorityCodeText, // CE2011
_Responsible._BusinessUser,
_ProjectSummary._AuthUser,
_ProjectSummary._AuthSubst,
_ProjectSummary._AuthRole,
_ProjectSummary._AuthGroup
}
where _Project.ProjectProfileCode <> 'YP01'
and _ProjectSummary.ProjectCategory <> '7'
//union all select from I_PPM_ProjectSummaryTask as _ProjectSummary
//
///* PS Project */
// left outer to one join I_ProjectBasicData as _Project on _Project.ProjectInternalID = _ProjectSummary.ProjectInternalID
//
///* PS WBS Element */
// left outer to one join I_WBSElementBasicData as PS_RootWBS on PS_RootWBS.WBSElementInternalID = _ProjectSummary.WBSElementInternalID
//
///* Essential milestone */
// left outer to one join I_PPM_ProjectMilestEssent as _MlstnEssential on _ProjectSummary.ProjectUUID = _MlstnEssential.ProjectUUID
//
///* next released milestone */
// left outer to one join I_PPM_ProjectMilestRelNext as _MlstnRelevant on _ProjectSummary.ProjectUUID = _MlstnRelevant.ProjectUUID
//
// left outer to one join I_PPM_ProjectStatusArea as _OverallStatusArea on _ProjectSummary.ProjectUUID = _OverallStatusArea.ProjectUUID
// and _OverallStatusArea.IsOverallStatus = 'X'
//
// left outer to one join I_PPM_SingleResponsibleForProj as _Responsible on _Responsible.ProjectSummaryTaskUUID = _ProjectSummary.ProjectSummaryTaskUUID
//
//// Indicator for user being Project Steering Commitee Member
// left outer to one join I_PPM_TeamMemberIsInRole( P_ProjectRoleCategory : 'SCM' ) as IsPrjSteerMbr on _ProjectSummary.ProjectUUID = IsPrjSteerMbr.ProjectUUID
//
//
//association [0..1] to I_PPM_Task as _NextEssentialMlstn on _NextEssentialMlstn.TaskUUID = $projection.NextEssentialMlstnUUID
//
//association [0..1] to I_PPM_Task as _NextRelevantMlstn on _NextRelevantMlstn.TaskUUID = $projection.NextRelevantMlstnUUID
//
//
//association [0..*] to I_ProjectProfileCodeText as _ProjectProfileCodeText on _ProjectProfileCodeText.ProjectProfileCode = $projection.ProjectProfileCode
//
//association [0..*] to I_PPM_StatusAreaStatusText as _AreaStatusText on _AreaStatusText.Status = $projection.Status
//
//association [0..*] to I_PPM_StatusAreaTrendText as _AreaTrendText on _AreaTrendText.StatusTrend = $projection.StatusTrend
//
//association [0..*] to I_PPM_ProcessingStatusText as _ProcessingStatusText on _ProcessingStatusText.ProcessingStatus = $projection.ProcessingStatus
//
//// association [0..1] to I_PPM_TaskText as _ProjectName on _ProjectName.TaskUUID = $projection.ProjectSummaryTaskUUID
//
//association [0..1] to I_PPM_TaskText as _MlstnRelevantName on _MlstnRelevantName.TaskUUID = $projection.NextRelevantMlstnUUID
//
//association [0..1] to I_PPM_TaskText as _NextEssentialMlstnName on _NextEssentialMlstnName.TaskUUID = $projection.NextEssentialMlstnUUID
//
//association [0..*] to I_Projecttypetext as _ProjectTypeText on $projection.ProjectType = _ProjectTypeText.ProjectType
//
//// association [0..*] to I_PPM_PriorityText as _PriorityCodeText on $projection.PriorityCode = _PriorityCodeText.PriorityCode
//{
// key _ProjectSummary.ProjectUUID,
// key '0' as ProjectFinPostingIsAvailable,
// _ProjectSummary.ProjectInternalID,
// _ProjectSummary.Project,
// _ProjectSummary.ProjectSummaryTaskUUID,
// _ProjectSummary.WBSElementInternalID,
// PS_RootWBS.ProjectType,
// _ProjectSummary.ProjectProcessingStatus as ProcessingStatus,
// _ProjectSummary.PriorityCode,
//
// _ProjectSummary.LatestStartDate as ProjectStartDate,
// _ProjectSummary.LatestFinishDate as ProjectEndDate,
//
// IsPrjSteerMbr.IsInRoleCategory as IsProjectSteeringCommitteeMbr,
//
// ProjectName,
// _Project.ProjectObject as StatusObject,
// _Project.ControllingArea as ControllingArea,
// _Project.ProfitCenter as ProfitCenter,
// _Project.ProjectProfileCode,
// PS_RootWBS.ProfitCenter as WBSElementProfitCenter,
//
//
// _OverallStatusArea.StatusAreaUUID as OverallStatusAreaUUID,
// _OverallStatusArea.Status,
// _OverallStatusArea.Criticality as OverallProjectStsCriticality, // obsolete should be removed
// _OverallStatusArea.StatusTrend as StatusTrend, // obsolete should be removed
//
// //@ObjectModel.foreignKey.association: '_ProjectManager' commenting because to fix the ATC.
// _Responsible.BusinessPartnerUUID as ProjectManagerUUID,
// _Responsible._BusinessUser.PersonFullName as BusinessPartnerFullName,
// _Responsible._BusinessUser.AuthorizationGroup,
//
// _MlstnEssential.TaskUUID as NextEssentialMlstnUUID,
//
// _NextEssentialMlstn.LatestFinishDate as NextEssentialMlstnDate,
// _NextEssentialMlstnName.ObjectName as NextEssentialMlstnName,
//
// _MlstnRelevant.TaskUUID as NextRelevantMlstnUUID,
//
// _NextRelevantMlstn.LatestFinishDate as NextRelevantMlstnDate,
// _MlstnRelevantName.ObjectName as NextRelevantMlstnName,
//
// @Semantics.currencyCode:true
// _Project._ControllingArea.ControllingAreaCurrency as GlobalCurrency,
//
// @Semantics: { amount : {currencyCode: 'GlobalCurrency'} }
// @DefaultAggregation: #SUM
// cast ( 0 as fis_ksl ) as ActualAmountInGlobalCurrency,
//
// @Semantics: { amount : {currencyCode: 'GlobalCurrency'} }
// @DefaultAggregation: #SUM
// cast ( 0 as fis_ksl ) as PlanAmountInGlobalCurrency,
//
// @Semantics: { amount : {currencyCode: 'GlobalCurrency'} }
// @DefaultAggregation: #SUM
// cast ( 0 as fis_ksl ) as CmtmtCostInGlobalCurrency,
//
// @Semantics: { amount : {currencyCode: 'GlobalCurrency'} }
// @DefaultAggregation: #SUM
// cast ( 0 as fis_ksl ) as PredictedAmtInGlobalCurrency,
//
// @Semantics: { amount : {currencyCode: 'GlobalCurrency'} }
// @DefaultAggregation: #SUM
// cast ( 0 as fis_ksl ) as BaselineAmtInGlobalCrcy,
//
// @Semantics: { amount : {currencyCode: 'GlobalCurrency'} }
// @DefaultAggregation: #SUM
// cast ( 0 as fis_ksl ) as ActlPlnDiffAmtInGlobalCrcy,
//
// @DefaultAggregation: #SUM
// cast ( 0 as fis_ksl ) as ActPlnDiffAmtInPercentage,
//
// _NextEssentialMlstn,
// _NextRelevantMlstn,
//
// // Text Associations
// _ProjectProfileCodeText,
// _AreaStatusText,
// _AreaTrendText,
// _ProcessingStatusText,
// _ProjectName,
// _MlstnRelevantName,
// _NextEssentialMlstnName,
// _ProjectTypeText,
// _PriorityText as _PriorityCodeText, // CE2011
//
// _ProjectSummary._AuthUser,
// _ProjectSummary._AuthSubst,
// _ProjectSummary._AuthRole,
// _ProjectSummary._AuthGroup
//
//}
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_BPUSREXTERNALID",
"I_BUSINESSUSERBASIC",
"I_CONTROLLINGAREA",
"I_PPM_PROJECTMILESTESSENT",
"I_PPM_PROJECTMILESTRELNEXT",
"I_PPM_PROJECTSTATUSAREA",
"I_PPM_PROJECTSUMMARYTASK",
"I_PPM_SINGLERESPONSIBLEFORPROJ",
"I_PPM_TASK",
"I_PPM_TASKTEXT",
"I_PPM_TEAMMEMBERISINROLE",
"I_PROJECTBASICDATA",
"I_PROJECTOVERALLCOST",
"I_WBSELEMENTBASICDATA"
],
"ASSOCIATED":
[
"I_BUSINESSUSERBASIC",
"I_PPM_AUTHZNBYSUBSTITH",
"I_PPM_AUTHZNBYUSERROLEH",
"I_PPM_AUTHZNBYUSRGRPH",
"I_PPM_AUTHZNBYUSRH",
"I_PPM_PRIORITYTEXT",
"I_PPM_PROCESSINGSTATUSTEXT",
"I_PPM_STATUSAREASTATUSTEXT",
"I_PPM_STATUSAREATRENDTEXT",
"I_PPM_TASK",
"I_PPM_TASKTEXT",
"I_PPM_TEXT",
"I_PROJECTPROFILECODETEXT",
"I_PROJECTTYPETEXT"
],
"BASE":
[
"I_PPM_PROJECTSUMMARYTASK",
"I_PPM_SINGLERESPONSIBLEFORPROJ"
],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/