@AbapCatalog.sqlViewName: 'PSAFTTAXRATIOCAL'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@VDM.private: true
@VDM.viewType: #COMPOSITE
@ObjectModel.usageType.sizeCategory: #XL
@ObjectModel.usageType.dataClass: #MIXED
@ObjectModel.usageType.serviceQuality: #P
@ClientHandling.algorithm: #SESSION_VARIABLE
@AccessControl.personalData.blocking : #NOT_REQUIRED
define view P_SAFTTaxRatioCalculation
as select from I_SAFTJournalLineItem as JournalEntryItem
left outer to one join P_SAFTJournalItemTaxSum as JournalItemTaxSum on JournalItemTaxSum.CompanyCode = JournalEntryItem.CompanyCode
and JournalItemTaxSum.FiscalYear = JournalEntryItem.FiscalYear
and JournalItemTaxSum.AccountingDocument = JournalEntryItem.AccountingDocument
and JournalItemTaxSum.Ledger = JournalEntryItem.Ledger
and JournalItemTaxSum.TaxCode = JournalEntryItem.TaxCode
left outer to one join P_SAFTTaxItemAbs as TaxAmountSum on TaxAmountSum.CompanyCode = JournalEntryItem.CompanyCode
and TaxAmountSum.AccountingDocument = JournalEntryItem.AccountingDocument
and TaxAmountSum.FiscalYear = JournalEntryItem.FiscalYear
and TaxAmountSum.TaxCode = JournalEntryItem.TaxCode
{
@ObjectModel.foreignKey.association: '_CompanyCode'
key JournalEntryItem.CompanyCode as CompanyCode,
@ObjectModel.foreignKey.association: '_FiscalYear'
key JournalEntryItem.FiscalYear as FiscalYear,
@ObjectModel.foreignKey.association: '_JournalEntry'
key JournalEntryItem.AccountingDocument as AccountingDocument,
key JournalEntryItem.LedgerGLLineItem as LedgerGLLineItem,
@ObjectModel.foreignKey.association: '_Ledger'
key JournalEntryItem.Ledger as Ledger,
JournalEntryItem.SourceLedger,
JournalEntryItem.ChartOfAccounts,
JournalEntryItem.PostingDate,
JournalEntryItem.FinancialAccountType,
JournalEntryItem.GLAccount,
JournalEntryItem.AlternativeGLAccount,
JournalEntryItem.ReferenceDocument,
JournalEntryItem.DocumentItemText,
@Semantics.currencyCode: true
JournalEntryItem.CompanyCodeCurrency,
@Semantics.currencyCode: true
JournalEntryItem.TransactionCurrency,
@DefaultAggregation: #SUM
@Semantics: { amount : {currencyCode: 'CompanyCodeCurrency'} }
@EndUserText.label: 'Amount Company Code'
case
when JournalEntryItem.DebitCreditCode = 'H'
then cast(abs( JournalEntryItem.AmountInCompanyCodeCurrency ) as fis_cr_hsl preserving type)
else cast(abs ( JournalEntryItem.AmountInCompanyCodeCurrency ) as fis_cr_hsl preserving type)
end as AmountInCompanyCodeCurrency,
@DefaultAggregation: #SUM
@Semantics: { amount : {currencyCode: 'TransactionCurrency'} }
@EndUserText.label: 'Amount Transaction'
case
when JournalEntryItem.DebitCreditCode = 'H'
then cast(abs( JournalEntryItem.AmountInTransactionCurrency ) as fis_cr_hsl preserving type)
else cast(abs ( JournalEntryItem.AmountInTransactionCurrency ) as fis_cr_hsl preserving type)
end as AmountInTransactionCurrency,
case
when JournalEntryItem.DebitCreditCode = 'H'
then 'C'
else 'D'
end as DebitCreditCode,
case
when JournalEntryItem.AccountingDocumentItemType <> 'T'
and JournalEntryItem.ReconciliationAccountType <> 'V'
and JournalEntryItem.FinancialAccountType = 'S'
then JournalEntryItem.TaxCode
else ' '
end as TaxCode,
case
when JournalEntryItem.AccountingDocumentItemType <> 'T'
and JournalEntryItem.ReconciliationAccountType <> 'V'
and JournalEntryItem.FinancialAccountType = 'S'
then coalesce(division(abs(TaxAmountSum.TaxRate),10,2) , 0)
else 0
end as TaxRate,
@DefaultAggregation: #SUM
@Semantics: { amount : {currencyCode: 'CompanyCodeCurrency'} }
case
when TaxAmountSum.TaxAmountInCoCodeCrcy is not initial and TaxAmountSum.TaxAmountInCoCodeCrcy is not null
and JournalItemTaxSum.TotalGrossAmountInCoCodeCrcy is not initial and JournalItemTaxSum.TotalGrossAmountInCoCodeCrcy is not null
and JournalEntryItem.AccountingDocumentItemType <> 'T'
and JournalEntryItem.ReconciliationAccountType <> 'V'
and JournalEntryItem.FinancialAccountType = 'S'
then ( cast( TaxAmountSum.TaxAmountInCoCodeCrcy as abap.fltp) *
(cast( abs(JournalEntryItem.AmountInCompanyCodeCurrency) as abap.fltp) /
cast( JournalItemTaxSum.TotalGrossAmountInCoCodeCrcy as abap.fltp)))
else 0
end as TaxRatioCalculated,
@DefaultAggregation: #SUM
@Semantics: { amount : {currencyCode: 'TransactionCurrency'} }
case
when TaxAmountSum.TaxAmount is not initial and TaxAmountSum.TaxAmount is not null
and JournalItemTaxSum.TotalGrossAmountInTransCrcy is not initial and JournalItemTaxSum.TotalGrossAmountInTransCrcy is not null
and JournalEntryItem.AccountingDocumentItemType <> 'T'
and JournalEntryItem.ReconciliationAccountType <> 'V'
and JournalEntryItem.FinancialAccountType = 'S'
then ( cast( TaxAmountSum.TaxAmount as abap.fltp) *
(cast( abs(JournalEntryItem.AmountInTransactionCurrency) as abap.fltp) /
cast( JournalItemTaxSum.TotalGrossAmountInTransCrcy as abap.fltp)))
else 0
end as TaxRatioCalculatedTransCrcy,
@DefaultAggregation: #SUM
@Semantics: { amount : {currencyCode: 'CompanyCodeCurrency'} }
case
when TaxAmountSum.TaxBaseAmountInCoCodeCrcy is not initial and TaxAmountSum.TaxBaseAmountInCoCodeCrcy is not null
and JournalItemTaxSum.TotalGrossAmountInCoCodeCrcy is not initial and JournalItemTaxSum.TotalGrossAmountInCoCodeCrcy is not null
and JournalEntryItem.AccountingDocumentItemType <> 'T'
and JournalEntryItem.ReconciliationAccountType <> 'V'
and JournalEntryItem.FinancialAccountType = 'S'
then ( cast( TaxAmountSum.TaxBaseAmountInCoCodeCrcy as abap.fltp) *
(cast( abs(JournalEntryItem.AmountInCompanyCodeCurrency) as abap.fltp) /
cast( JournalItemTaxSum.TotalGrossAmountInCoCodeCrcy as abap.fltp)))
else 0
end as TaxBaseRatioCalculated,
@DefaultAggregation: #SUM
@Semantics: { amount : {currencyCode: 'TransactionCurrency'} }
case
when TaxAmountSum.TaxBaseAmountInTransCrcy is not initial and TaxAmountSum.TaxBaseAmountInTransCrcy is not null
and JournalItemTaxSum.TotalGrossAmountInTransCrcy is not initial and JournalItemTaxSum.TotalGrossAmountInTransCrcy is not null
and JournalEntryItem.AccountingDocumentItemType <> 'T'
and JournalEntryItem.ReconciliationAccountType <> 'V'
and JournalEntryItem.FinancialAccountType = 'S'
then ( cast( TaxAmountSum.TaxBaseAmountInTransCrcy as abap.fltp) *
(cast( abs(JournalEntryItem.AmountInTransactionCurrency) as abap.fltp) /
cast( JournalItemTaxSum.TotalGrossAmountInTransCrcy as abap.fltp)))
else 0
end as TaxBaseRatioCalculatedTC,
case
when JournalEntryItem.CentralFinanceBillingDocument is not initial
then JournalEntryItem.CentralFinanceBillingDocument
when JournalEntryItem.ReversalReferenceDocument is not initial
and JournalEntryItem.IsReversed <> ''
then JournalEntryItem.ReversalReferenceDocument
else ''
end as InvoiceReference, //invoiceRef
cast( abs(round( JournalEntryItem.Quantity, 0)) as abap.int8 ) as Quantity,
@ObjectModel.foreignKey.association: '_CostCenter'
JournalEntryItem.CostCenter as CostCenter,
@ObjectModel.foreignKey.association: '_ControllingArea'
JournalEntryItem.ControllingArea as ControllingArea,
JournalEntryItem.CentralFinanceSalesDocument,
@ObjectModel.foreignKey.association: '_Customer'
JournalEntryItem.Customer as Customer,
@ObjectModel.foreignKey.association: '_Supplier'
JournalEntryItem.Supplier as Supplier,
JournalEntryItem.ReferenceDocumentType,
JournalEntryItem.LogicalSystem,
JournalEntryItem.ReferenceSDDocument,
JournalEntryItem.ExchangeRate,
//Associations
JournalEntryItem._CompanyCode,
JournalEntryItem._FiscalYear,
JournalEntryItem._JournalEntry,
JournalEntryItem._Ledger,
JournalEntryItem._Supplier,
JournalEntryItem._Customer,
JournalEntryItem._CustomerToBP,
JournalEntryItem._SupplierToBP,
JournalEntryItem._CFinPurchasingDocHistory,
JournalEntryItem._CompanyCodeCurrency,
JournalEntryItem._CostCenter,
JournalEntryItem._ControllingArea
}
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_SAFTJOURNALLINEITEM",
"P_SAFTJOURNALITEMTAXSUM",
"P_SAFTTAXITEMABS"
],
"ASSOCIATED":
[
"I_CFINPURCHASINGDOCHISTORY",
"I_COMPANYCODE",
"I_CONTROLLINGAREA",
"I_COSTCENTER",
"I_CURRENCY",
"I_CUSTOMER",
"I_CUSTOMERTOBUSINESSPARTNER",
"I_FISCALYEARFORCOMPANYCODE",
"I_JOURNALENTRY",
"I_LEDGER",
"I_SUPPLIER",
"I_SUPPLIERTOBUSINESSPARTNER"
],
"BASE":
[
"I_SAFTJOURNALLINEITEM"
],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/