@EndUserText.label: 'Flight Table Function'
define table function zsapbc_flight_tabl_func
with parameters
p_disp_currency: s_currcode
returns
{
mandt: abap.clnt;
carrid: s_carr_id;
connid: s_conn_id;
fldate: s_date;
@Semantics.currencyCode: true
currency: s_currcode;
@Semantics.currencyCode: true
disp_currency: s_currcode;
@Semantics.amount.currencyCode: 'currency'
paymentsum: s_sum;
@Semantics.amount.currencyCode: 'disp_currency'
payment_disp_curr: s_sum;
@Semantics.amount.currencyCode: 'disp_currency'
payment_disp_curr_total: s_sum;
flyear: abap.char(4);
}
implemented by method
zcl_sapbc_flight_tabl_func=>function;
class zcl_sapbc_flight_tabl_func definition
public
final
create public .
public section.
interfaces if_amdp_marker_hdb.
class-methods function for table function zsapbc_flight_tabl_func.
protected section.
private section.
endclass.
class zcl_sapbc_flight_tabl_func implementation.
method function by database function
for hdb language sqlscript
options read-only
using sflight.
it_data =
select mandt, carrid, connid, fldate,
currency, :p_disp_currency as disp_currency,
paymentsum,
CONVERT_CURRENCY(amount=>paymentsum,
"SOURCE_UNIT" =>currency,
"SCHEMA" => 'SAPA4H',
"CONVERSION_TYPE" => 'M',
"TARGET_UNIT" => :p_disp_currency,
"REFERENCE_DATE" =>fldate,
"ERROR_HANDLING"=>'set to null',
"CLIENT" => '000') as payment_disp_curr,
substr( fldate, 1, 4) as flyear
from sflight;
return
select mandt, carrid, connid, fldate, currency, disp_currency,
paymentsum , payment_disp_curr,
sum( payment_disp_curr ) over ( partition by flyear ) as payment_disp_curr_total,
flyear
from :it_data;
endmethod.
endclass.
@AbapCatalog.sqlViewName: 'zsflight_fact4'
@AbapCatalog.compiler.compareFilter: true
@analytics.dataCategory: #FACT
@AccessControl.authorizationCheck:#NOT_REQUIRED
@EndUserText.label: 'Flight Fact 4'
define view
zsapbc_flight_fact4 with parameters
@Consumption.defaultValue: 'CAD'
p_display_currency : s_currcode
as select from sflight inner join zsapbc_carr as scarr
on sflight.carrid = scarr.carrid
inner join zsapbc_flight_tabl_func( p_disp_currency:
$parameters.p_display_currency ) as tabl_func
on sflight.carrid = tabl_func.carrid
and sflight.connid = tabl_func.connid
and sflight.fldate = tabl_func.fldate {
key sflight.carrid,
key sflight.connid,
key sflight.fldate,
scarr.region,
cast(substring(sflight.fldate,1,6) as abap.numc( 6 )) as flmonth,
cast(substring(sflight.fldate,1,4) as abap.numc( 4 )) as flyear,
sflight.currency,
sflight.paymentsum as payment,
$parameters.p_display_currency as disp_curr,
currency_conversion(
amount => sflight.paymentsum,
source_currency => sflight.currency,
target_currency => $parameters.p_display_currency,
exchange_rate_date => sflight.fldate,
exchange_rate_type => 'M',
error_handling => 'SET_TO_NULL'
) as payment_disp_curr,
tabl_func.payment_disp_curr_total,
cast('EA' as abap.unit(3) ) as unit,
sflight.seatsmax,
sflight.seatsmax_b,
sflight.seatsmax_f,
seatsmax + seatsmax_b + seatsmax_f as seatsmax_total,
sflight.seatsocc,
sflight.seatsocc_b,
sflight.seatsocc_f,
seatsocc + seatsocc_b + seatsocc_f as seatsocc_total
}
@AbapCatalog.sqlViewName: 'ZSFLIGHT_CUBE4'
@AbapCatalog.compiler.compareFilter: true
@analytics: { dataCategory: #CUBE, dataExtraction.enabled: true }
@AccessControl.authorizationCheck:#CHECK
@EndUserText.label: 'Flight Cube 4'
define view zsapbc_flight_cube4 with parameters
p_display_currency : s_currcode,
p_year_1: rscalyear,
p_year_2: rscalyear
as select from zsapbc_flight_fact4( p_display_currency: $parameters.p_display_currency ) as flight
association [1..1] to zsapbc_carr_dimension as _carr
on $projection.carrid = flight.carrid
association [0..*] to zsapbc_region_dimension3 as _region
on $projection.region = flight.region {
@ObjectModel.foreignKey.association: '_carr'
key flight.carrid,
key flight.connid,
@EndUserText.label: 'Date'
key flight.fldate,
@EndUserText.label: 'Region'
@ObjectModel.foreignKey.association: '_region'
flight.region,
_carr,
_region,
@Semantics.calendar.yearMonth: true
@EndUserText.label: 'Month'
flight.flmonth,
@Semantics.calendar.year: true
@EndUserText.label: 'Year'
flight.flyear,
@Semantics.currencyCode: true
@EndUserText.label: 'Booking Currency'
flight.currency,
@Semantics.amount.currencyCode: 'Currency'
@DefaultAggregation: #SUM
@EndUserText.label: 'Booking (bc)'
flight.payment,
@Semantics.quantity.unitOfMeasure: 'Currency'
@DefaultAggregation: #SUM
@EndUserText.label: 'Booking (bc) Year 1'
case when flyear = :p_year_1 then payment
else 0
end as payment_year_1,
@Semantics.quantity.unitOfMeasure: 'Currency'
@DefaultAggregation: #SUM
@EndUserText.label: 'Booking (bc) Year 2'
case when flyear = :p_year_2 then payment
else 0
end as payment_year_2,
@EndUserText.label: 'Display Currency'
$parameters.p_display_currency as disp_curr,
@Semantics.amount.currencyCode: 'disp_curr'
@EndUserText.label: 'Booking (dc)'
@DefaultAggregation: #SUM
flight.payment_disp_curr,
@Semantics.quantity.unitOfMeasure: 'disp_curr'
@DefaultAggregation: #SUM
@EndUserText.label: 'Booking (dc) Year 1'
case when flyear = :p_year_1 then payment_disp_curr
else 0
end as payment_disp_curr_year_1,
@Semantics.quantity.unitOfMeasure: 'disp_curr'
@DefaultAggregation: #SUM
@EndUserText.label: 'Booking (dc) Year 2'
case when flyear = :p_year_2 then payment_disp_curr
else 0
end as payment_disp_curr_year_2,
@Semantics.quantity.unitOfMeasure: 'disp_curr'
@DefaultAggregation: #MAX
@EndUserText.label: 'Booking (dc) Ttl Year 1'
case when flyear = :p_year_1 then payment_disp_curr_total
else 0
end as payment_disp_curr_total_year_1,
@Semantics.quantity.unitOfMeasure: 'disp_curr'
@DefaultAggregation: #MAX
@EndUserText.label: 'Booking (dc) Ttl Year 2'
case when flyear = :p_year_2 then payment_disp_curr_total
else 0
end as payment_disp_curr_total_year_2,
@Semantics.unitOfMeasure: true
@EndUserText.label: 'UOM'
flight.unit,
@Semantics.unitOfMeasure: true
@EndUserText.label: '%'
cast( '%' as abap.unit( 3 ) ) as unit_percent,
@Semantics.quantity.unitOfMeasure: 'unit'
@DefaultAggregation: #SUM
@EndUserText.label: 'Seats Max Econ.'
flight.seatsmax,
@Semantics.quantity.unitOfMeasure: 'unit'
@DefaultAggregation: #SUM
@EndUserText.label: 'Seats Max Bus.'
flight.seatsmax_b,
@Semantics.quantity.unitOfMeasure: 'unit'
@DefaultAggregation: #SUM
@EndUserText.label: 'Seats Max 1st'
flight.seatsmax_f,
@Semantics.quantity.unitOfMeasure: 'unit'
@DefaultAggregation: #SUM
@EndUserText.label: 'Seats Max Total'
seatsmax_total,
@Semantics.quantity.unitOfMeasure: 'unit'
@DefaultAggregation: #SUM
@EndUserText.label: 'Seats Max Year 1'
case when flyear = :p_year_1 then seatsmax_total
else 0
end as seatsmax_total_year_1,
@Semantics.quantity.unitOfMeasure: 'unit'
@DefaultAggregation: #SUM
@EndUserText.label: 'Seats Max Year 2'
case when flyear = :p_year_2 then seatsmax_total
else 0
end as seatsmax_total_year_2,
@Semantics.quantity.unitOfMeasure: 'unit'
@DefaultAggregation: #SUM
@EndUserText.label: 'Seats Occ Econ.'
flight.seatsocc,
@Semantics.quantity.unitOfMeasure: 'unit'
@DefaultAggregation: #SUM
@EndUserText.label: 'Seats Occ Bus.'
flight.seatsocc_b,
@Semantics.quantity.unitOfMeasure: 'unit'
@DefaultAggregation: #SUM
@EndUserText.label: 'Seats Occ 1st'
flight.seatsocc_f,
@Semantics.quantity.unitOfMeasure: 'unit'
@DefaultAggregation: #SUM
@EndUserText.label: 'Seats Occ Total'
seatsocc_total,
@Semantics.quantity.unitOfMeasure: 'unit'
@DefaultAggregation: #SUM
@EndUserText.label: 'Seats Occ Year 1'
case when flyear = :p_year_1 then seatsocc_total
else 0
end as seatsocc_total_year_1,
@Semantics.quantity.unitOfMeasure: 'unit'
@DefaultAggregation: #SUM
@EndUserText.label: 'Seats Occ Year 2'
case when flyear = :p_year_2 then seatsocc_total
else 0
end as seatsocc_total_year_2,
@Semantics.quantity.unitOfMeasure: 'unit_percent'
@DefaultAggregation: #MAX
@EndUserText.label: '100%'
100 as hundred
}
@AbapCatalog.sqlViewName: 'ZFLIGHT_QUERY4'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck:#CHECK
@VDM.viewType: #CONSUMPTION
@Analytics.query: true
@EndUserText.label: 'Flight Query 4'
define view zsapbc_flight_query4 with parameters
@Consumption.hidden: false
@Environment.systemField: #SYSTEM_DATE
@EndUserText.label: 'Key Date'
p_keydate: abap.dats,
@EndUserText.label: 'Display Currency'
@Consumption.defaultValue: 'CAD'
p_display_currency : s_currcode,
@EndUserText.label: 'Year 1'
@Consumption.derivation: {lookupEntity: 'ZSAPBC_CURR_YEAR_ADD_N',
resultElement: 'p_year' ,
binding: [{ targetParameter: 'p_offset',
type: #CONSTANT,
value: -1 }]}
p_year_1: rscalyear,
@EndUserText.label: 'Year 2'
@Consumption.derivation: {lookupEntity: 'ZSAPBC_CURR_YEAR_ADD_N',
resultElement: 'p_year',
binding: [{ targetParameter: 'p_offset',
type:#CONSTANT ,
value: 0 }] }
p_year_2: rscalyear
as select from zsapbc_flight_cube4(
p_display_currency: $parameters.p_display_currency,
p_year_1: $parameters.p_year_1,
p_year_2: $parameters.p_year_2 ) {
@AnalyticsDetails.query.axis: #ROWS
@AnalyticsDetails.query.display: #TEXT
@AnalyticsDetails.query.displayHierarchy: #ON
@Consumption.filter: { selectionType: #HIERARCHY_NODE,
multipleSelections: true,
mandatory: false }
@AnalyticsDetails.query.hierarchyInitialLevel: 3
zsapbc_flight_cube4._region[1:datefrom >= $parameters.p_keydate and
dateto <= $parameters.p_keydate].region,
@AnalyticsDetails.query.axis: #COLUMNS
seatsocc_total_year_1,
@AnalyticsDetails.query.axis: #COLUMNS
seatsmax_total_year_1,
@AnalyticsDetails.query.axis: #COLUMNS
@AnalyticsDetails.query.decimals: 1
@EndUserText.label: 'Seats Occ (%) Year 1'
@AnalyticsDetails.query.formula: 'NDIV0( NODIM( seatsocc_total_year_1 ) /
NODIM( seatsmax_total_year_1 ) ) * hundred'
1 as seats_occ_prc_year_1,
@AnalyticsDetails.query.axis: #COLUMNS
seatsocc_total_year_2,
@AnalyticsDetails.query.axis: #COLUMNS
seatsmax_total_year_2,
@AnalyticsDetails.query.axis: #COLUMNS
@AnalyticsDetails.query.decimals: 1
@EndUserText.label: 'Seats Occ (%) Year 2'
@AnalyticsDetails.query.formula: 'NDIV0( NODIM( seatsocc_total_year_2 ) /
NODIM( seatsmax_total_year_2 ) ) * hundred'
1 as seats_occ_prc_year_2,
@AnalyticsDetails.query.axis: #COLUMNS
payment_year_1,
@AnalyticsDetails.query.axis: #COLUMNS
payment_year_2,
@AnalyticsDetails.query.axis: #COLUMNS
payment_disp_curr_year_1,
@AnalyticsDetails.query.axis: #COLUMNS
payment_disp_curr_year_2,
@AnalyticsDetails.query.axis: #COLUMNS
@AnalyticsDetails.query.hidden
payment_disp_curr_total_year_1,
@AnalyticsDetails.query.axis: #COLUMNS
@AnalyticsDetails.query.hidden
payment_disp_curr_total_year_2,
@AnalyticsDetails.query.axis: #COLUMNS
@AnalyticsDetails.query.decimals: 1
@EndUserText.label: '(%) Payment (dc) Year 1'
@AnalyticsDetails.query.formula:
'NDIV0( NODIM( payment_disp_curr_year_1 ) / NODIM( payment_disp_curr_total_year_1 ) ) * hundred '
1 as payment_dc_ttl_prc_year_1,
@AnalyticsDetails.query.axis: #COLUMNS
@AnalyticsDetails.query.decimals: 1
@EndUserText.label: '(%) Payment (dc) Year 2'
@AnalyticsDetails.query.formula:
'NDIV0( NODIM( payment_disp_curr_year_2 ) /
NODIM( payment_disp_curr_total_year_2 ) ) * hundred '
1 as payment_dc_ttl_prc_year_2,
@AnalyticsDetails.query.axis: #FREE
connid,
@AnalyticsDetails.query.axis: #FREE
@Consumption.filter: {selectionType: #SINGLE,
multipleSelections: true,
mandatory: false }
carrid,
@AnalyticsDetails.query.axis: #FREE
fldate,
@AnalyticsDetails.query.axis: #FREE
flmonth,
@AnalyticsDetails.query.axis: #FREE
flyear,
@AnalyticsDetails.query.axis: #FREE
currency,
@AnalyticsDetails.query.axis: #FREE
disp_curr,
@AnalyticsDetails.query.axis: #FREE
unit
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
3 | |
2 | |
2 | |
2 | |
2 | |
1 | |
1 | |
1 | |
1 | |
1 |