P_FTR_CL_KEYDATE_UTILIZATION
Facility Utilization by Key Date
P_FTR_CL_KEYDATE_UTILIZATION is a CDS View in S/4HANA. Facility Utilization by Key Date. 1 CDS views read from this table.
CDS Views using this table (1)
| View | Type | Join | VDM | Description |
|---|---|---|---|---|
| I_Ftr_Cl_Key_Date_Utilization | view | from | COMPOSITE | Facility Utilization by Key Date |
@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
with parameters
@Environment.systemField: #SYSTEM_DATE
P_KeyDate : vdm_v_key_date
// 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,
cast( '' as tb_pos_obj) as PositionObject,
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
} where Facility.TermEndDate >= $parameters.P_KeyDate
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
and Facility.TermEndDate >= $parameters.P_KeyDate
{
Facility.CompanyCode,
Facility.FinancialTransaction,
Facility.RelatObject,
Position.PositionObject as PositionObject,
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(
round(
division(
division( cast(cast( Position.ChangeAmount * cast( case when Position.FacilityAmount > 0 or Position.RootAmount > 0 then Position.Ratio else Position.Ratio2 end as abap.dec(14,6)) as abap.dec( 21, 6 )) * Position.CurrencyConversionRate as abap.dec( 21, 6 )), Position.ExchangeRateFactor, 6)
* cast(division(decimal_shift(amount => Position.FixedAmountInPositionCurrency, currency => Position.TransactionCurrency, error_handling => 'KEEP_UNCONVERTED'), Position.FixedAmountInPositionCurrency, 2) as abap.dec( 7, 2 )),
cast(division(decimal_shift(amount => Facility.FixedAmountInFacilityCurrency, currency => Facility.TransactionCurrency, error_handling => 'KEEP_UNCONVERTED'), Facility.FixedAmountInFacilityCurrency, 2) as abap.dec( 7, 2 )),
6),
2),
0) as ftr_utilamtintranscrcy)
else
cast(coalesce(
round(
division(
division( cast(division( cast(Position.ChangeAmount * cast( case when Position.FacilityAmount > 0 or Position.RootAmount > 0 then Position.Ratio else Position.Ratio2 end as abap.dec(14,6)) as abap.dec( 21, 6 )), abs(Position.CurrencyConversionRate),6 ) as abap.dec( 21, 6 )), Position.ExchangeRateFactor,6)
* cast(division(decimal_shift(amount => Position.FixedAmountInPositionCurrency, currency => Position.TransactionCurrency, error_handling => 'KEEP_UNCONVERTED'), Position.FixedAmountInPositionCurrency, 2) as abap.dec( 7, 2 )),
cast(division(decimal_shift(amount => Facility.FixedAmountInFacilityCurrency, currency => Facility.TransactionCurrency, error_handling => 'KEEP_UNCONVERTED'), Facility.FixedAmountInFacilityCurrency, 2) as abap.dec( 7, 2 )),
6),
2),
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
and Facility.TermEndDate >= $parameters.P_KeyDate
{
Facility.CompanyCode,
Facility.FinancialTransaction,
Facility.RelatObject,
cast( '' as tb_pos_obj) as PositionObject,
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
}