@AbapCatalog.sqlViewName: 'PCLKEYDATEUTI'
@ClientHandling.algorithm: #SESSION_VARIABLE
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #NOT_REQUIRED
@VDM.viewType: #COMPOSITE
@ObjectModel.usageType.serviceQuality: #B
@VDM.private:true
define view P_Ftr_Cl_Keydate_Utilization
// Facility change flow
as select from P_Ftr_Asgn_Keydate_Fac_Amt(
P_StartDate : '00010101',
P_EndDate : '99991231') as Facility // hard code here cause underlying view uses these two parameters to decrease data volume,
// in order to get all data, so just hard code the maximum date period
{
Facility.CompanyCode,
Facility.FinancialTransaction,
Facility.RelatObject,
Facility.LimitDate as FacilityDate,
@Semantics.currencyCode: true
Facility.TransactionCurrency,
@Semantics.amount.currencyCode: 'TransactionCurrency'
@DefaultAggregation: #SUM
cast(Facility.ChangeAmount as ftr_totamtintranscrcy) as TotalAmount,
@Semantics.amount.currencyCode: 'TransactionCurrency'
@DefaultAggregation: #SUM
cast(0 as ftr_utilamtintranscrcy) as UtilizedChangeAmount,
@Semantics.amount.currencyCode: 'TransactionCurrency'
@DefaultAggregation: #SUM
cast(Facility.ChangeAmount as ftr_availamtintranscrcy) as AvailableAmount
}
union all
// Utilization change flow
select distinct from P_Ftr_Asgn_Facility_Period(
P_StartDate : '00010101',
P_EndDate : '99991231') as Facility
inner join P_Ftr_Asgn_Pos_With_Ratio(
P_StartDate : '00010101',
P_EndDate : '99991231') as Position on Facility.RelatObject = Position.RelatObject // similar as above
{
Facility.CompanyCode,
Facility.FinancialTransaction,
Facility.RelatObject,
Position.ChangeDate as FacilityDate,
@Semantics.currencyCode: true
Facility.TransactionCurrency,
@Semantics.amount.currencyCode: 'TransactionCurrency'
@DefaultAggregation: #SUM
cast(0 as ftr_totamtintranscrcy) as TotalAmount,
@Semantics.amount.currencyCode: 'TransactionCurrency'
@DefaultAggregation: #SUM
case when Position.CurrencyConversionRate >= 0
then cast(coalesce(
division( cast(cast(Position.ChangeAmount * Position.Ratio as abap.dec( 17, 2 )) * cast(Position.CurrencyConversionRate as abap.dec( 13, 9 )) as abap.dec(17,9) ),
cast(Position.ExchangeRateFactor as abap.dec(13,9)), 5 )
, 0) as ftr_utilamtintranscrcy)
else cast(coalesce(
division(
cast(division( cast(Position.ChangeAmount * Position.Ratio as abap.dec( 17, 2 )),
cast(Position.CurrencyConversionRate as abap.dec( 13, 9 ) ), 5) as abap.dec(17,9) ),
Position.ExchangeRateFactor, 5)
, 0) as ftr_utilamtintranscrcy)
end as UtilizedChangeAmount,
@Semantics.amount.currencyCode: 'TransactionCurrency'
@DefaultAggregation: #SUM
cast(coalesce(cast(Position.ChangeAmount * Position.Ratio * -1 as abap.dec( 17, 2 )) * cast(Position.CurrencyConversionRate as abap.dec( 13, 9 ) ), 0) as ftr_availamtintranscrcy) as AvailableAmount
}
union all
// Facility repayment flow
select from P_Ftr_Asgn_Facility_Period(
P_StartDate : '00010101',
P_EndDate : '99991231') as Facility
inner join vtb_asgn_limit as limit on limit.relat_obj = Facility.RelatObject
and limit.limit_date = Facility.LastLimitDate
{
Facility.CompanyCode,
Facility.FinancialTransaction,
Facility.RelatObject,
Facility.TermEndDate as FacilityDate,
@Semantics.currencyCode: true
Facility.TransactionCurrency,
@Semantics.amount.currencyCode: 'TransactionCurrency'
@DefaultAggregation: #SUM
cast(limit.limit_pos_amount * -1 as ftr_totamtintranscrcy) as TotalAmount,
@Semantics.amount.currencyCode: 'TransactionCurrency'
@DefaultAggregation: #SUM
cast(0 as ftr_utilamtintranscrcy) as UtilizedChangeAmount,
@Semantics.amount.currencyCode: 'TransactionCurrency'
@DefaultAggregation: #SUM
cast(limit.limit_pos_amount * -1 as ftr_availamtintranscrcy) as AvailableAmount
}
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"P_FTR_ASGN_FACILITY_PERIOD",
"P_FTR_ASGN_KEYDATE_FAC_AMT",
"P_FTR_ASGN_POS_WITH_RATIO",
"VTB_ASGN_LIMIT"
],
"ASSOCIATED":
[],
"BASE":
[],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/