P_POItemAcctInvoiceTotalCalc
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)
| Source | Alias | Join Type |
|---|---|---|
| I_PurOrdAccountAssignment | I_PurOrdAccountAssignment | from |
Associations (3)
| Cardinality | Target | Alias | Condition |
|---|---|---|---|
| [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)
| Name | Value | Level | Field |
|---|---|---|---|
| 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)
| Key | Field | Source Table | Source Field | Description |
|---|---|---|---|---|
| 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
}
Learn More
- What Is a CDS View in SAP S/4HANA?
- Types of CDS Views: Basic, Composite, Consumption, and Transactional
- SAP Tables vs CDS Views — Key Differences
- Understanding Data Lineage in SAP S/4HANA
- VDM (Virtual Data Model) in SAP S/4HANA Explained
- CDS View Annotations — A Complete Guide
- CDS View Field Mapping and Associations
- Understanding the SAP S/4HANA Data Model
- CDS View Extensions and Custom Fields in SAP S/4HANA
- Released APIs and Stability Contracts in SAP S/4HANA