@AbapCatalog.sqlViewName: 'ZIDATEFUNC'
@EndUserText.label: 'Date Function'
@AccessControl.authorizationCheck: #NOT_REQUIRED
@ClientHandling.algorithm: #SESSION_VARIABLE
@VDM.viewType: #BASIC
define view ZI_DateFunction as select from C_GregorianCalDateFunction( P_Language: $session.system_language )
{
DateFunction
}
@AbapCatalog.sqlViewAppendName: 'ZXCALDATE'
@EndUserText.label: 'Date'
extend view I_CalendarDate with ZX_CalendarDate
association [0..1] to I_CalendarYear as _CalendarYearMinus1 on $projection.CalendarYearMinus1 = _CalendarYearMinus1.CalendarYear
{
@ObjectModel.foreignKey.association: '_CalendarYearMinus1'
case when calendaryear = '0000'
then calendaryear
else cast(cast(cast(calendaryear as abap.int2) - 1 as abap.char( 12 ) ) as abap.numc( 4 ) ) end as CalendarYearMinus1,
_CalendarYearMinus1
}
@AbapCatalog.sqlViewName: 'ZICALENDARDATE'
@EndUserText.label: 'Date'
define view ZI_CalendarDate as select from I_CalendarDate
{
key CalendarDate,
case when I_CalendarDate.CalendarMonth = '01' and _CalendarYearMinus1.IsLeapYear = ' '
then dats_add_days( CalendarDate, -365 , 'FAIL' )
when I_CalendarDate.CalendarMonth = '01' and _CalendarYearMinus1.IsLeapYear = 'X'
then dats_add_days( CalendarDate, -366 , 'FAIL' )
when I_CalendarDate.CalendarMonth = '02' and _CalendarYear.IsLeapYear = ' ' and _CalendarYearMinus1.IsLeapYear = ' '
then dats_add_days( CalendarDate, -365 , 'FAIL' )
when I_CalendarDate.CalendarMonth = '02' and _CalendarYear.IsLeapYear = ' ' and _CalendarYearMinus1.IsLeapYear = 'X'
then dats_add_days( CalendarDate, -366 , 'FAIL' )
when I_CalendarDate.CalendarMonth = '02' and _CalendarYear.IsLeapYear = 'X' and I_CalendarDate.CalendarDay = '29'
then dats_add_days( CalendarDate, -366 , 'FAIL' )
when I_CalendarDate.CalendarMonth = '02' and _CalendarYear.IsLeapYear = 'X'
then dats_add_days( CalendarDate, -365 , 'FAIL' )
when I_CalendarDate.CalendarMonth between '03' and '12' and _CalendarYear.IsLeapYear = ' '
then dats_add_days( CalendarDate, -365 , 'FAIL' )
when I_CalendarDate.CalendarMonth between '03' and '12' and _CalendarYear.IsLeapYear = 'X'
then dats_add_days( CalendarDate, -366 , 'FAIL' ) end as CalendarDateMinus1Year,
case when I_CalendarDate.CalendarMonth = '01'
then dats_add_days( CalendarDate, -31 , 'FAIL' )
when I_CalendarDate.CalendarMonth = '02'
then dats_add_days( CalendarDate, -31 , 'FAIL' )
when I_CalendarDate.CalendarMonth = '03' and I_CalendarDate.CalendarDay = '29' and _CalendarYear.IsLeapYear = ' '
then dats_add_days( CalendarDate, -29 , 'FAIL' )
when I_CalendarDate.CalendarMonth = '03' and I_CalendarDate.CalendarDay = '30' and _CalendarYear.IsLeapYear = ' '
then dats_add_days( CalendarDate, -30 , 'FAIL' )
when I_CalendarDate.CalendarMonth = '03' and I_CalendarDate.CalendarDay = '31' and _CalendarYear.IsLeapYear = ' '
then dats_add_days( CalendarDate, -31 , 'FAIL' )
when I_CalendarDate.CalendarMonth = '03' and _CalendarYear.IsLeapYear = ' '
then dats_add_days( CalendarDate, -28 , 'FAIL' )
when I_CalendarDate.CalendarMonth = '03' and I_CalendarDate.CalendarDay = '30' and _CalendarYear.IsLeapYear = 'X'
then dats_add_days( CalendarDate, -30 , 'FAIL' )
when I_CalendarDate.CalendarMonth = '03' and I_CalendarDate.CalendarDay = '31' and _CalendarYear.IsLeapYear = 'X'
then dats_add_days( CalendarDate, -31 , 'FAIL' )
when I_CalendarDate.CalendarMonth = '03' and _CalendarYear.IsLeapYear = 'X'
then dats_add_days( CalendarDate, -29 , 'FAIL' )
when I_CalendarDate.CalendarMonth = '04'
then dats_add_days( CalendarDate, -31 , 'FAIL' )
when I_CalendarDate.CalendarMonth = '05' and I_CalendarDate.CalendarDay = '31'
then dats_add_days( CalendarDate, -31 , 'FAIL' )
when I_CalendarDate.CalendarMonth = '05'
then dats_add_days( CalendarDate, -30 , 'FAIL' )
when I_CalendarDate.CalendarMonth = '06'
then dats_add_days( CalendarDate, -31 , 'FAIL' )
when I_CalendarDate.CalendarMonth = '07' and I_CalendarDate.CalendarDay = '31'
then dats_add_days( CalendarDate, -31 , 'FAIL' )
when I_CalendarDate.CalendarMonth = '07'
then dats_add_days( CalendarDate, -30 , 'FAIL' )
when I_CalendarDate.CalendarMonth = '08'
then dats_add_days( CalendarDate, -31 , 'FAIL' )
when I_CalendarDate.CalendarMonth = '09'
then dats_add_days( CalendarDate, -31 , 'FAIL' )
when I_CalendarDate.CalendarMonth = '10' and I_CalendarDate.CalendarDay = '31'
then dats_add_days( CalendarDate, -31 , 'FAIL' )
when I_CalendarDate.CalendarMonth = '10'
then dats_add_days( CalendarDate, -30 , 'FAIL' )
when I_CalendarDate.CalendarMonth = '11'
then dats_add_days( CalendarDate, -31 , 'FAIL' )
when I_CalendarDate.CalendarMonth = '12' and I_CalendarDate.CalendarDay = '31'
then dats_add_days( CalendarDate, -31 , 'FAIL' )
when I_CalendarDate.CalendarMonth = '12'
then dats_add_days( CalendarDate, -30 , 'FAIL' )
end as CalendarDateMinus1Month,
CalendarYear,
CalendarQuarter,
CalendarMonth,
CalendarWeek,
CalendarDay,
YearMonth,
YearQuarter,
YearWeek,
WeekDay
}
@AbapCatalog.sqlViewName: 'ZCARR'
@AccessControl.authorizationCheck:#NOT_REQUIRED
@VDM.viewType: #BASIC
@EndUserText.label: 'Airline'
define view ZSAPBC_Carr as select from scarr
{
carrid as CarrID,
url as Url,
currcode as CurrCode,
cast(case
when carrid = 'LH' or carrid = 'AB' then 'Germany'
when carrid = 'AA' or carrid = 'CO' or carrid = 'DL' or
carrid = 'NW' or carrid = 'WA' then 'US'
when carrid = 'AC' then 'Canada'
when carrid = 'AF' then 'France'
when carrid = 'AZ' then 'Italy'
when carrid = 'BA' then 'UK'
when carrid = 'FJ' then 'Fiji'
when carrid = 'NG' then 'Austria'
when carrid = 'JL' then 'Japan'
when carrid = 'QF' then 'Australia'
when carrid = 'SA' then 'South Africa'
when carrid = 'SQ' then 'Singapure'
when carrid = 'SR' then 'Swirzerland'
when carrid = 'UA' then 'US'
else 'Other'
end as abap.char( 13 )) as Region
}
@AbapCatalog.sqlViewName: 'ZREG'
@AccessControl.authorizationCheck:#NOT_REQUIRED
@EndUserText.label: 'Region'
@VDM.viewType: #BASIC
define view ZSAPBC_Region as select distinct from ZSAPBC_Carr {
key Region,
case
when Region = 'Germany' or Region = 'France' or Region = 'Italy' or
Region = 'UK' or Region = 'Austria' or Region = 'Swirzerland' then 'Europe'
when Region = 'US' or Region = 'Canada' then 'North America'
when Region = 'South Africa' then 'Africa'
when Region = 'Fiji' or Region = 'Japan' or Region = 'Singapure' then 'Asia'
else 'Other'
end as MainRegion
}
where Region <> 'Australia'
union
select distinct from scarr {
key 'Europe' as Region,
'World' as MainRegion
}
union
select distinct from scarr {
key 'North America' as Region,
'World' as MainRegion
}
union
select distinct from scarr {
key 'Asia' as Region,
'World' as MainRegion
}
union
select distinct from scarr {
key 'Australia' as Region,
'World' as MainRegion
}
union
select distinct from scarr {
key 'Africa' as Region,
'World' as MainRegion
}
union
select distinct from scarr {
key 'World' as Region,
'' as MainRegion
}
@AbapCatalog.sqlViewName: 'ZCARRTEXT'
@Analytics: {dataCategory: #TEXT, dataExtraction.enabled: true}
@AccessControl.authorizationCheck: #NOT_ALLOWED
@EndUserText.label: 'Carrier'
define view ZSAPBC_CarrText as select from scarr {
key carrid as CarrId,
@Semantics.text: true
carrname as CarrierName
}
@AbapCatalog.sqlViewName: 'ZCARRDIM'
@Analytics: {dataCategory: #DIMENSION, dataExtraction.enabled: true}
@ObjectModel.representativeKey: 'Carrid'
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'Carrier'
define view ZSAPBC_CarrDimension as select from ZSAPBC_Carr
association [0..1] to ZSAPBC_CarrText as _Text on $projection.CarrID = _Text.CarrId
{
@ObjectModel.text.association: '_Text'
key CarrID,
Url,
CurrCode,
@EndUserText.label: 'Region'
Region,
_Text
}
@AbapCatalog.sqlViewName: 'ZREGIONHIER'
@Analytics: { dataCategory: #HIERARCHY, dataExtraction.enabled: true }
@ObjectModel.representativeKey: 'Region'
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'Region'
@Hierarchy.parentChild.name: 'REGION_GEO'
@Hierarchy.parentChild.label: 'Region Geography'
@Hierarchy.parentChild:
{ recurse: { parent: 'ParentNode', child: 'HierarchyNode' } }
define view ZSAPBC_RegionHierarchy as select distinct from ZSAPBC_Region
association[0..1] to ZSAPBC_RegionDimension as _Dimension on $projection.HierarchyNode = _Dimension.Region
{
@ObjectModel.foreignKey.association: '_Dimension'
key Region as HierarchyNode,
MainRegion as ParentNode,
_Dimension
}
@AbapCatalog.sqlViewName: 'ZREGIONDIM'
@Analytics: { dataCategory: #DIMENSION, dataExtraction.enabled: true }
@ObjectModel.representativeKey: 'Region'
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'Region'
define view ZSAPBC_RegionDimension as select from ZSAPBC_Region
association[0..*] to ZSAPBC_RegionHierarchy as _Hierarchy on $projection.Region = _Hierarchy.HierarchyNode
{
@ObjectModel.Hierarchy.association: '_Hierarchy'
key Region,
@EndUserText.label: 'Main Region'
MainRegion,
_Hierarchy
}
@AbapCatalog.sqlViewName: 'ZSFLIGHTFACT'
@AbapCatalog.compiler.compareFilter: true
@Analytics.dataCategory: #FACT
@AccessControl.authorizationCheck:#NOT_REQUIRED
@EndUserText.label: 'Flight'
define view ZSAPBC_FlightFact with parameters
@Consumption.defaultValue: 'CAD'
P_DisplayCurrency : s_currcode
as select from sflight inner join ZSAPBC_Carr as scarr
on sflight.carrid = scarr.CarrID {
key sflight.carrid as CarrId,
key sflight.connid as ConnId,
key sflight.fldate as FlightDate,
scarr.Region as Region,
$parameters.P_DisplayCurrency as Currency,
currency_conversion(
amount => sflight.paymentsum,
source_currency => sflight.currency,
target_currency => $parameters.P_DisplayCurrency,
exchange_rate_date => sflight.fldate,
exchange_rate_type => 'M',
error_handling => 'SET_TO_NULL' // otherwise data inconsistencies cause a dump
) as Payment,
cast('EA' as abap.unit(3) ) as Unit,
seatsmax + seatsmax_b + seatsmax_f as SeatsMax,
seatsocc + seatsocc_b + seatsocc_f as SeatsOcc
}
@AbapCatalog.sqlViewName: 'ZSFLIGHTCUBE'
@AbapCatalog.compiler.compareFilter: true
@Analytics: { dataCategory: #CUBE, dataExtraction.enabled: true }
@AccessControl.authorizationCheck:#CHECK
@EndUserText.label: 'Flight Cube'
define view ZSAPBC_FlightCube with parameters
P_DisplayCurrency : s_currcode,
P_StartDate: dats,
P_EndDate: dats
as select from ZSAPBC_FlightFact( P_DisplayCurrency: $parameters.P_DisplayCurrency ) as flight inner join I_CalendarDate as Calendar on flight.FlightDate = Calendar.CalendarDate
association [1..1] to ZSAPBC_CarrDimension as _Carr on $projection.CarrId = _Carr.CarrID
association [1..1] to ZSAPBC_RegionDimension as _Region on $projection.Region = _Region.Region
{
key 'CURR' as PeriodType,
@ObjectModel.foreignKey.association: '_Carr'
key flight.CarrId,
key flight.ConnId,
@EndUserText.label: 'Date'
key Calendar.CalendarDate as FlightDate,
@EndUserText.label: 'Region'
@ObjectModel.foreignKey.association: '_Region'
flight.Region,
@Semantics.calendar.yearWeek: true
@EndUserText.label: 'Week'
Calendar.YearWeek as FlightWeek,
@Semantics.calendar.yearMonth: true
@EndUserText.label: 'Month'
Calendar.YearMonth as FlightMonth,
@Semantics.calendar.year: true
@EndUserText.label: 'Year'
Calendar.CalendarYear as FlightYear,
@EndUserText.label: 'Currency'
Currency,
@Semantics.unitOfMeasure: true
@EndUserText.label: 'UOM'
flight.Unit,
@Semantics.unitOfMeasure: true
@EndUserText.label: '%'
cast( 'Z%' as abap.unit( 3 ) ) as PercentUnitOfMeasure,
@Semantics.amount.currencyCode: 'currency'
@EndUserText.label: 'Payment'
@DefaultAggregation: #SUM
flight.Payment,
@Semantics.quantity.unitOfMeasure: 'unit'
@DefaultAggregation: #SUM
@EndUserText.label: 'Seats Max'
SeatsMax,
@Semantics.quantity.unitOfMeasure: 'unit'
@DefaultAggregation: #SUM
@EndUserText.label: 'Seats Occ'
SeatsOcc,
@Semantics.amount.currencyCode: 'currency'
@EndUserText.label: 'Payment Ref'
@DefaultAggregation: #SUM
cast(0 as s_sum) as payment_ref,
@Semantics.quantity.unitOfMeasure: 'unit'
@DefaultAggregation: #SUM
@EndUserText.label: 'Seats Max Ref'
cast(0 as s_seatsmax) as SeatsMaxRef,
@Semantics.quantity.unitOfMeasure: 'unit'
@DefaultAggregation: #SUM
@EndUserText.label: 'Seats Occ Ref'
cast(0 as s_seatsocc) as SeatsOccRef,
@Semantics.quantity.unitOfMeasure: 'PercentUnitOfMeasure'
@DefaultAggregation: #MAX
@EndUserText.label: '100%'
100 as HundredPercent,
_Carr,
_Region
}
where flight.FlightDate between $parameters.P_StartDate and $parameters.P_EndDate
union all
select from ZSAPBC_FlightFact( P_DisplayCurrency: $parameters.P_DisplayCurrency ) as flight
inner join ZI_CalendarDate as Calendar on flight.FlightDate = Calendar.CalendarDateMinus1Year
association [1..1] to ZSAPBC_CarrDimension as _Carr on $projection.CarrId = _Carr.CarrID
association [1..1] to ZSAPBC_RegionDimension as _Region on $projection.Region = _Region.Region
{
key 'PREV' as PeriodType,
@ObjectModel.foreignKey.association: '_Carr'
key flight.CarrId,
key flight.ConnId,
@EndUserText.label: 'Date'
key Calendar.CalendarDate as FlightDate,
@EndUserText.label: 'Region'
@ObjectModel.foreignKey.association: '_Region'
flight.Region,
@Semantics.calendar.yearWeek: true
@EndUserText.label: 'Week'
Calendar.YearWeek as FlightWeek,
@Semantics.calendar.yearMonth: true
@EndUserText.label: 'Month'
Calendar.YearMonth as FlightMonth,
@Semantics.calendar.year: true
@EndUserText.label: 'Year'
Calendar.CalendarYear as FlightYear,
@EndUserText.label: 'Currency'
Currency,
@Semantics.unitOfMeasure: true
@EndUserText.label: 'UOM'
flight.Unit,
@Semantics.unitOfMeasure: true
@EndUserText.label: '%'
cast( 'Z%' as abap.unit( 3 ) ) as PercentUnitOfMeasure,
@Semantics.amount.currencyCode: 'currency'
@EndUserText.label: 'Payment'
@DefaultAggregation: #SUM
cast(0 as s_sum) as payment,
@Semantics.quantity.unitOfMeasure: 'unit'
@DefaultAggregation: #SUM
@EndUserText.label: 'Seats Max'
cast(0 as s_seatsmax) as SeatsMax,
@Semantics.quantity.unitOfMeasure: 'unit'
@DefaultAggregation: #SUM
@EndUserText.label: 'Seats Occ'
cast(0 as s_seatsocc) as SeatsOcc,
@Semantics.amount.currencyCode: 'currency'
@EndUserText.label: 'Payment Ref'
@DefaultAggregation: #SUM
flight.Payment as payment_ref,
@Semantics.quantity.unitOfMeasure: 'unit'
@DefaultAggregation: #SUM
@EndUserText.label: 'Seats Max Ref'
flight.SeatsMax as SeatsMaxRef,
@Semantics.quantity.unitOfMeasure: 'unit'
@DefaultAggregation: #SUM
@EndUserText.label: 'Seats Occ Ref'
flight.SeatsOcc as SeatsOccRef,
@Semantics.quantity.unitOfMeasure: 'PercentUnitOfMeasure'
@DefaultAggregation: #MAX
@EndUserText.label: '100%'
100 as HundredPercent,
_Carr,
_Region
}
where Calendar.CalendarDate between $parameters.P_StartDate and $parameters.P_EndDate
@AbapCatalog.sqlViewName: 'ZFLIGHTQUERY'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck:#CHECK
@VDM.viewType: #CONSUMPTION
@Analytics.query: true
@OData.publish: true
@EndUserText.label: 'Flight Query'
define view ZSAPBC_FlightQuery with parameters
@EndUserText.label: 'Display Currency'
@Consumption.defaultValue: 'CAD'
P_DisplayCurrency : s_currcode,
@EndUserText.label: 'Date Function'
@Consumption: { valueHelp: '_DateFunction.DateFunction', defaultValue: 'YEARTODATE' }
P_DateFunction : datefunctionid,
@Consumption.derivation: { lookupEntity: 'C_SglGregorianCalDateFunction',
resultElement: 'DateFunctionStartDate', binding: [ {
targetParameter: 'P_DateFunction', type: #PARAMETER, value : 'P_DateFunction' },
{ targetParameter : 'P_Language' , type : #SYSTEM_FIELD, value : '#SYSTEM_LANGUAGE' } ]
}
@Consumption.hidden: true
P_StartDate: /srmsmc/puc_spend_valid_from ,
@Consumption.derivation: { lookupEntity: 'C_SglGregorianCalDateFunction',
resultElement: 'DateFunctionEndDate', binding: [ {
targetParameter: 'P_DateFunction', type: #PARAMETER, value : 'P_DateFunction' },
{ targetParameter : 'P_Language' , type : #SYSTEM_FIELD, value : '#SYSTEM_LANGUAGE' } ]
}
@Consumption.hidden: true
P_EndDate: /srmsmc/puc_spend_valid_to
as select from ZSAPBC_FlightCube( P_DisplayCurrency: $parameters.P_DisplayCurrency,
P_StartDate: $parameters.P_StartDate,
P_EndDate: $parameters.P_EndDate )
association[1] to ZI_DateFunction as _DateFunction on _DateFunction.DateFunction <> ''
{
Region,
@AnalyticsDetails.query.axis: #FREE
ConnId,
@AnalyticsDetails.query.axis: #FREE
@Consumption.filter: {selectionType: #SINGLE, multipleSelections: true, mandatory: false }
CarrId,
@AnalyticsDetails.query.axis: #FREE
FlightDate,
@AnalyticsDetails.query.axis: #FREE
FlightWeek,
@AnalyticsDetails.query.axis: #FREE
FlightMonth,
@AnalyticsDetails.query.axis: #FREE
FlightYear,
@AnalyticsDetails.query.axis: #FREE
Currency,
@AnalyticsDetails.query.axis: #FREE
Unit,
@AnalyticsDetails.query.axis: #FREE
@AnalyticsDetails.query.hidden: true
Payment,
@AnalyticsDetails.query.axis: #FREE
@AnalyticsDetails.query.hidden: true
SeatsMax,
@AnalyticsDetails.query.axis: #FREE
@AnalyticsDetails.query.hidden: true
SeatsOcc,
@AnalyticsDetails.query.axis: #FREE
@AnalyticsDetails.query.hidden: true
payment_ref,
@AnalyticsDetails.query.axis: #FREE
@AnalyticsDetails.query.hidden: true
SeatsMaxRef,
@AnalyticsDetails.query.axis: #FREE
@AnalyticsDetails.query.hidden: true
SeatsOccRef,
@AnalyticsDetails.query.axis: #COLUMNS
@AnalyticsDetails.query.decimals: 1
@EndUserText.label: 'Seats Occ Rate'
@AnalyticsDetails.query.formula: 'NDIV0( NODIM( SeatsOcc ) / NODIM( SeatsMax ) ) * HundredPercent'
0 as SeatsOccRate,
@AnalyticsDetails.query.axis: #COLUMNS
@AnalyticsDetails.query.decimals: 1
@EndUserText.label: 'Seats Occ Rate Ref'
@AnalyticsDetails.query.formula: 'NDIV0( NODIM( SeatsOccRef ) / NODIM( SeatsMaxRef ) ) * HundredPercent'
0 as SeatsOccRateRef,
_DateFunction
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
5 | |
3 | |
2 | |
2 | |
2 | |
2 | |
2 | |
2 | |
2 | |
2 |