@AbapCatalog.sqlViewName: 'IFINTRANSINTRST'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AbapCatalog.buffering.status: #NOT_ALLOWED
@AccessControl.authorizationCheck: #CHECK
@AccessControl.personalData.blocking: #NOT_REQUIRED
@ClientHandling.algorithm: #SESSION_VARIABLE
@EndUserText.label: 'Fin Trans Interest Information'
@ObjectModel.usageType.dataClass: #MIXED
@ObjectModel.usageType.serviceQuality: #D
@ObjectModel.usageType.sizeCategory: #L
@Metadata.allowExtensions:false
@Metadata.ignorePropagatedAnnotations: true // For C1-Release
@VDM.viewType: #COMPOSITE
@ObjectModel.supportedCapabilities: [ #CDS_MODELING_ASSOCIATION_TARGET, #SQL_DATA_SOURCE, #CDS_MODELING_DATA_SOURCE ]
//view shall provide interest data based on flows
define view I_FinTransInterest
with parameters
//parameter needed to get interest flow valid on key date
@Environment.systemField: #SYSTEM_DATE
P_KeyDate : vdm_v_key_date
//all activities containing flows
as select from R_FinTransCashFlowActivity as Activity
//all flows of these activities (within where-condition they are restricted)
inner join R_FinTransFlow as Flow on Activity.CompanyCode = Flow.CompanyCode
and Activity.FinancialTransaction = Flow.FinancialTransaction
and Activity.FinancialInstrumentActivity = Flow.FinancialInstrumentActivity
inner join R_FinTransCondition as Condition on Flow.CompanyCode = Condition.CompanyCode
and Flow.FinancialTransaction = Condition.FinancialTransaction
and Flow.FinancialInstrumentActivity = Condition.FinancialInstrumentActivity
and Flow.FinancialTransactionDirection = Condition.FinancialTransactionDirection
and Flow.FinConditionItem = Condition.FinConditionItem
and Flow.ConditionItemValidityStartDate = Condition.ConditionItemValidityStartDate
and Flow.FinConditionSubItem = Condition.FinConditionSubItem
// dimensions, containing for example text fields
association [0..1] to I_CompanyCode as _CompanyCode on $projection.CompanyCode = _CompanyCode.CompanyCode
association [0..1] to I_FinancialTransaction as _FinTrans on $projection.CompanyCode = _FinTrans.CompanyCode
and $projection.FinancialTransaction = _FinTrans.FinancialTransaction
association [0..1] to I_FinTransactionDirection as _Direction on $projection.FinancialTransactionDirection = _Direction.FinancialTransactionDirection
association [0..1] to I_FinCndnInterestCategory as _IntCat on $projection.FinConditionInterestCategory = _IntCat.FinConditionInterestCategory
association [0..1] to I_Currency as _PaymentCurrency on $projection.FinTransFlowPaytAmtCrcy = _PaymentCurrency.Currency
association [0..1] to I_FinIntrstRateAdjmtStatus as _AdjmtStatus on $projection.FinInterestRateAdjmtStatus = _AdjmtStatus.FinInterestRateAdjmtStatus
{
// exposed fields
@ObjectModel.foreignKey.association: '_CompanyCode'
key Flow.CompanyCode as CompanyCode,
@ObjectModel.foreignKey.association: '_FinTrans'
key Flow.FinancialTransaction as FinancialTransaction,
@ObjectModel.foreignKey.association: '_Direction'
key Flow.FinancialTransactionDirection as FinancialTransactionDirection,
@ObjectModel.foreignKey.association: '_IntCat'
Condition.FinConditionInterestCategory as FinConditionInterestCategory,
@Semantics.amount.currencyCode: 'FinTransFlowPaytAmtCrcy'
Flow.FinTransFlowPaytAmt as FinTransFlowPaytAmt,
@ObjectModel.foreignKey.association: '_PaymentCurrency'
Flow.FinTransFlowPaytAmtCrcy as FinTransFlowPaytAmtCrcy,
Flow.FinTransFlowPaymentDate as FinTransFlowPaymentDate,
Flow.FinTransFlowPaymentDueDate as FinTransFlowPaymentDueDate,
Flow.FinTransFlowIntrstRateFixDate as FinTransFlowIntrstRateFixDate,
Flow.ConditionPercentageRate as ConditionPercentageRate,
@ObjectModel.foreignKey.association: '_AdjmtStatus'
Flow.FinInterestRateAdjmtStatus as FinInterestRateAdjmtStatus,
// exposed dimensions
_CompanyCode,
_FinTrans,
_Direction,
_IntCat,
_PaymentCurrency,
_AdjmtStatus
}
//restrict to flows, which are not blocked for specific reasons
where Flow.FinTransFlowPostingBlkgReason <> '2'
and Flow.FinTransFlowPostingBlkgReason <> '4'
and Flow.FinTransFlowPostingBlkgReason <> '5'
and Flow.FinTransFlowPostingBlkgReason <> '6'
//flow category interest
and ( Flow.FinTransFlowCategory = '15'
or Flow.FinTransFlowCategory = '20' )
//key date must be in calculation period
and Flow.CalculationPeriodStartDate <= $parameters.P_KeyDate
and Flow.CalculationPeriodEndDate >= $parameters.P_KeyDate
//main group
and ( Flow.FinInstrConditionLogicGroup = '1000'
or Flow.FinInstrConditionLogicGroup is initial )
//all activities containing flows
union select from R_FinTransCashFlowActivity as Activity
//all flows of these activities (within where-condition they are restricted)
inner join R_FinTransUnfixedFlow as UnfixedFlow on Activity.CompanyCode = UnfixedFlow.CompanyCode
and Activity.FinancialTransaction = UnfixedFlow.FinancialTransaction
and Activity.FinancialInstrumentActivity = UnfixedFlow.FinancialInstrumentActivity
inner join R_FinTransCondition as Condition on UnfixedFlow.CompanyCode = Condition.CompanyCode
and UnfixedFlow.FinancialTransaction = Condition.FinancialTransaction
and UnfixedFlow.FinancialInstrumentActivity = Condition.FinancialInstrumentActivity
and UnfixedFlow.FinancialTransactionDirection = Condition.FinancialTransactionDirection
and UnfixedFlow.FinConditionItem = Condition.FinConditionItem
and UnfixedFlow.ConditionItemValidityStartDate = Condition.ConditionItemValidityStartDate
and UnfixedFlow.FinConditionSubItem = Condition.FinConditionSubItem
// dimensions, containing for example text fields
association [0..1] to I_CompanyCode as _CompanyCode on $projection.CompanyCode = _CompanyCode.CompanyCode
association [0..1] to I_FinancialTransaction as _FinTrans on $projection.CompanyCode = _FinTrans.CompanyCode
and $projection.FinancialTransaction = _FinTrans.FinancialTransaction
association [0..1] to I_FinTransactionDirection as _Direction on $projection.FinancialTransactionDirection = _Direction.FinancialTransactionDirection
association [0..1] to I_FinCndnInterestCategory as _IntCat on $projection.FinConditionInterestCategory = _IntCat.FinConditionInterestCategory
association [0..1] to I_Currency as _PaymentCurrency on $projection.FinTransFlowPaytAmtCrcy = _PaymentCurrency.Currency
association [0..1] to I_FinIntrstRateAdjmtStatus as _AdjmtStatus on $projection.FinInterestRateAdjmtStatus = _AdjmtStatus.FinInterestRateAdjmtStatus
{
// exposed fields
@ObjectModel.foreignKey.association: '_CompanyCode'
key UnfixedFlow.CompanyCode as CompanyCode,
@ObjectModel.foreignKey.association: '_FinTrans'
key UnfixedFlow.FinancialTransaction as FinancialTransaction,
@ObjectModel.foreignKey.association: '_Direction'
key UnfixedFlow.FinancialTransactionDirection as FinancialTransactionDirection,
@ObjectModel.foreignKey.association: '_IntCat'
Condition.FinConditionInterestCategory as FinConditionInterestCategory,
@Semantics.amount.currencyCode: 'FinTransFlowPaytAmtCrcy'
UnfixedFlow.FinTransFlowPaytAmt as FinTransFlowPaytAmt,
@ObjectModel.foreignKey.association: '_PaymentCurrency'
UnfixedFlow.FinTransFlowPaytAmtCrcy as FinTransFlowPaytAmtCrcy,
UnfixedFlow.FinTransFlowPaymentDate as FinTransFlowPaymentDate,
UnfixedFlow.FinTransFlowPaymentDueDate as FinTransFlowPaymentDueDate,
UnfixedFlow.FinTransFlowIntrstRateFixDate as FinTransFlowIntrstRateFixDate,
UnfixedFlow.ConditionPercentageRate as ConditionPercentageRate,
@ObjectModel.foreignKey.association: '_AdjmtStatus'
UnfixedFlow.FinInterestRateAdjmtStatus as FinInterestRateAdjmtStatus,
// exposed dimensions
_CompanyCode,
_FinTrans,
_Direction,
_IntCat,
_PaymentCurrency,
_AdjmtStatus
}
//restrict to flows, which are not blocked for specific reasons
where UnfixedFlow.FinTransFlowPostingBlkgReason <> '2'
and UnfixedFlow.FinTransFlowPostingBlkgReason <> '4'
and UnfixedFlow.FinTransFlowPostingBlkgReason <> '5'
and UnfixedFlow.FinTransFlowPostingBlkgReason <> '6'
//flow category interest
and ( UnfixedFlow.FinTransFlowCategory = '15'
or UnfixedFlow.FinTransFlowCategory = '20' )
//key date must be in calculation period
and UnfixedFlow.CalculationPeriodStartDate <= $parameters.P_KeyDate
and UnfixedFlow.CalculationPeriodEndDate >= $parameters.P_KeyDate
//main group
and ( UnfixedFlow.FinInstrConditionLogicGroup = '1000'
or UnfixedFlow.FinInstrConditionLogicGroup is initial )
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"R_FINTRANSCASHFLOWACTIVITY",
"R_FINTRANSCONDITION",
"R_FINTRANSFLOW",
"R_FINTRANSUNFIXEDFLOW"
],
"ASSOCIATED":
[
"I_COMPANYCODE",
"I_CURRENCY",
"I_FINANCIALTRANSACTION",
"I_FINCNDNINTERESTCATEGORY",
"I_FININTRSTRATEADJMTSTATUS",
"I_FINTRANSACTIONDIRECTION"
],
"BASE":
[],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/