@AbapCatalog.sqlViewName: 'PARPURTAXITDET'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #NOT_REQUIRED
@ObjectModel.usageType.sizeCategory: #L
@ObjectModel.usageType.serviceQuality: #D
@ObjectModel.usageType.dataClass: #MIXED
@VDM.viewType: #CONSUMPTION
@VDM.private: true
@ClientHandling.algorithm: #SESSION_VARIABLE
define view P_AR_PurchaseTaxItemDetail
with parameters
P_AccrualCalculationMethod : fiar_vat_compcredit,
P_RptgAmountIsInTransCrcy : xfeld
as select from P_AR_PurchaseTaxItemAggrgd ( P_AccrualCalculationMethod : $parameters.P_AccrualCalculationMethod,
P_RptgAmountIsInTransCrcy : $parameters.P_RptgAmountIsInTransCrcy ) as PurchaseTaxItemDetail
inner join P_AR_SupplierPayable as SupplierPayable on SupplierPayable.CompanyCode = PurchaseTaxItemDetail.CompanyCode
and SupplierPayable.FiscalYear = PurchaseTaxItemDetail.FiscalYear
and SupplierPayable.AccountingDocument = PurchaseTaxItemDetail.AccountingDocument
and SupplierPayable.ReportingDate = PurchaseTaxItemDetail.ReportingDate
inner join I_Supplier as Supplier on Supplier.Supplier = SupplierPayable.Supplier
left outer to one join I_Altvcurrency as AltvCurrency on AltvCurrency.Currency = PurchaseTaxItemDetail.TransactionCurrency
and AltvCurrency.CurrencyAlternativeCodeGroup = 'DAILYVAT'
left outer to one join I_Country as ImportDispatchCountry on ImportDispatchCountry.Country = substring(
PurchaseTaxItemDetail.AccountingDocumentHeaderText, 1, 2
)
{
key PurchaseTaxItemDetail.CompanyCode,
key PurchaseTaxItemDetail.FiscalYear,
key PurchaseTaxItemDetail.AccountingDocument,
PurchaseTaxItemDetail.CompanyCodeCountry,
PurchaseTaxItemDetail.FiscalPeriod,
PurchaseTaxItemDetail.DocumentDate,
PurchaseTaxItemDetail.PostingDate,
PurchaseTaxItemDetail.ReportingDate,
PurchaseTaxItemDetail.IsReversal,
PurchaseTaxItemDetail.IsReversed,
PurchaseTaxItemDetail.ReverseDocument,
PurchaseTaxItemDetail.ReferenceDocumentType,
PurchaseTaxItemDetail.DocumentReferenceID,
PurchaseTaxItemDetail.AccountingDocumentType,
PurchaseTaxItemDetail.AR_OfficialDocumentType,
PurchaseTaxItemDetail.AR_OfficialDocumentClass,
PurchaseTaxItemDetail.AR_Branch,
PurchaseTaxItemDetail.AR_PrintCharacter,
PurchaseTaxItemDetail.AR_OfficialDocumentNumber,
PurchaseTaxItemDetail.AccountingDocumentHeaderText,
SupplierPayable.Supplier,
cast(
ImportDispatchCountry.Country
as land1
) as ImportDispatchCountry,
cast(
case
when Supplier.IsOneTimeAccount = 'X'
then PurchaseTaxItemDetail._OneTimeAccountBP.BusinessPartnerName1
else Supplier.OrganizationBPName1
end
as businesspartnername ) as BusinessPartnerName,
cast(
coalesce(
PurchaseTaxItemDetail._OneTimeAccountBP.TaxID1,
Supplier.TaxNumber1
)
as stcd1 preserving type
) as TaxNumber1,
cast(
coalesce(
PurchaseTaxItemDetail._OneTimeAccountBP.TaxNumberType,
Supplier.TaxNumberType
)
as j_1atoid preserving type
) as TaxNumberType,
cast(
coalesce(
PurchaseTaxItemDetail._OneTimeAccountBP.Country,
Supplier.Country
)
as glo_partner_country preserving type
) as BusinessPartnerCountry,
SupplierPayable.FinancialAccountType,
SupplierPayable.NetDueDate,
SupplierPayable.ClearingDate,
SupplierPayable.ClearingAccountingDocument,
cast(
case PurchaseTaxItemDetail.AR_LowestPriorityOfZeroVATRsn
when 1 then 'C'
when 2 then 'X'
when 3 then 'Z'
when 4 then 'E'
when 5 then 'N'
else ''
end
as j_1arfzvat preserving type ) as ZeroVATRsn,
PurchaseTaxItemDetail.ExchangeRateDate,
cast(
case
when PurchaseTaxItemDetail.ExchangeRate = 0
then 1
else PurchaseTaxItemDetail.ExchangeRate
end as ukurs_curr preserving type
) as ExchangeRate,
cast(
case
when PurchaseTaxItemDetail.NmbrOfVATRates = 0 and
( PurchaseTaxItemDetail.IsDocumentBOrCAndNotDocType33 is null or PurchaseTaxItemDetail.IsDocumentBOrCAndNotDocType33 = '' )
then 1
when PurchaseTaxItemDetail.IsDocumentBOrCAndNotDocType33 = 'X'
then 0
else PurchaseTaxItemDetail.NmbrOfVATRates
end
as fiar_nmbrvat preserving type ) as NmbrOfVATRates,
AltvCurrency.AlternativeCurrencyKey,
@Semantics.currencyCode:true
PurchaseTaxItemDetail.TransactionCurrency,
@Semantics.currencyCode:true
PurchaseTaxItemDetail.CompanyCodeCurrency,
@Semantics.currencyCode:true
PurchaseTaxItemDetail.ReportingCurrency,
@Semantics.amount.currencyCode: 'CompanyCodeCurrency'
cast(
abs( PurchaseTaxItemDetail.TaxBaseAmountInCoCodeCrcy + PurchaseTaxItemDetail.TaxAmountInCoCodeCrcy ) as glo_amount_compcode_crcy
) as AmountInCompanyCodeCurrency,
@Semantics.amount.currencyCode: 'CompanyCodeCurrency'
abs( PurchaseTaxItemDetail.TaxAmountInCoCodeCrcy ) as TaxAmountInCoCodeCrcy,
@Semantics.amount.currencyCode: 'CompanyCodeCurrency'
abs( PurchaseTaxItemDetail.TaxBaseAmountInCoCodeCrcy ) as TaxBaseAmountInCoCodeCrcy,
@Semantics.amount.currencyCode: 'TransactionCurrency'
cast(
abs( PurchaseTaxItemDetail.TaxBaseAmountInTransCrcy + PurchaseTaxItemDetail.TaxAmountInTransCrcy ) as glo_amount_trans_crcy
) as AmountInTransactionCurrency,
@Semantics.amount.currencyCode: 'TransactionCurrency'
abs( PurchaseTaxItemDetail.TaxAmountInTransCrcy ) as TaxAmountInTransCrcy,
@Semantics.amount.currencyCode: 'TransactionCurrency'
abs( PurchaseTaxItemDetail.TaxBaseAmountInTransCrcy ) as TaxBaseAmountInTransCrcy,
@Semantics.amount.currencyCode: 'ReportingCurrency'
cast(
case $parameters.P_RptgAmountIsInTransCrcy
when 'X'
then abs( PurchaseTaxItemDetail.TaxBaseAmountInTransCrcy + PurchaseTaxItemDetail.TaxAmountInTransCrcy )
else abs( PurchaseTaxItemDetail.TaxBaseAmountInCoCodeCrcy + PurchaseTaxItemDetail.TaxAmountInCoCodeCrcy )
end as glo_amount_rptg_crcy
) as AmountInReportingCurrency,
@Semantics.amount.currencyCode: 'ReportingCurrency'
cast( abs( PurchaseTaxItemDetail.TaxAmountInRptgCrcy ) as glo_tax_amount_rptg_crcy preserving type ) as TaxAmountInRptgCrcy,
@Semantics.amount.currencyCode: 'ReportingCurrency'
cast( abs( PurchaseTaxItemDetail.TaxBaseAmountInRptgCrcy ) as glo_taxbase_amount_rptg_crcy preserving type ) as TaxBaseAmountInRptgCrcy,
@Semantics.amount.currencyCode: 'ReportingCurrency'
PurchaseTaxItemDetail.NotTaxedAmount,
//According to KBA 2763445, Import Dispatch Documents can be posted with a positive and negative line for the taxable base amount.
//Field NotTaxedAmountPlusBaseAmount is used check if NotTaxedAmount and TaxBaseAmountInRptgCrcy cancel each other.
@Semantics.amount.currencyCode: 'ReportingCurrency'
PurchaseTaxItemDetail.NotTaxedAmount + PurchaseTaxItemDetail.TaxBaseAmountInRptgCrcy as NotTaxedAmountPlusBaseAmount,
@Semantics.amount.currencyCode: 'ReportingCurrency'
PurchaseTaxItemDetail.TaxExemptionAmount,
@Semantics.amount.currencyCode: 'ReportingCurrency'
cast( abs( PurchaseTaxItemDetail.TotalCreditAmountInTransCrcy ) as sumha_eb preserving type ) as TotalCreditAmountInTransCrcy,
@Semantics.amount.currencyCode: 'ReportingCurrency'
cast( abs( PurchaseTaxItemDetail.ForeignTaxAmount ) as fi_ar_foreign_tax_amnt preserving type ) as ForeignTaxAmount,
@Semantics.amount.currencyCode: 'ReportingCurrency'
cast( abs( PurchaseTaxItemDetail.GrossIncomeTaxAmount ) as fiar_provincial_tax_amount preserving type ) as GrossIncomeTaxAmount,
@Semantics.amount.currencyCode: 'ReportingCurrency'
cast( abs( PurchaseTaxItemDetail.MunicipalTaxAmount ) as fi_ar_mptax_amnt preserving type ) as MunicipalTaxAmount,
@Semantics.amount.currencyCode: 'ReportingCurrency'
cast( abs( PurchaseTaxItemDetail.OpenTotalTaxAmount ) as fiar_internal_tax_amount preserving type ) as OpenTotalTaxAmount,
@Semantics.amount.currencyCode: 'ReportingCurrency'
cast(
case
when PurchaseTaxItemDetail.TaxBaseAmountInCoCodeCrcy < 0
then abs( PurchaseTaxItemDetail.CalculatedTxAmtInCoCodeCrcy )
else PurchaseTaxItemDetail.CalculatedTxAmtInCoCodeCrcy
end as fot_tax_recon_posted_tax_amt preserving type
) as CalculatedTxAmtInCoCodeCrcy,
@Semantics.amount.currencyCode: 'ReportingCurrency'
cast( abs( PurchaseTaxItemDetail.OtherTaxAmount ) as fiar_other_tax_amount preserving type ) as OtherTaxAmount
}
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_ALTVCURRENCY",
"I_COUNTRY",
"I_ONETIMEACCOUNTBP",
"I_SUPPLIER",
"P_AR_PURCHASETAXITEMAGGRGD",
"P_AR_SUPPLIERPAYABLE"
],
"ASSOCIATED":
[],
"BASE":
[],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/