P_FTR_CL_KEYDATE_UTILIZATION

CDS View

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)

ViewTypeJoinVDMDescription
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
}