@AbapCatalog.sqlViewName: 'IEPFCSTCUBE2'
@ClientHandling.algorithm: #SESSION_VARIABLE
@AbapCatalog.compiler.compareFilter: true
@VDM.viewType: #COMPOSITE
@Analytics: { dataCategory: #CUBE }
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Forecast Info for Engmnt Project - Cube'
@ObjectModel.usageType.serviceQuality: #D
@ObjectModel.usageType.sizeCategory: #XL
@ObjectModel.usageType.dataClass: #MIXED
@AccessControl.personalData.blocking: #NOT_REQUIRED
@Metadata.allowExtensions:true
@Metadata.ignorePropagatedAnnotations:true
@ObjectModel: {modelingPattern: #ANALYTICAL_CUBE,
supportedCapabilities: [#ANALYTICAL_PROVIDER]
}
@AbapCatalog: { dbHints: [{dbSystem: #HDB, hint:'OPTIMIZATION_LEVEL(RULE_BASED)'}]}
@Consumption.dbHints: ['NO_USE_OLAP_PLAN']
define view I_EngmntProjFcstCube_2
with parameters
P_FiscalYearPeriod : /cpd/pfp_review_year_period,
@Consumption.hidden: true
@Environment.systemField: #SYSTEM_LANGUAGE
P_Language : sylangu
as select from I_EngagementProject as EngagementProject
inner join I_EngagementProjFinancialPlan as EngagementProjFinancialPlan on EngagementProject.EngagementProjectUUID = EngagementProjFinancialPlan.EngagementProjectUUID
inner join P_EngmntProjPlnActlAsSoldRevn as EngmntProjWrkPckgPlanActual on EngagementProject.EngagementProject = EngmntProjWrkPckgPlanActual.EngagementProject
inner join I_WorkPackage as WorkPackage on EngmntProjWrkPckgPlanActual.WorkPackage = WorkPackage.WorkPackage
// left outer join I_EngmntProjFinPlanStatus as InitialStatus on InitialStatus.EngmntProjReviewStsIsInitial = 'X'
left outer join I_EngmntProjUnitCompltnPct (P_FiscalYearPeriod : $parameters.P_FiscalYearPeriod) as EngmntProjUnitCompltnPct on EngmntProjWrkPckgPlanActual.EngagementProject = EngmntProjUnitCompltnPct.EngagementProject
and EngmntProjWrkPckgPlanActual.IsMyProject = EngmntProjUnitCompltnPct.IsMyProject
and EngmntProjWrkPckgPlanActual.EngagementProjectCategory = EngmntProjUnitCompltnPct.EngagementProjectCategory
and EngmntProjWrkPckgPlanActual.CustomerProjectServiceOrg = EngmntProjUnitCompltnPct.CustomerProjectServiceOrg
and EngmntProjWrkPckgPlanActual.Customer = EngmntProjUnitCompltnPct.Customer
and EngmntProjWrkPckgPlanActual.ProjectVisibility = EngmntProjUnitCompltnPct.ProjectVisibility
and EngmntProjWrkPckgPlanActual.EngagementProjectStage = EngmntProjUnitCompltnPct.EngagementProjectStage
and EngmntProjWrkPckgPlanActual.ProjectProfileCode = EngmntProjUnitCompltnPct.ProjectProfileCode
and EngmntProjWrkPckgPlanActual.EngagementProjectType = EngmntProjUnitCompltnPct.EngagementProjectType
and EngmntProjWrkPckgPlanActual.EngmntProjectHeaderCompanyCode = EngmntProjUnitCompltnPct.EngmntProjectHeaderCompanyCode
and EngmntProjWrkPckgPlanActual.EngagementProjectCostCenter = EngmntProjUnitCompltnPct.EngagementProjectCostCenter
and EngmntProjWrkPckgPlanActual.ProfitCenter = EngmntProjUnitCompltnPct.ProfitCenter
and EngmntProjWrkPckgPlanActual.WorkPackage = EngmntProjUnitCompltnPct.WorkPackage
and EngmntProjWrkPckgPlanActual.EngmtProjFinPlanVersion = EngmntProjUnitCompltnPct.EngmtProjFinPlanVersion
and EngmntProjWrkPckgPlanActual.LastChangeDateTime = EngmntProjUnitCompltnPct.LastChangeDateTime
left outer join I_SalesOrderItem as SalesOrderItem on WorkPackage.SalesOrder = SalesOrderItem.SalesOrder
and WorkPackage.SalesOrderItem = SalesOrderItem.SalesOrderItem
association [0..1] to I_EngagementProject as _EngagementProject on $projection.EngagementProject = _EngagementProject.EngagementProject
association [0..1] to I_Customer as _Customer on $projection.Customer = _Customer.Customer
association [0..1] to I_EngagementProjectStage as _EngagementProjectStage on $projection.EngagementProjectStage = _EngagementProjectStage.EngagementProjectStage
association [0..1] to I_ControllingArea as _ControllingArea on $projection.ControllingArea = _ControllingArea.ControllingArea
association [0..*] to I_ProfitCenter as _ProfitCenter on $projection.ControllingArea = _ProfitCenter.ControllingArea
and $projection.ProfitCenter = _ProfitCenter.ProfitCenter
association [0..*] to I_CostCenter as _CostCenter on $projection.CostCenter = _CostCenter.CostCenter
and $projection.ControllingArea = _CostCenter.ControllingArea
association [0..1] to I_CompanyCode as _CompanyCode on $projection.CompanyCode = _CompanyCode.CompanyCode
association [0..1] to I_WorkPackage as _WorkPackage on $projection.WorkPackage = _WorkPackage.WorkPackage
association [0..1] to I_SalesOrder as _SalesOrder on $projection.SalesOrder = _SalesOrder.SalesOrder
association [0..1] to I_SalesOrderItem as _SalesOrderItem on $projection.SalesOrderItem = _SalesOrderItem.SalesOrderItem
and $projection.SalesOrder = _SalesOrderItem.SalesOrder
association [0..1] to I_EngagementProjectResource as _EngagementProjectResource on $projection.EngagementProjectResource = _EngagementProjectResource.EngagementProjectResource
and $projection.EngagementProjectResourceType = _EngagementProjectResource.EngagementProjectResourceType
association [0..1] to I_WorkPackageWorkItem as _WorkItem on $projection.WorkItem = _WorkItem.WorkItem
and $projection.WorkPackage = _WorkItem.WorkPackage
association [0..1] to I_Currency as _Currency on $projection.Currency = _Currency.Currency
association [0..1] to I_UnitOfMeasure as _UnitOfMeasure on $projection.UnitOfMeasure = _UnitOfMeasure.UnitOfMeasure
association [0..1] to I_UnitOfMeasure as _WorkPackageUnitUoM on $projection.WorkPackageUnitUoM = _WorkPackageUnitUoM.UnitOfMeasure
association [0..1] to I_EngagementProjectSrvcOrg as _EngmntProjectDeliveryOrg on $projection.EngmntProjectDeliveryOrg = _EngmntProjectDeliveryOrg.EngagementProjectServiceOrg
association [0..1] to I_EngagementProjectSrvcOrg as _EngagementProjectSrvcOrg on $projection.EngagementProjectServiceOrg = _EngagementProjectSrvcOrg.EngagementProjectServiceOrg
association [0..1] to I_EngmntProjResourceType as _EngagementProjectResourceType on $projection.EngagementProjectResourceType = _EngagementProjectResourceType.EngagementProjectResourceType
association [0..1] to I_WBSElementBasicData as _WBSElementBasicData on $projection.WBSElement = _WBSElementBasicData.WBSElementInternalID
association [0..1] to I_WBSElementBasicData as _WBSElementBasicData_2 on $projection.WBSElementInternalID = _WBSElementBasicData_2.WBSElementInternalID
association [0..1] to I_EngmntProjFinPlanStatus as _EngmntProjFinPlanStatus on $projection.EngagementProjectReviewStatus = _EngmntProjFinPlanStatus.EngagementProjectReviewStatus
{
@ObjectModel.foreignKey.association: '_EngagementProject'
@EndUserText.label: 'Project'
cast(EngmntProjWrkPckgPlanActual.EngagementProject as /cpd/project ) as EngagementProject,
@EndUserText.label: 'Cust.Proj. Name'
EngagementProject.EngagementProjectName as EngagementProjectName,
@ObjectModel.foreignKey.association: '_EngmntProjFinPlanStatus'
case when EngagementProjFinancialPlan.EngagementProjectReviewStatus <> ''
then EngagementProjFinancialPlan.EngagementProjectReviewStatus
else cast('0INI' as /cpd/pfp_status_id ) end as EngagementProjectReviewStatus,
@ObjectModel.foreignKey.association: '_EngagementProjectSrvcOrg'
EngmntProjWrkPckgPlanActual.CustomerProjectServiceOrg as EngagementProjectServiceOrg,
@Consumption.hidden: true
EngmntProjWrkPckgPlanActual.ProjectProfileCode,
EngmntProjWrkPckgPlanActual.EngagementProjFinPlanUUID,
@Semantics.dateTime:true
@Semantics.systemDateTime.lastChangedAt:true
EngmntProjWrkPckgPlanActual.LastChangeDateTime,
@ObjectModel.foreignKey.association: '_WorkPackage'
cast (WorkPackage.WorkPackage as /cpd/workpackage) as WorkPackage,
WorkPackage.WorkPackageName as WorkPackageName,
WorkPackage.WorkPackageStartDate as WorkPackageStartDate,
WorkPackage.WorkPackageEndDate as WorkPackageEndDate,
@ObjectModel.foreignKey.association: '_WorkItem'
cast(EngmntProjWrkPckgPlanActual.WorkItem as /cpd/workitem ) as WorkItem,
@Analytics.internalName: #LOCAL
@ObjectModel.foreignKey.association: '_EngagementProjectResourceType'
EngmntProjWrkPckgPlanActual.EngagementProjectResourceType as EngagementProjectResourceType,
@ObjectModel.foreignKey.association: '_EngagementProjectResource'
cast (EngmntProjWrkPckgPlanActual.EngagementProjectResource as /cpd/resource) as EngagementProjectResource,
@EndUserText.label: 'Month'
EngmntProjWrkPckgPlanActual.FiscalPeriod as FiscalPeriod,
@EndUserText.label: 'Year'
EngmntProjWrkPckgPlanActual.FiscalYear as FiscalYear,
@EndUserText.label: 'Year / Month'
EngmntProjWrkPckgPlanActual.FiscalYearPeriod as FiscalYearPeriod,
@ObjectModel.foreignKey.association: '_Currency'
@Semantics.currencyCode: true
EngmntProjWrkPckgPlanActual.Currency as Currency,
@DefaultAggregation: #SUM
@Semantics.amount.currencyCode: 'Currency'
cast(EngmntProjWrkPckgPlanActual.PlndCostAmt as /cpd/plan_cost) as PlndCostAmt,
@DefaultAggregation: #SUM
@Semantics.amount.currencyCode: 'Currency'
case when EngmntProjWrkPckgPlanActual.FiscalYearPeriod <= :P_FiscalYearPeriod
then
EngmntProjWrkPckgPlanActual.ActlCostAmt
else cast(0 as /cpd/actual_cost)
end as ActlCostAmt,
@EndUserText.label: 'Staffed Effort'
@DefaultAggregation: #SUM
@Semantics.quantity.unitOfMeasure: 'UnitOfMeasure'
cast(EngmntProjWrkPckgPlanActual.SupplyEffortQty as /cpd/planned_effort) as SupplyEffortQty,
@EndUserText.label: 'Work Package UoM'
@ObjectModel.foreignKey.association: '_WorkPackageUnitUoM'
@Semantics.unitOfMeasure:true
case
when EngmntProjWrkPckgPlanActual.EngagementProjectResourceType = '0SRV'
then EngmntProjUnitCompltnPct.WorkPackageUnitUoM
end as WorkPackageUnitUoM,
@ObjectModel.foreignKey.association: '_UnitOfMeasure'
@Semantics.unitOfMeasure:true
case
when EngmntProjWrkPckgPlanActual.EngagementProjectResourceType != '0SRV'
then EngmntProjWrkPckgPlanActual.UnitOfMeasure
end as UnitOfMeasure,
@DefaultAggregation: #SUM
@Semantics.quantity.unitOfMeasure: 'UnitOfMeasure'
case
when EngmntProjWrkPckgPlanActual.EngagementProjectResourceType = '0ACT'
then cast(EngmntProjWrkPckgPlanActual.PlndEffortQty as /cpd/planned_effort)
end as PlndEffortQty,
@EndUserText.label: 'Planned Qty (Addl Res.)'
@DefaultAggregation: #SUM
@Semantics.quantity.unitOfMeasure: 'UnitOfMeasure'
case
when EngmntProjWrkPckgPlanActual.EngagementProjectResourceType = '0ADL'
then EngmntProjWrkPckgPlanActual.PlndEffortQty
end as AddlResourcePlannedQuantity,
@EndUserText.label: 'Planned Qty (Service)'
@DefaultAggregation: #SUM
@Semantics.quantity.unitOfMeasure: 'WorkPackageUnitUoM'
case
when EngmntProjWrkPckgPlanActual.EngagementProjectResourceType = '0SRV'
then cast(EngmntProjWrkPckgPlanActual.PlndEffortQty as /cpd/planned_effort)
end as PlanUnitQuantity,
@DefaultAggregation: #SUM
@Semantics.quantity.unitOfMeasure: 'UnitOfMeasure'
case
when EngmntProjWrkPckgPlanActual.FiscalYearPeriod <= :P_FiscalYearPeriod and EngmntProjWrkPckgPlanActual.EngagementProjectResourceType = '0ACT'
then
cast(EngmntProjWrkPckgPlanActual.ActlEffortQty as /cpd/actual_effort)
end as ActlEffortQty,
@EndUserText.label: 'Actual Qty (Addl Res.)'
@DefaultAggregation: #SUM
@Semantics.quantity.unitOfMeasure: 'UnitOfMeasure'
case
when EngmntProjWrkPckgPlanActual.FiscalYearPeriod <= :P_FiscalYearPeriod and EngmntProjWrkPckgPlanActual.EngagementProjectResourceType = '0ADL'
then EngmntProjWrkPckgPlanActual.ActlEffortQty
end as AddlResourceActualQuantity,
@EndUserText.label: 'Actual Qty (Service)'
@DefaultAggregation: #SUM
@Semantics.quantity.unitOfMeasure: 'WorkPackageUnitUoM'
case
when EngmntProjWrkPckgPlanActual.EngagementProjectResourceType = '0SRV' and EngmntProjWrkPckgPlanActual.FiscalYearPeriod <= :P_FiscalYearPeriod
then cast(EngmntProjWrkPckgPlanActual.ActlEffortQty as /cpd/planned_effort)
end as ActualUnitQty,
@EndUserText.label: 'Cost Deviation'
@DefaultAggregation: #SUM
@Semantics.amount.currencyCode: 'Currency'
EngmntProjWrkPckgPlanActual.ActualPlanDeviationCost as ActualPlanDeviationCost,
@EndUserText.label: 'Effort Deviation'
@DefaultAggregation: #SUM
@Semantics.quantity.unitOfMeasure: 'UnitOfMeasure'
EngmntProjWrkPckgPlanActual.ActualPlanDeviationEffort as ActualPlanDeviationEffort,
@EndUserText.label: 'Delivery Organization'
@ObjectModel.foreignKey.association: '_EngmntProjectDeliveryOrg'
EngmntProjWrkPckgPlanActual.EngagementProjectServiceOrg as EngmntProjectDeliveryOrg,
@ObjectModel.foreignKey.association: '_SalesOrder'
EngmntProjWrkPckgPlanActual.SalesOrder as SalesOrder,
@ObjectModel.foreignKey.association: '_SalesOrderItem'
EngmntProjWrkPckgPlanActual.SalesOrderItem as SalesOrderItem,
SalesOrderItem.SalesOrderItemText as SalesOrderItemText,
@Consumption.hidden: true
@API.element.releaseState: #DEPRECATED
@API.element.successor: 'WBSElementInternalID'
SalesOrderItem.WBSElement,
@Consumption.hidden: true
SalesOrderItem.WBSElementInternalID,
_WBSElementBasicData_2.WBSElementExternalID as WBSElementExternalID,
EngmntProjWrkPckgPlanActual.EngmntProjPlanLineType as EngmntProjPlanLineType,
@DefaultAggregation: #MAX
case
when WorkPackage.WorkPackageType = 'U' then
cast(EngmntProjUnitCompltnPct.UnitCompltnRateInPercent as /cpd/sc_completionrate)
end as UnitCompltnRateInPercent,
@DefaultAggregation: #MAX
@VDM.lifecycle.status: #DEPRECATED
@VDM.lifecycle.successor: 'RsceIsServiceBasedWorkPackage'
case
when WorkPackage.WorkPackageType = 'U' and EngmntProjWrkPckgPlanActual.EngagementProjectResourceType != '0SRV'
then cast(1 as /cpd/planned_effort)
else cast(0 as /cpd/planned_effort)
end as ResourceIsOfUnitWorkPackage,
@DefaultAggregation: #MAX
case
when WorkPackage.WorkPackageType = 'U' and EngmntProjWrkPckgPlanActual.EngagementProjectResourceType != '0SRV'
then 1
else 0
end as RsceIsServiceBasedWorkPackage,
@EndUserText.label: 'Work Package Type'
case
when WorkPackage.WorkPackageType = 'U'
then WorkPackage.WorkPackageType
else ''
end as WorkPackageType,
@EndUserText.label:'Confidential Project'
@Analytics.internalName: #LOCAL
EngmntProjWrkPckgPlanActual.ProjectVisibility as ProjectVisibility,
@EndUserText.label: 'My Projects'
@Analytics.internalName: #LOCAL
@Semantics.booleanIndicator:true
EngmntProjWrkPckgPlanActual.IsMyProject,
@EndUserText.label: 'Forecast Year'
substring(EngagementProjFinancialPlan.EngmntProjReviewYearPeriod, 1, 4) as EngagementProjectForecastYear,
@EndUserText.label: 'Forecast Month'
substring(EngagementProjFinancialPlan.EngmntProjReviewYearPeriod, 6, 2) as EngagementProjectForecastMonth,
@DefaultAggregation: #SUM
@Semantics.amount.currencyCode: 'Currency'
EngmntProjWrkPckgPlanActual.TotalNetAmount as RevenueAsSoldAmount,
EngmntProjWrkPckgPlanActual.EngagementProjectType,
@ObjectModel.foreignKey.association: '_EngagementProjectStage'
EngmntProjWrkPckgPlanActual.EngagementProjectStage,
EngmntProjWrkPckgPlanActual.EngagementProjectCategory,
@ObjectModel.foreignKey.association: '_Customer'
EngmntProjWrkPckgPlanActual.Customer,
@ObjectModel.foreignKey.association: '_ControllingArea'
EngmntProjWrkPckgPlanActual.ControllingArea,
@ObjectModel.foreignKey.association: '_ProfitCenter'
EngmntProjWrkPckgPlanActual.ProfitCenter,
@ObjectModel.foreignKey.association: '_CostCenter'
cast(EngmntProjWrkPckgPlanActual.EngagementProjectCostCenter as kostl) as CostCenter,
@ObjectModel.foreignKey.association: '_CompanyCode'
EngmntProjWrkPckgPlanActual.EngmntProjectHeaderCompanyCode as CompanyCode,
_EngagementProject,
_WorkPackage,
_WorkItem,
_EngagementProjectResourceType,
_EngagementProjectResource,
_Currency,
_UnitOfMeasure,
_EngagementProjectSrvcOrg,
_SalesOrder,
_SalesOrderItem,
_EngmntProjectDeliveryOrg,
_WorkPackageUnitUoM,
_EngmntProjFinPlanStatus,
@API.element.releaseState: #DEPRECATED
@API.element.successor: '_WBSElementBasicData_2'
_WBSElementBasicData,
_WBSElementBasicData_2,
_EngagementProjectStage,
_Customer,
_ControllingArea,
_ProfitCenter,
_CostCenter,
_CompanyCode
}
where
EngmntProjWrkPckgPlanActual.EngmtProjFinPlanVersion = '1'
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_ENGAGEMENTPROJECT",
"I_ENGAGEMENTPROJFINANCIALPLAN",
"I_ENGMNTPROJUNITCOMPLTNPCT",
"I_SALESORDERITEM",
"I_WBSELEMENTBASICDATA",
"I_WORKPACKAGE",
"P_ENGMNTPROJPLNACTLASSOLDREVN"
],
"ASSOCIATED":
[
"I_COMPANYCODE",
"I_CONTROLLINGAREA",
"I_COSTCENTER",
"I_CURRENCY",
"I_CUSTOMER",
"I_ENGAGEMENTPROJECT",
"I_ENGAGEMENTPROJECTRESOURCE",
"I_ENGAGEMENTPROJECTSRVCORG",
"I_ENGAGEMENTPROJECTSTAGE",
"I_ENGMNTPROJFINPLANSTATUS",
"I_ENGMNTPROJRESOURCETYPE",
"I_PROFITCENTER",
"I_SALESORDER",
"I_SALESORDERITEM",
"I_UNITOFMEASURE",
"I_WBSELEMENTBASICDATA",
"I_WORKPACKAGE",
"I_WORKPACKAGEWORKITEM"
],
"BASE":
[],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/