@EndUserText.label: 'Service Contract Cube with Periodic Data'
@ClientHandling.algorithm: #SESSION_VARIABLE
@AbapCatalog: {
sqlViewName: 'ISERVCCONTRPERD',
compiler.compareFilter: true,
preserveKey: true
}
@VDM: {
viewType: #COMPOSITE,
lifecycle.contract.type: #PUBLIC_LOCAL_API
}
@AccessControl: {
authorizationCheck: #CHECK,
personalData.blocking: #('TRANSACTIONAL_DATA')
}
@ObjectModel: {
// representativeKey: 'ServiceContract',
usageType: {
dataClass: #MIXED,
serviceQuality: #D,
sizeCategory: #XXL
}
}
@Analytics: {
dataCategory: #CUBE,
internalName: #LOCAL
}
@Metadata.allowExtensions:true
//@Metadata.ignorePropagatedAnnotations: true
define view I_ServiceContractPeriodicCube
with parameters
P_DisplayCurrency : vdm_v_display_currency
as select from I_ServiceDocumentEnhcd
association [0..1] to P_SrvcContrFinPeriodicSum as _FinanceData on $projection.ServiceContract = _FinanceData.ServiceContract
association [0..1] to P_SrvcContrDays as _ContractDays on $projection.ServiceContract = _ContractDays.ServiceDocument
and $projection.ServiceObjectType = _ContractDays.ServiceObjectType
association [0..1] to I_CalendarDate as _CurrentDate on _CurrentDate.CalendarDate = $session.system_date
association [0..1] to I_Currency as _TransactionCurrency on $projection.TransactionCurrency = _TransactionCurrency.Currency
association [0..1] to I_Currency as _CompanyCodeCurrency on $projection.CompanyCodeCurrency = _CompanyCodeCurrency.Currency
association [0..1] to P_SrvcContrList as _Contract on $projection.ServiceContract = _Contract.ServiceContract
association [0..1] to E_ServiceDocument as _ServiceDocumentExt on $projection.ServiceObjectType = _ServiceDocumentExt.ServiceCategory
and $projection.ServiceContract = _ServiceDocumentExt.ServiceOrder
association [1..1] to I_CalendarMonth as _CalendarMonth on $projection.CalendarMonth = _CalendarMonth.CalendarMonth
association [1..1] to I_CalendarQuarter as _CalendarQuarter on $projection.CalendarQuarter = _CalendarQuarter.CalendarQuarter
association [1..1] to I_CalendarYear as _CalendarYear on $projection.CalendarYear = _CalendarYear.CalendarYear
{
@ObjectModel.foreignKey.association: '_ServiceObjType'
key ServiceObjectType,
key ServiceDocument as ServiceContract,
ServiceDocumentCharUUID as ServiceContractUUID,
ServiceDocumentDescription,
@ObjectModel.foreignKey.association: '_ServiceDocumentType'
ServiceDocumentType,
_ServiceDocumentType,
ServiceDocumentStatus,
ServiceContractStartDate,
ServiceContractEndDate,
ServiceContractStartDateTime,
ServiceContractEndDateTime,
_FinanceData.CreationDate as CreationDate,
@ObjectModel.foreignKey.association: '_CalendarQuarter'
_FinanceData.CalendarQuarter as CalendarQuarter,
@ObjectModel.foreignKey.association: '_CalendarYear'
_FinanceData.CalendarYear as CalendarYear,
@ObjectModel.foreignKey.association: '_CalendarMonth'
_FinanceData.CalendarMonth as CalendarMonth,
_FinanceData.CalendarWeek as CalendarWeek,
@ObjectModel.foreignKey.association: '_TransactionCurrency'
@Semantics.currencyCode:true
TransactionCurrency,
@ObjectModel.foreignKey.association: '_SalesOrganization'
SalesOrganization,
@ObjectModel.foreignKey.association: '_DistributionChannel'
DistributionChannel,
@ObjectModel.foreignKey.association: '_Division'
Division,
@ObjectModel.foreignKey.association: '_SalesOffice'
SalesOffice,
@ObjectModel.foreignKey.association: '_SalesGroup'
SalesGroup,
@ObjectModel.foreignKey.association: '_SalesOrganizationOrgUnit_2'
SalesOrganizationOrgUnitID,
@ObjectModel.foreignKey.association: '_SalesOfficeOrgUnit_2'
SalesOfficeOrgUnitID,
@ObjectModel.foreignKey.association: '_SalesGroupOrgUnit_2'
SalesGroupOrgUnitID,
ServiceOrganization,
@ObjectModel.foreignKey.association: '_SoldToPartyCountry'
SoldToPartyCountry,
_SoldToPartyCountry,
@ObjectModel.foreignKey.association: '_SoldToPartyRegion'
SoldToPartyRegion,
_SoldToPartyRegion,
SoldToParty,
_SoldToParty.BusinessPartnerFullName as BusinessPartnerFullName,
ResponsibleEmployee,
///////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////// List of Contracts by Contract Value ///////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////
@ObjectModel.foreignKey.association: '_CompanyCodeCurrency'
@Semantics.currencyCode: true
_FinanceData.CompanyCodeCurrency as CompanyCodeCurrency,
@Semantics.currencyCode: true
cast(:P_DisplayCurrency as currency) as Currency,
@Semantics: { amount : {currencyCode: 'Currency'} }
@DefaultAggregation: #SUM
currency_conversion( amount => ServiceDocNetAmount,
source_currency => TransactionCurrency,
target_currency => $parameters.P_DisplayCurrency,
exchange_rate_type => 'M',
exchange_rate_date => cast( $session.system_date as abap.dats),
error_handling => 'KEEP_UNCONVERTED'
) as ServiceDocNetAmount,
@Semantics: { amount : {currencyCode: 'Currency'} }
_Contract.TotalSrvcContrValueInDC,
@Semantics: { amount : {currencyCode: 'Currency'} }
@DefaultAggregation: #SUM
currency_conversion( amount => _Contract.AnnualSrvcContrValueInDC,
source_currency => TransactionCurrency,
target_currency => $parameters.P_DisplayCurrency,
exchange_rate_type => 'M',
exchange_rate_date => cast( $session.system_date as abap.dats),
error_handling => 'KEEP_UNCONVERTED'
) as AnnualSrvcContrValueInDC,
@Semantics: { amount : {currencyCode: 'Currency'} }
@DefaultAggregation: #SUM
currency_conversion( amount => _FinanceData.SrvcContrProfitabilityInDC,
source_currency => _FinanceData.CompanyCodeCurrency,
target_currency => $parameters.P_DisplayCurrency,
exchange_rate_type => 'M',
exchange_rate_date => cast( $session.system_date as abap.dats),
error_handling => 'KEEP_UNCONVERTED'
) as SrvcContrProfitabilityInDC,
@Semantics: { amount : {currencyCode: 'Currency'} }
@DefaultAggregation: #SUM
currency_conversion( amount => _FinanceData.TotalSrvcContrCostAmtInCc,
source_currency => _FinanceData.CompanyCodeCurrency,
target_currency => $parameters.P_DisplayCurrency,
exchange_rate_type => 'M',
exchange_rate_date => cast( $session.system_date as abap.dats),
error_handling => 'KEEP_UNCONVERTED'
) as TotalSrvcContrCostAmtInCc,
@Semantics: { amount : {currencyCode: 'Currency'} }
@DefaultAggregation: #SUM
currency_conversion( amount => _FinanceData.TotalSrvcContrRevnAmtInCc,
source_currency => _FinanceData.CompanyCodeCurrency,
target_currency => $parameters.P_DisplayCurrency,
exchange_rate_type => 'M',
exchange_rate_date => cast( $session.system_date as abap.dats),
error_handling => 'KEEP_UNCONVERTED'
) as TotalSrvcContrRevnAmtInCc,
@Semantics: { amount : {currencyCode: 'Currency'} }
@DefaultAggregation: #SUM
currency_conversion( amount => _FinanceData.YTDSrvcContrCostInDC,
source_currency => _FinanceData.CompanyCodeCurrency,
target_currency => $parameters.P_DisplayCurrency,
exchange_rate_type => 'M',
exchange_rate_date => cast( $session.system_date as abap.dats),
error_handling => 'KEEP_UNCONVERTED'
) as YTDSrvcContrCostInDC,
@Semantics: { amount : {currencyCode: 'Currency'} }
@DefaultAggregation: #SUM
currency_conversion( amount => _FinanceData.YTDSrvcContrRevnAmtInDC ,
source_currency => _FinanceData.CompanyCodeCurrency,
target_currency => $parameters.P_DisplayCurrency,
exchange_rate_type => 'M',
exchange_rate_date => cast( $session.system_date as abap.dats),
error_handling => 'KEEP_UNCONVERTED'
) as YTDSrvcContrRevnAmtInDC,
@Semantics: { amount : {currencyCode: 'Currency'} }
@DefaultAggregation: #SUM
currency_conversion( amount => _FinanceData.YTDSrvcContrPrftMarginAmtInDC ,
source_currency => _FinanceData.CompanyCodeCurrency,
target_currency => $parameters.P_DisplayCurrency,
exchange_rate_type => 'M',
exchange_rate_date => cast( $session.system_date as abap.dats),
error_handling => 'KEEP_UNCONVERTED'
) as YTDSrvcContrPrftMarginAmtInDC,
/* Associations */
_ServiceObjType,
_CompanyCodeCurrency,
_TransactionCurrency,
_CurrentDate,
_SoldToParty,
_SalesOrganization,
_DistributionChannel,
_Division,
_SalesOffice,
_SalesGroup,
@API.element.releaseState: #DEPRECATED
@API.element.successor: '_SalesOrganizationOrgUnit_2'
_SalesOrganizationOrgUnit,
_SalesOrganizationOrgUnit_2,
@API.element.releaseState: #DEPRECATED
@API.element.successor: '_SalesOfficeOrgUnit_2'
_SalesOfficeOrgUnit,
_SalesOfficeOrgUnit_2,
@API.element.releaseState: #DEPRECATED
@API.element.successor: '_SalesGroupOrgUnit_2'
_SalesGroupOrgUnit,
_SalesGroupOrgUnit_2,
@ObjectModel.association.boundFields.dataMatchesSourceAndTargetTypes: true
@API.element.releaseState: #DEPRECATED
@API.element.successor: '_SrvcDocLifecycleStatus'
_ServiceDocumentStatus,
_SrvcDocLifecycleStatus,
_CalendarMonth,
_CalendarQuarter,
_CalendarYear
}
where
ServiceObjectType = 'BUS2000112'
and ServiceContractEndDate is not initial