P_POItemAcctInvoiceTotalCalc

DDL: P_POITEMACCTINVOICETOTALCALC Type: view_entity CONSUMPTION Package: ODATA_MM_PUR_POITEMACCT_MNTR

PO Item Acc Assignment Invoice Total Values calculation

P_POItemAcctInvoiceTotalCalc is a Consumption CDS View that provides data about "PO Item Acc Assignment Invoice Total Values calculation" in SAP S/4HANA. It reads from 1 data source (I_PurOrdAccountAssignment) and exposes 8 fields with key fields PurchaseOrder, PurchaseOrderItem, AccountAssignmentNumber. It has 3 associations to related views. Part of development package ODATA_MM_PUR_POITEMACCT_MNTR.

Data Sources (1)

SourceAliasJoin Type
I_PurOrdAccountAssignment I_PurOrdAccountAssignment from

Associations (3)

CardinalityTargetAliasCondition
[1..1] P_TotalGrInvQty _TotalGrInvQty $projection.PurchaseOrder = _TotalGrInvQty.PurchaseOrder and $projection.PurchaseOrderItem = _TotalGrInvQty.PurchaseOrderItem
[0..1] P_POItemAcctInvoiceCalc _POItemAcctInvoiceCalc $projection.PurchaseOrder = _POItemAcctInvoiceCalc.PurchaseOrder and $projection.PurchaseOrderItem = _POItemAcctInvoiceCalc.PurchaseOrderItem and $projection.AccountAssignmentNumber = _POItemAcctInvoiceCalc.AccountAssignmentNumber
[0..1] P_POItemAcctMatDocCalc _POItemAcctMatDocCalc $projection.PurchaseOrder = _POItemAcctMatDocCalc.PurchaseOrder and $projection.PurchaseOrderItem = _POItemAcctMatDocCalc.PurchaseOrderItem and ( $projection.AccountAssignmentNumber = _POItemAcctMatDocCalc.AccountAssignmentNumber or _POItemAcctMatDocCalc.AccountAssignmentNumber = '00' )

Annotations (6)

NameValueLevelField
AccessControl.authorizationCheck #PRIVILEGED_ONLY view
VDM.private true view
VDM.viewType #CONSUMPTION view
ObjectModel.usageType.serviceQuality #A view
ObjectModel.usageType.sizeCategory #L view
ObjectModel.usageType.dataClass #TRANSACTIONAL view

Fields (8)

KeyFieldSource TableSource FieldDescription
KEY PurchaseOrder PurchaseOrder
KEY PurchaseOrderItem PurchaseOrderItem
KEY AccountAssignmentNumber AccountAssignmentNumber
OrderQuantityUnit OrderQuantityUnit
Quantity Quantity
_TotalGrInvQty _TotalGrInvQty
_POItemAcctMatDocCalc _POItemAcctMatDocCalc
_POItemAcctInvoiceCalc _POItemAcctInvoiceCalc
@AccessControl.authorizationCheck: #PRIVILEGED_ONLY
@VDM: { private: true,
        viewType: #CONSUMPTION
      }
@ObjectModel.usageType.serviceQuality: #A
@ObjectModel.usageType.sizeCategory: #L
@ObjectModel.usageType.dataClass: #TRANSACTIONAL

define view entity P_POItemAcctInvoiceTotalCalc
  as select from I_PurOrdAccountAssignment
  association [1..1] to P_TotalGrInvQty         as _TotalGrInvQty         on  $projection.PurchaseOrder     = _TotalGrInvQty.PurchaseOrder
                                                                          and $projection.PurchaseOrderItem = _TotalGrInvQty.PurchaseOrderItem
  association [0..1] to P_POItemAcctInvoiceCalc as _POItemAcctInvoiceCalc on  $projection.PurchaseOrder           = _POItemAcctInvoiceCalc.PurchaseOrder
                                                                          and $projection.PurchaseOrderItem       = _POItemAcctInvoiceCalc.PurchaseOrderItem
                                                                          and $projection.AccountAssignmentNumber = _POItemAcctInvoiceCalc.AccountAssignmentNumber
  association [0..1] to P_POItemAcctMatDocCalc  as _POItemAcctMatDocCalc  on  $projection.PurchaseOrder                       = _POItemAcctMatDocCalc.PurchaseOrder
                                                                          and $projection.PurchaseOrderItem                   = _POItemAcctMatDocCalc.PurchaseOrderItem
                                                                          and (
                                                                             $projection.AccountAssignmentNumber              = _POItemAcctMatDocCalc.AccountAssignmentNumber
                                                                             or _POItemAcctMatDocCalc.AccountAssignmentNumber = '00' //Case of Single Assignment

                                                                           )
{
  key PurchaseOrder,
  key PurchaseOrderItem,
  key AccountAssignmentNumber,
      OrderQuantityUnit,

      /*Still to Invoice Quantity*/
      @Semantics.quantity.unitOfMeasure: 'OrderQuantityUnit'
      case
       when _PurchaseOrderItem.IsFinallyInvoiced = 'X' then cast(0 as abap.quan(13,3))
       when _PurchaseOrderItem.InvoiceIsExpected = ' ' then cast(0 as abap.quan(13,3))
       else case
            when _PurchaseOrderItem.GoodsReceiptIsExpected = 'X'
            and (_PurchaseOrderItem.IsCompletelyDelivered <> ''
            or _TotalGrInvQty.GoodsReceiptQty > _PurchaseOrderItem.OrderQuantity )

            then
               case
               when  _POItemAcctInvoiceCalc.InvoiceReceiptQuantity is null
               then  cast(abs(_POItemAcctMatDocCalc.GoodsReceiptQuantity) as abap.quan(13,3))
               else cast(abs( _POItemAcctMatDocCalc.GoodsReceiptQuantity) - abs(_POItemAcctInvoiceCalc.InvoiceReceiptQuantity) as abap.quan(13,3))
            end
            else
               case
               when  cast(_POItemAcctInvoiceCalc.InvoiceReceiptQuantity as abap.quan(13,3)) >= Quantity
               then  cast(0 as abap.quan(13,3))
               when  _POItemAcctInvoiceCalc.InvoiceReceiptQuantity != 0 or _POItemAcctInvoiceCalc.InvoiceReceiptQuantity is not null
               then cast(cast(Quantity as abap.dec(13,3)) - abs(cast(_POItemAcctInvoiceCalc.InvoiceReceiptQuantity as abap.dec(13,3))) as abap.quan(13,3))
               else  Quantity
               end
            end
       end as DistributedStillToInvoiceQty,
      @Semantics.quantity.unitOfMeasure: 'OrderQuantityUnit'
      Quantity,


      _TotalGrInvQty,
      _POItemAcctMatDocCalc,
      _POItemAcctInvoiceCalc
}