P_POITEMACCTMATDOC

CDS View

PO Item and Material Document Account Assignment

P_POITEMACCTMATDOC is a CDS View in S/4HANA. PO Item and Material Document Account Assignment. 1 CDS views read from this table.

CDS Views using this table (1)

ViewTypeJoinVDMDescription
P_POItemAcctMatDocCalc view_entity from CONSUMPTION PO Item and Material Document Account Assignment calculation
@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_POItemAcctMatDoc
  as select from I_MaterialDocumentRecord

  association of one to one I_PurchaseOrderHistory as _PurchaseOrderHistory    on  $projection.MaterialDocument                    = _PurchaseOrderHistory.MaterialDocument
                                                                               and $projection.FiscalYear                          = _PurchaseOrderHistory.MaterialDocumentYear
                                                                               and $projection.PurchaseOrder                       = _PurchaseOrderHistory.PurchaseOrder
                                                                               and $projection.PurchaseOrderItem                   = _PurchaseOrderHistory.PurchaseOrderItem
                                                                               and (
                                                                                  //The condition to remove duplicates

                                                                                  _PurchaseOrderHistory.AccountAssignmentNumber    = '00'
                                                                                  or _PurchaseOrderHistory.AccountAssignmentNumber = $projection.AccountAssignmentNum
                                                                                )
                                                                               and $projection.GoodsMovementType                   = _PurchaseOrderHistory.GoodsMovementType
  association [1..1] to I_PurOrdAccountAssignment  as _PurOrdAccountAssignment on  $projection.PurchaseOrder          = _PurOrdAccountAssignment.PurchaseOrder
                                                                               and $projection.PurchaseOrderItem      = _PurOrdAccountAssignment.PurchaseOrderItem
                                                                               and (
                                                                                  $projection.AccountAssignmentNum    = _PurOrdAccountAssignment.AccountAssignmentNumber
                                                                                  or $projection.AccountAssignmentNum = '00'
                                                                                )
{
  key MaterialDocument,
  key FiscalYear,
      PurchaseOrder,
      PurchaseOrderItem,
      AccountAssignmentNumber as AccountAssignmentNum,
      _PurOrdAccountAssignment.AccountAssignmentNumber,
      GoodsMovementType,
      case
           when GoodsReceiptIsNonValuated = '' or _PurOrdAccountAssignment.MultipleAcctAssgmtDistrPercent = 0
            then
             case
              when  _PurchaseOrderHistory.DebitCreditCode = 'S'
              then cast( GoodsReceiptQtyInOrderUnit as abap.dec(13,3) )
              when  _PurchaseOrderHistory.DebitCreditCode = 'H'
      //Credit

              then (-1 * cast( GoodsReceiptQtyInOrderUnit as abap.dec(13,3) ) )
              else cast( 0 as abap.dec(13,3) )
             end
            when GoodsReceiptIsNonValuated = 'X'
              then
               case
                when  _PurchaseOrderHistory.DebitCreditCode = 'S'
                then cast( GoodsReceiptQtyInOrderUnit * (_PurOrdAccountAssignment.MultipleAcctAssgmtDistrPercent / 100 ) as abap.dec(13,3) )
                when  _PurchaseOrderHistory.DebitCreditCode = 'H'
      //Credit

                then (-1 * cast( GoodsReceiptQtyInOrderUnit * (_PurOrdAccountAssignment.MultipleAcctAssgmtDistrPercent / 100 ) as abap.dec(13,3) ) )
                else cast( 0 as abap.dec(13,3) )
               end
             else cast( 0 as abap.dec(13,3) )
           end                as GoodsReceiptQuantity,
      OrderQuantityUnit       as OrderQuantityUnit,
      _PurchaseOrderHistory,
      _PurOrdAccountAssignment
}
where
  _PurchaseOrderHistory.PurchaseOrderTransactionType = '1' //Only posted Goods Receipts