P_UpdatedResidualOpenItem

DDL: P_UPDATEDRESIDUALOPENITEM SQL: PAGRIU Type: view CONSUMPTION

P_UpdatedResidualOpenItem is a Consumption CDS View in SAP S/4HANA. It reads from 3 data sources (I_AccountingDocument, I_OperationalAcctgDocItem, P_ResItemSession) and exposes 29 fields with key fields CompanyCode, FiscalYear, AccountingDocument, AccountingDocumentItem, ChangeDocCreationDate.

Data Sources (3)

SourceAliasJoin Type
I_AccountingDocument ResidualHeader inner
I_OperationalAcctgDocItem ResidualItem from
P_ResItemSession Session inner

Annotations (12)

NameValueLevelField
AbapCatalog.sqlViewName PAGRIU view
AbapCatalog.compiler.compareFilter true view
AbapCatalog.preserveKey true view
AccessControl.authorizationCheck #MANDATORY view
ClientHandling.algorithm #SESSION_VARIABLE view
AccessControl.personalData.blocking #NOT_REQUIRED view
ObjectModel.usageType.sizeCategory #XXL view
ObjectModel.usageType.dataClass #MIXED view
ObjectModel.usageType.serviceQuality #D view
VDM.viewType #CONSUMPTION view
Metadata.ignorePropagatedAnnotations true view
VDM.private true view

Fields (29)

KeyFieldSource TableSource FieldDescription
KEY CompanyCode I_OperationalAcctgDocItem CompanyCode
KEY FiscalYear I_OperationalAcctgDocItem FiscalYear
KEY AccountingDocument I_OperationalAcctgDocItem AccountingDocument
KEY AccountingDocumentItem I_OperationalAcctgDocItem AccountingDocumentItem
KEY ChangeDocCreationDate ResidualChange CreationDate
KEY ChangeDocumentCreationTime ResidualChange CreationTime
KEY ChangeDocument ResidualChange ChangeDocument
AssignmentReference I_OperationalAcctgDocItem AssignmentReference
AccountingDocumentHeaderText I_AccountingDocument AccountingDocumentHeaderText
DocumentItemText I_OperationalAcctgDocItem DocumentItemText
PaymentDifferenceReason I_OperationalAcctgDocItem PaymentDifferenceReason
CreationDate I_AccountingDocument AccountingDocumentCreationDate
CreationTime I_AccountingDocument CreationTime
LastChangeDate I_AccountingDocument LastChangeDate
PostingDate I_OperationalAcctgDocItem PostingDate
DocumentDate I_OperationalAcctgDocItem DocumentDate
NetDueDate I_OperationalAcctgDocItem NetDueDate
CashDiscountBaseAmount I_OperationalAcctgDocItem CashDiscountBaseAmount
CashDiscountAmount I_OperationalAcctgDocItem CashDiscountAmount
PaymentTerms I_OperationalAcctgDocItem PaymentTerms
CashDiscount1Days I_OperationalAcctgDocItem CashDiscount1Days
CashDiscount2Days I_OperationalAcctgDocItem CashDiscount2Days
NetPaymentDays I_OperationalAcctgDocItem NetPaymentDays
CashDiscount1Percent I_OperationalAcctgDocItem CashDiscount1Percent
CashDiscount2Percent I_OperationalAcctgDocItem CashDiscount2Percent
DueCalculationBaseDate I_OperationalAcctgDocItem DueCalculationBaseDate
FixedCashDiscount I_OperationalAcctgDocItem FixedCashDiscount
PaymentBlockingReason I_OperationalAcctgDocItem PaymentBlockingReason
TransactionCurrency I_OperationalAcctgDocItem TransactionCurrency
@AbapCatalog.sqlViewName: 'PAGRIU'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #MANDATORY
//@EndUserText.label: 'Residual item update'

@ClientHandling.algorithm: #SESSION_VARIABLE
@AccessControl.personalData.blocking: #NOT_REQUIRED

//@ObjectModel.representativeKey: 'AccountingDocumentItem'

@ObjectModel.usageType.sizeCategory: #XXL
@ObjectModel.usageType.dataClass:  #MIXED
@ObjectModel.usageType.serviceQuality: #D

@VDM.viewType: #CONSUMPTION

@Metadata.ignorePropagatedAnnotations: true

//@UI.presentationVariant.sortOrder.by: 'LastChangeDate, ChangeDocumentCreationDate, ChangeDocumentCreationTime'

//@UI.presentationVariant.sortOrder.direction: #ASC

@VDM.private: true
define view P_UpdatedResidualOpenItem as 
select from I_OperationalAcctgDocItem as ResidualItem

    inner join I_AccountingDocument      as ResidualHeader on

        // Make sure that ResidualItem is A/R item


        ResidualItem.FinancialAccountType      = 'D' and

    // Make sure that ResidualItem is only searched in relevant categories


        (
            ResidualItem.AccountingDocumentCategory = '' or

            ResidualItem.AccountingDocumentCategory = 'S' or

            ResidualItem.AccountingDocumentCategory = 'A'
        )  and

    // Make sure that ResidualItem is a residual item


        ResidualItem.FollowOnDocumentType      = 'V'  and

    // Make sure that ResidualHeader is not a reversal accounting document


        ResidualItem.CompanyCode               = ResidualHeader.CompanyCode  and

        ResidualItem.FiscalYear                = ResidualHeader.FiscalYear and

        ResidualItem.AccountingDocument        = ResidualHeader.AccountingDocument and

        ( ResidualHeader.IsReversal is null or ResidualHeader.IsReversal = '' )
        
    inner join P_ResItemSession as Session on client = $session.client    

    left outer to many join I_ChangeDocument          as ResidualChange on

        (
            ResidualChange.ChangeDocObjectClass    = 'BELEG' or 
      
            ResidualChange.ChangeDocObjectClass = 'BELEGR'
      
        ) and

        ResidualChange.ChangeDocObject           = concat(
            Session.client, concat(
                ResidualHeader.CompanyCode, concat(
                    ResidualHeader.AccountingDocument, ResidualHeader.FiscalYear
                )
            )
        )       
{

  key ResidualItem.CompanyCode,

  key ResidualItem.FiscalYear,

  key ResidualItem.AccountingDocument,

  key ResidualItem.AccountingDocumentItem,
  
  key ResidualChange.CreationDate                   as ChangeDocCreationDate,

  key ResidualChange.CreationTime                   as ChangeDocumentCreationTime,
  
  key ResidualChange.ChangeDocument,

      ResidualItem.AssignmentReference,

      ResidualHeader.AccountingDocumentHeaderText,

      ResidualItem.DocumentItemText,

      ResidualItem.PaymentDifferenceReason,

      ResidualHeader.AccountingDocumentCreationDate as CreationDate,

      ResidualHeader.CreationTime                   as CreationTime,

      ResidualHeader.LastChangeDate                 as LastChangeDate,
     
      ResidualItem.PostingDate,
      ResidualItem.DocumentDate,
      ResidualItem.NetDueDate,
      @Semantics.amount.currencyCode: 'TransactionCurrency'
      ResidualItem.CashDiscountBaseAmount,
      @Semantics.amount.currencyCode: 'TransactionCurrency'
      ResidualItem.CashDiscountAmount,
      ResidualItem.PaymentTerms,
      ResidualItem.CashDiscount1Days,
      ResidualItem.CashDiscount2Days,
      ResidualItem.NetPaymentDays,
      ResidualItem.CashDiscount1Percent,
      ResidualItem.CashDiscount2Percent,
      ResidualItem.DueCalculationBaseDate,
      ResidualItem.FixedCashDiscount,
      ResidualItem.PaymentBlockingReason,
      ResidualItem.TransactionCurrency
}

where
  ( LastChangeDate is not null or LastChangeDate <> '00000000' )
  
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_ACCOUNTINGDOCUMENT",
"I_CHANGEDOCUMENT",
"I_OPERATIONALACCTGDOCITEM",
"P_RESITEMSESSION"
],
"ASSOCIATED":
[],
"BASE":
[],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/