@AbapCatalog.sqlViewName: 'PMDREPPERIOD'
@ClientHandling.algorithm: #SESSION_VARIABLE
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #NOT_REQUIRED
@VDM.viewType: #COMPOSITE
@ObjectModel.usageType.serviceQuality: #B
@VDM.private:true
@AbapCatalog.preserveKey:true
@ObjectModel.representativeKey: 'MarketDataReportingPeriod'
define view P_MarketDataReportingPeriod
with parameters
@Environment.systemField: #SYSTEM_DATE
P_KeyDate : vdm_v_end_date
// 1_D: key date
as select from I_CalendarDate as CalendarDate
{ key CalendarDate.CalendarDate as CalendarDate,
key '1_D' as MarketDataReportingPeriod }
where CalendarDate.CalendarDate = $parameters.P_KeyDate
// 5_D: last 5 days
union all
select from I_CalendarDate as CalendarDate
{ key CalendarDate.CalendarDate as CalendarDate,
key '5_D' as MarketDataReportingPeriod }
where CalendarDate.CalendarDate < $parameters.P_KeyDate
and CalendarDate.CalendarDate >= DATS_ADD_DAYS($parameters.P_KeyDate, - 5, 'NULL')
// 5_D: key date
union all
select from I_CalendarDate as CalendarDate
{ key CalendarDate.CalendarDate as CalendarDate,
key '5_D' as MarketDataReportingPeriod }
where CalendarDate.CalendarDate = $parameters.P_KeyDate
union all
// 1_M: each Monday + Wednesday + Friday of last month
select from I_CalendarDate as CalendarDate
{ key CalendarDate.CalendarDate as CalendarDate,
key '1_M' as MarketDataReportingPeriod }
where CalendarDate.CalendarDate < $parameters.P_KeyDate
and CalendarDate.CalendarDate >= DATS_ADD_MONTHS($parameters.P_KeyDate, - 1, 'NULL')
and ( CalendarDate.WeekDay = '1'
or CalendarDate.WeekDay = '3'
or CalendarDate.WeekDay = '5' )
// 1_M: key date
union all
select from I_CalendarDate as CalendarDate
{ key CalendarDate.CalendarDate as CalendarDate,
key '1_M' as MarketDataReportingPeriod }
where CalendarDate.CalendarDate = $parameters.P_KeyDate
union all
// 3_M: each Monday of last 3 month
select from I_CalendarDate as CalendarDate
{ key CalendarDate.CalendarDate as CalendarDate,
key '3_M' as MarketDataReportingPeriod }
where CalendarDate.CalendarDate < $parameters.P_KeyDate
and CalendarDate.CalendarDate >= DATS_ADD_MONTHS($parameters.P_KeyDate, - 3, 'NULL')
and CalendarDate.WeekDay = '1'
// 3_M: key date
union all
select from I_CalendarDate as CalendarDate
{ key CalendarDate.CalendarDate as CalendarDate,
key '3_M' as MarketDataReportingPeriod }
where CalendarDate.CalendarDate = $parameters.P_KeyDate
union all
// 6_M: every 1st and 15th of last 6 month
select from I_CalendarDate as CalendarDate
{ key CalendarDate.CalendarDate as CalendarDate,
key '6_M' as MarketDataReportingPeriod }
where CalendarDate.CalendarDate < $parameters.P_KeyDate
and CalendarDate.CalendarDate >= DATS_ADD_MONTHS($parameters.P_KeyDate, - 6, 'NULL')
and ( CalendarDate.CalendarDay = '01'
or CalendarDate.CalendarDay = '15' )
// 6_M: key date
union all
select from I_CalendarDate as CalendarDate
{ key CalendarDate.CalendarDate as CalendarDate,
key '6_M' as MarketDataReportingPeriod }
where CalendarDate.CalendarDate = $parameters.P_KeyDate
union all
// 1_Y: every 1st of last 12 month
select from I_CalendarDate as CalendarDate
{ key CalendarDate.CalendarDate as CalendarDate,
key '1_Y' as MarketDataReportingPeriod }
where CalendarDate.CalendarDate < $parameters.P_KeyDate
and CalendarDate.CalendarDate >= DATS_ADD_MONTHS($parameters.P_KeyDate, - 12, 'NULL')
and ( CalendarDate.CalendarDay = '01'
or CalendarDate.CalendarDay = '15' )
// 1_Y: key date
union all
select from I_CalendarDate as CalendarDate
{ key CalendarDate.CalendarDate as CalendarDate,
key '1_Y' as MarketDataReportingPeriod }
where CalendarDate.CalendarDate = $parameters.P_KeyDate
// as select from I_CalendarDate as CalendarDate
// {
// key cast(CalendarDate.CalendarDate as vdm_v_key_date) as CalendarDate,
// key cast('5_D' as ftr_md_reportingperiod ) as MarketDataReportingPeriod
//
// } where CalendarDate.CalendarDate >= DATS_ADD_DAYS($parameters.P_KeyDate,-5,'NULL') and
// CalendarDate.CalendarDate <= $parameters.P_KeyDate // 5 days
//
// union all
//
// select from I_CalendarDate as CalendarDate
// {
// key cast(CalendarDate.CalendarDate as vdm_v_key_date) as CalendarDate,
// key cast('1_M' as ftr_md_reportingperiod ) as MarketDataReportingPeriod
//
// } where CalendarDate.CalendarDate >= DATS_ADD_MONTHS($parameters.P_KeyDate,-1,'NULL') and
// CalendarDate.CalendarDate <= $parameters.P_KeyDate // 1 Month
// and
// (
// CalendarDate.WeekDay = '1'
// or CalendarDate.WeekDay = '3'
// or CalendarDate.WeekDay = '5'
// or CalendarDate.CalendarDate = $parameters.P_KeyDate
// )
//
// union all
//
// select from I_CalendarDate as CalendarDate
// {
// key cast(CalendarDate.CalendarDate as vdm_v_key_date) as CalendarDate,
// key cast('3_M' as ftr_md_reportingperiod ) as MarketDataReportingPeriod
//
// } where CalendarDate.CalendarDate >= DATS_ADD_MONTHS($parameters.P_KeyDate,-3,'NULL') and
// CalendarDate.CalendarDate <= $parameters.P_KeyDate //3 Months
// and (
// CalendarDate.WeekDay = '1'
// or CalendarDate.CalendarDate = $parameters.P_KeyDate
// )
// union all
//
// select from I_CalendarDate as CalendarDate
// {
// key cast(CalendarDate.CalendarDate as vdm_v_key_date) as CalendarDate,
// key cast('6_M' as ftr_md_reportingperiod ) as MarketDataReportingPeriod
// } where CalendarDate.CalendarDate >= DATS_ADD_MONTHS($parameters.P_KeyDate,-6,'NULL') and
// CalendarDate.CalendarDate <= $parameters.P_KeyDate //6 Months
// and(
// CalendarDate.CalendarDay = '01'
// or CalendarDate.CalendarDay = '15'
// or CalendarDate.CalendarDate = $parameters.P_KeyDate )
//
// union all
// select from I_CalendarDate as CalendarDate
// {
// key cast(CalendarDate.CalendarDate as vdm_v_key_date) as CalendarDate,
// key cast('1_Y' as ftr_md_reportingperiod ) as MarketDataReportingPeriod
// } where
// CalendarDate.CalendarDate >= DATS_ADD_MONTHS($parameters.P_KeyDate,-12,'NULL') and
// CalendarDate.CalendarDate <= $parameters.P_KeyDate //1 Year
// and(
// CalendarDate.CalendarDay = '01'
// or CalendarDate.CalendarDay = '15'
// or CalendarDate.CalendarDate = $parameters.P_KeyDate
// )