I_FinTransNominal is a Composite CDS View that provides data about "Fin Trans Nominal Amount" in SAP S/4HANA. It reads from 2 data sources (I_FinTransCurrentActivity, I_FinTransFlow) and exposes 8 fields with key fields CompanyCode, FinancialTransaction, FinancialTransactionDirection. It has 4 associations to related views.
@AbapCatalog.sqlViewName: 'IFINTRANSNOMINAL'
@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 Nominal Amount'
@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 nominal data based on flows
defineview I_FinTransNominal
withparameters//parameter needed to get nominal flows valid onkey date
@Environment.systemField: #SYSTEM_DATE
P_KeyDate : vdm_v_key_date
//get data from cash flow
asselectfrom I_FinTransFlow as Flow
innerjoin I_FinTransCurrentActivity as Activity on Flow.CompanyCode = Activity.CompanyCode
and Flow.FinancialTransaction = Activity.FinancialTransaction
// 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_Currency as _NominalCurrency on $projection.FinTransFlowNomAmtCrcy = _NominalCurrency.Currency
{
// 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,
@Semantics.amount.currencyCode: 'FinTransFlowNomAmtCrcy'
sum( casewhen Flow.FinTransFlowPaytAmtDirection = '+'
then Flow.FinTransFlowNomAmt
else Flow.FinTransFlowNomAmt * -1
end ) as FinTransFlowNomAmt,
@ObjectModel.foreignKey.association: '_NominalCurrency'
Flow.FinTransFlowNomAmtCrcy as FinTransFlowNomAmtCrcy,
// exposed dimensions
_CompanyCode,
_FinTrans,
_Direction,
_NominalCurrency
}
where//all flows before key date
Flow.FinTransFlowPaymentDate <= $parameters.P_KeyDate
//nominal relevant flow categories
and ( Flow.FinTransFlowCategory = '10'
or Flow.FinTransFlowCategory = '11'
or Flow.FinTransFlowCategory = '12'
or Flow.FinTransFlowCategory = '13'
or Flow.FinTransFlowCategory = '14'
or Flow.FinTransFlowCategory = '15'
or Flow.FinTransFlowCategory = '16'
or Flow.FinTransFlowCategory = '70'
or Flow.FinTransFlowCategory = '71'
or Flow.FinTransFlowCategory = '72'
or Flow.FinTransFlowCategory = '73'
or Flow.FinTransFlowCategory = '84'
or Flow.FinTransFlowCategory = '85' )
//only consider flow (and whole financial transaction) incasekey date is before end of term / notice date
and ( Activity.TermEndDate > $parameters.P_KeyDate
or Activity.TermEndDate is initial )
and ( Activity.FinTransNoticeDate is initial
or Activity.FinTransNoticeDate > $parameters.P_KeyDate )
and ( Flow.FinTransFlowPostingStatus <> '3'
and Flow.FinTransFlowPostingStatus <> '4' )
//group flows
groupby Flow.CompanyCode, Flow.FinancialTransaction, Flow.FinancialTransactionDirection, Flow.FinTransFlowNomAmtCrcy
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_FINTRANSCURRENTACTIVITY",
"I_FINTRANSFLOW"
],
"ASSOCIATED":
[
"I_COMPANYCODE",
"I_CURRENCY",
"I_FINANCIALTRANSACTION",
"I_FINTRANSACTIONDIRECTION"
],
"BASE":
[],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/