P_PurOrderItemCalculation
PO Item Calculated fields
P_PurOrderItemCalculation is a Consumption CDS View that provides data about "PO Item Calculated fields" in SAP S/4HANA. It reads from 2 data sources (I_PurchaseOrderItem, I_PurchaseOrderItem) and exposes 113 fields with key fields PurchaseOrder, PurchaseOrderItem, PurgDocMigrtnIsCmpltdForAnlyts, PurchaseOrderItem, PurgDocMigrtnIsCmpltdForAnlyts. It has 5 associations to related views. Part of development package ODATA_MM_PUR_MYPURGDOCITEMS.
Data Sources (2)
| Source | Alias | Join Type |
|---|---|---|
| I_PurchaseOrderItem | I_PurchaseOrderItem | from |
| I_PurchaseOrderItem | I_PurchaseOrderItem | union_all |
Associations (5)
| Cardinality | Target | Alias | Condition |
|---|---|---|---|
| [1..1] | P_PurchaseOrderConvertedAmount | _ConvertedNetAmount | $projection.PurchaseOrder = _ConvertedNetAmount.PurchaseOrder and $projection.PurchaseOrderItem = _ConvertedNetAmount.PurchaseOrderItem |
| [1..1] | R_PurgDocGoodsReceiptCalc | _GoodsReceiptCalc | $projection.PurchaseOrder = _GoodsReceiptCalc.PurchaseOrder and $projection.PurchaseOrderItem = _GoodsReceiptCalc.PurchaseOrderItem |
| [0..1] | P_POItemHistoryCalc | _POItemHistory | $projection.PurchaseOrder = _POItemHistory.PurchaseOrder and $projection.PurchaseOrderItem = _POItemHistory.PurchaseOrderItem |
| [1..1] | R_POItemEnhcdNextDeliveryCalc | _POItemEnhcdNextDeliveryCalc | _POItemEnhcdNextDeliveryCalc.PurchaseOrder = $projection.PurchaseOrder and _POItemEnhcdNextDeliveryCalc.PurchaseOrderItem = $projection.PurchaseOrderItem |
| [1..1] | R_POItemNextDeliveryCalc | _POItemNextDeliveryCalc | _POItemNextDeliveryCalc.PurchaseOrder = $projection.PurchaseOrder and _POItemNextDeliveryCalc.PurchaseOrderItem = $projection.PurchaseOrderItem |
Annotations (10)
| Name | Value | Level | Field |
|---|---|---|---|
| AbapCatalog.sqlViewName | PPORDITEMCALC | view | |
| AbapCatalog.compiler.compareFilter | true | view | |
| AbapCatalog.preserveKey | true | view | |
| ClientHandling.algorithm | #SESSION_VARIABLE | view | |
| VDM.viewType | #CONSUMPTION | view | |
| VDM.private | true | view | |
| ObjectModel.usageType.serviceQuality | #P | view | |
| ObjectModel.usageType.dataClass | #TRANSACTIONAL | view | |
| AccessControl.authorizationCheck | #PRIVILEGED_ONLY | view | |
| EndUserText.label | PO Item Calculated fields | view |
Fields (113)
| Key | Field | Source Table | Source Field | Description |
|---|---|---|---|---|
| KEY | PurchaseOrder | PurchaseOrder | Purchasing Document | |
| KEY | PurchaseOrderItem | PurchaseOrderItem | Purchasing Document Item | |
| KEY | PurgDocMigrtnIsCmpltdForAnlyts | |||
| PurchaseOrderItemUniqueID | PurchaseOrderItemUniqueID | Document Item | ||
| FormattedPurchaseOrderItem | ||||
| PurchaseOrderItemText | PurchaseOrderItemText | Short Text | ||
| AccountAssignmentCategory | AccountAssignmentCategory | Acct Assgmt Cat | ||
| MaterialGroup | MaterialGroup | Product Group | ||
| Material | Material | Vehicle Model | ||
| CompanyCode | CompanyCode | Receiver Company Code | ||
| Plant | Plant | Valuation Area | ||
| StorageLocation | StorageLocation | StorageLocation | ||
| StorageLocationName | _StorageLocation | StorageLocationName | Storage Loc. Name | |
| ServicePerformer | ServicePerformer | Service Performer | ||
| ProductType | ProductType | Product Type Group | ||
| IsReturnsItem | IsReturnsItem | Returns Item | ||
| ObjectType | ||||
| OrderQuantity | OrderQuantity | Quantity | ||
| NetPriceAmount | NetPriceAmount | Net Price | ||
| NetPriceQuantity | NetPriceQuantity | Price Unit | ||
| NetAmountInCoCodeCurrency | _ConvertedNetAmount | NetAmountInCoCodeCurrency | ||
| OrderPriceUnit | OrderPriceUnit | Order Price Un. | ||
| PurchaseOrderQuantityUnit | PurchaseOrderQuantityUnit | Order Unit | ||
| PurchaseOrderItemCategory | PurchaseOrderItemCategory | Item Category | ||
| DocumentCurrency | DocumentCurrency | Document Currency | ||
| CompanyCodeCurrency | _CompanyCode | Currency | Valuation Crcy | |
| WorkItem | ||||
| GoodsReceiptIsExpected | GoodsReceiptIsExpected | Goods Receipt | ||
| IsCompletelyDelivered | IsCompletelyDelivered | Is completely delivered | ||
| InvoiceIsExpected | InvoiceIsExpected | Invoice Receipt | ||
| IsFinallyInvoiced | IsFinallyInvoiced | Final Invoice | ||
| MultipleAcctAssgmtDistribution | MultipleAcctAssgmtDistribution | Distribution | ||
| PurgDocExternalItemCategory | ||||
| PlantName | _Plant | PlantName | Plant Name | |
| CompanyCodeName | _CompanyCode | CompanyCodeName | Company Name | |
| CreatedByUser | _PurchaseOrder | CreatedByUser | User Name | |
| PurchasingOrganization | _PurchaseOrder | PurchasingOrganization | Purchasing Organization | |
| PurchasingGroup | _PurchaseOrder | PurchasingGroup | Purchasing Group | |
| PurchasingGroupName | ||||
| SupplyingPlant | _PurchaseOrder | SupplyingPlant | Supplying Plant | |
| SupplyingPlantName | ||||
| PurgDocItemCategoryName | ||||
| Supplier | _PurchaseOrder | Supplier | Supplier | |
| SupplierName | ||||
| PurchaseOrderDate | _PurchaseOrder | PurchaseOrderDate | PO Date | |
| PurchasingDocumentType | _PurchaseOrder | PurchaseOrderType | PO Type | |
| CreationDate | _PurchaseOrder | CreationDate | Time Stamp | |
| PurchasingDocumentTypeName | ||||
| IsBusinessPurposeCompleted | ||||
| curr215asGoodsReceiptAmount | ||||
| curr215asStillToBeDeliveredValue | ||||
| InvoiceReceiptQtyendasInvoiceReceiptQty | ||||
| quan133endendendasStillToInvoiceQuantity | ||||
| curr215asStillToInvoiceValue | ||||
| PurchaseOrderType | _PurchaseOrder | PurchaseOrderType | PO Type | |
| _PurchaseOrder | _PurchaseOrder | |||
| PurchaseOrderItemkeyPurchaseOrder | ||||
| KEY | PurchaseOrderItem | PurchaseOrderItem | Purchasing Document Item | |
| KEY | PurgDocMigrtnIsCmpltdForAnlyts | |||
| PurchaseOrderItemUniqueID | PurchaseOrderItemUniqueID | Document Item | ||
| FormattedPurchaseOrderItem | ||||
| PurchaseOrderItemText | PurchaseOrderItemText | Short Text | ||
| AccountAssignmentCategory | AccountAssignmentCategory | Acct Assgmt Cat | ||
| MaterialGroup | MaterialGroup | Product Group | ||
| Material | Material | Vehicle Model | ||
| CompanyCode | CompanyCode | Receiver Company Code | ||
| Plant | Plant | Valuation Area | ||
| StorageLocation | StorageLocation | StorageLocation | ||
| StorageLocationName | _StorageLocation | StorageLocationName | Storage Loc. Name | |
| ServicePerformer | ServicePerformer | Service Performer | ||
| ProductType | ProductType | Product Type Group | ||
| IsReturnsItem | IsReturnsItem | Returns Item | ||
| ObjectType | ||||
| OrderQuantity | OrderQuantity | Quantity | ||
| NetPriceAmount | NetPriceAmount | Net Price | ||
| NetPriceQuantity | NetPriceQuantity | Price Unit | ||
| NetAmountInCoCodeCurrency | _ConvertedNetAmount | NetAmountInCoCodeCurrency | ||
| OrderPriceUnit | OrderPriceUnit | Order Price Un. | ||
| PurchaseOrderQuantityUnit | PurchaseOrderQuantityUnit | Order Unit | ||
| PurchaseOrderItemCategory | PurchaseOrderItemCategory | Item Category | ||
| DocumentCurrency | DocumentCurrency | Document Currency | ||
| CompanyCodeCurrency | _CompanyCode | Currency | Valuation Crcy | |
| WorkItem | ||||
| GoodsReceiptIsExpected | GoodsReceiptIsExpected | Goods Receipt | ||
| IsCompletelyDelivered | IsCompletelyDelivered | Is completely delivered | ||
| InvoiceIsExpected | InvoiceIsExpected | Invoice Receipt | ||
| IsFinallyInvoiced | IsFinallyInvoiced | Final Invoice | ||
| MultipleAcctAssgmtDistribution | MultipleAcctAssgmtDistribution | Distribution | ||
| PurgDocExternalItemCategory | ||||
| PlantName | _Plant | PlantName | Plant Name | |
| CompanyCodeName | _CompanyCode | CompanyCodeName | Company Name | |
| CreatedByUser | _PurchaseOrder | CreatedByUser | User Name | |
| PurchasingOrganization | _PurchaseOrder | PurchasingOrganization | Purchasing Organization | |
| PurchasingGroup | _PurchaseOrder | PurchasingGroup | Purchasing Group | |
| PurchasingGroupName | ||||
| SupplyingPlant | _PurchaseOrder | SupplyingPlant | Supplying Plant | |
| SupplyingPlantName | ||||
| PurgDocItemCategoryName | ||||
| Supplier | _PurchaseOrder | Supplier | Supplier | |
| SupplierName | ||||
| PurchaseOrderDate | _PurchaseOrder | PurchaseOrderDate | PO Date | |
| PurchasingDocumentType | _PurchaseOrder | PurchaseOrderType | PO Type | |
| CreationDate | _PurchaseOrder | CreationDate | Time Stamp | |
| PurchasingDocumentTypeName | ||||
| IsBusinessPurposeCompleted | ||||
| curr215asGoodsReceiptAmount | ||||
| curr215asStillToBeDeliveredValue | ||||
| InvoiceReceiptQtyendasInvoiceReceiptQty | ||||
| quan133endendendasStillToInvoiceQuantity | ||||
| curr215asStillToInvoiceValue | ||||
| PurchaseOrderType | _PurchaseOrder | PurchaseOrderType | PO Type | |
| _PurchaseOrder | _PurchaseOrder | |||
| _ProductType | _ProductType |
Derived SQL interpretation, reconstructed from the parsed view metadata (data sources, associations, and field mappings). SAP annotations are omitted and the structure is reformulated as SQL — this is a functional approximation, not the verbatim SAP source.
-- Derived SQL interpretation of CDS view P_PurOrderItemCalculation.
-- Reconstructed from parsed metadata (data sources, associations, fields).
-- SAP annotations are omitted and the structure is reformulated as SQL;
-- this is a functional approximation, not the verbatim SAP source. Some join
-- conditions may be unavailable and a few CDS constructs are kept as-is.
-- SQL view name: PPORDITEMCALC
CREATE VIEW P_PurOrderItemCalculation AS
SELECT
PurchaseOrder,
PurchaseOrderItem,
cast ('X' as migration_completed) AS PurgDocMigrtnIsCmpltdForAnlyts,
PurchaseOrderItemUniqueID,
concat(concat(PurchaseOrder, '/'), PurchaseOrderItem) AS FormattedPurchaseOrderItem,
PurchaseOrderItemText,
AccountAssignmentCategory,
MaterialGroup,
Material,
CompanyCode,
Plant,
StorageLocation,
_StorageLocation.StorageLocationName AS StorageLocationName,
ServicePerformer,
ProductType,
IsReturnsItem,
cast('1' as numc1) AS ObjectType,
OrderQuantity,
NetPriceAmount,
NetPriceQuantity,
_ConvertedNetAmount.NetAmountInCoCodeCurrency AS NetAmountInCoCodeCurrency,
OrderPriceUnit,
PurchaseOrderQuantityUnit,
PurchaseOrderItemCategory,
DocumentCurrency,
_CompanyCode.Currency AS CompanyCodeCurrency,
cast('' as /cpd/pfp_workitem_id) AS WorkItem,
GoodsReceiptIsExpected,
IsCompletelyDelivered,
InvoiceIsExpected,
IsFinallyInvoiced,
MultipleAcctAssgmtDistribution,
_PurgDocumentItemCategory._Text[1:Language=$session.system_language].PurgDocExternalItemCategory AS PurgDocExternalItemCategory,
_Plant.PlantName AS PlantName,
_CompanyCode.CompanyCodeName AS CompanyCodeName,
_PurchaseOrder.CreatedByUser AS CreatedByUser,
_PurchaseOrder.PurchasingOrganization AS PurchasingOrganization,
_PurchaseOrder.PurchasingGroup AS PurchasingGroup,
_PurchaseOrder._PurchasingGroup.PurchasingGroupName AS PurchasingGroupName,
_PurchaseOrder.SupplyingPlant AS SupplyingPlant,
_PurchaseOrder._SupplyingPlant.PlantName AS SupplyingPlantName,
_PurgDocumentItemCategory._Text[1:Language=$session.system_language].PurgDocItemCategoryName AS PurgDocItemCategoryName,
_PurchaseOrder.Supplier AS Supplier,
_PurchaseOrder._Supplier.SupplierName AS SupplierName,
_PurchaseOrder.PurchaseOrderDate AS PurchaseOrderDate,
_PurchaseOrder.PurchaseOrderType AS PurchasingDocumentType,
_PurchaseOrder.CreationDate AS CreationDate,
_PurchaseOrder._PurchaseOrderType._Text[1:Language = $session.system_language].PurchasingDocumentTypeName AS PurchasingDocumentTypeName,
_PurchaseOrder._Supplier.IsBusinessPurposeCompleted AS IsBusinessPurposeCompleted,
cast( case when (PurchaseOrderItemCategory = 'A' and ProductType = '1') then 0 when (PurchaseOrderItemCategory = 'A' and ProductType = '2') then _POItemHistory.GoodsReceiptAmount when (_GoodsReceiptCalc.GoodsReceiptQuantity is null or OrderQuantity is null or OrderQuantity = 0) then 0 when IsReturnsItem = 'X' then -abs(_GoodsReceiptCalc.GoodsReceiptQuantity * division(NetAmount, OrderQuantity, 4)) else _GoodsReceiptCalc.GoodsReceiptQuantity * division(NetAmount, OrderQuantity, 4) end as abap.curr(21,5)) as GoodsReceiptAmount AS curr215asGoodsReceiptAmount,
cast(case when (GoodsReceiptIsExpected <> 'X' or IsCompletelyDelivered = 'X' or (PurchaseOrderItemCategory = 'A' and ProductType = '1')) then 0 when (PurchaseOrderItemCategory = 'A' and ProductType = '2') then case when _POItemHistory.GoodsReceiptAmount is null then NetAmount else NetAmount - _POItemHistory.GoodsReceiptAmount end when OrderQuantity is null or OrderQuantity = 0 then 0 when IsReturnsItem = 'X' then case when _GoodsReceiptCalc.GoodsReceiptQuantity is null then -abs(NetAmount) else -abs((OrderQuantity - _GoodsReceiptCalc.GoodsReceiptQuantity) * division(NetAmount, OrderQuantity, 4)) end else case when _GoodsReceiptCalc.GoodsReceiptQuantity is null then NetAmount else (OrderQuantity - _GoodsReceiptCalc.GoodsReceiptQuantity) * division(NetAmount, OrderQuantity, 4) end end as abap.curr(21,5)) as StillToBeDeliveredValue AS curr215asStillToBeDeliveredValue,
case when (PurchaseOrderItemCategory = 'A') or _POItemHistory.InvoiceRcptAmtInCoCodeCrcy is null then cast (0 as abap.quan(13, 3)) else _POItemHistory.InvoiceReceiptQty end as InvoiceReceiptQty AS InvoiceReceiptQtyendasInvoiceReceiptQty,
case when (InvoiceIsExpected <> 'X' or IsFinallyInvoiced = 'X' or PurchaseOrderItemCategory = 'A') then cast(0 as abap.quan(13, 3)) else case when _GoodsReceiptCalc.GoodsReceiptQuantity > OrderQuantity then case when IsReturnsItem = 'X' then cast((-1 * _GoodsReceiptCalc.GoodsReceiptQuantity) - (coalesce(_POItemHistory.InvoiceReceiptQty, 0)) as abap.quan(13,3)) else cast(_GoodsReceiptCalc.GoodsReceiptQuantity - (coalesce(_POItemHistory.InvoiceReceiptQty, 0)) as abap.quan(13,3)) end else case when IsReturnsItem = 'X' then cast((-1 * OrderQuantity) - (coalesce(_POItemHistory.InvoiceReceiptQty, 0)) as abap.quan(13,3)) else cast(OrderQuantity - (coalesce(_POItemHistory.InvoiceReceiptQty, 0)) as abap.quan(13,3)) end end end as StillToInvoiceQuantity AS quan133endendendasStillToInvoiceQuantity,
cast(case when (InvoiceIsExpected <> 'X' or IsFinallyInvoiced = 'X') then 0 when (_POItemHistory.InvoiceRcptAmtInCoCodeCrcy is null and IsReturnsItem = 'X') then -abs(_ConvertedNetAmount.NetAmountInCoCodeCurrency) when _POItemHistory.InvoiceRcptAmtInCoCodeCrcy is null then _ConvertedNetAmount.NetAmountInCoCodeCurrency when _POItemHistory.InvoiceRcptAmtInCoCodeCrcy >= _ConvertedNetAmount.NetAmountInCoCodeCurrency then 0 when PurchaseOrderItemCategory = 'A' then _ConvertedNetAmount.NetAmountInCoCodeCurrency - _POItemHistory.InvoiceRcptAmtInCoCodeCrcy when OrderQuantity is null or OrderQuantity = 0 then 0 when IsReturnsItem = 'X' then -abs((OrderQuantity - abs(_POItemHistory.InvoiceReceiptQty)) * division(_ConvertedNetAmount.NetAmountInCoCodeCurrency, OrderQuantity, 4)) when _POItemHistory.InvoiceReceiptQty >= OrderQuantity then cast(0 as abap.curr(21,5)) else (OrderQuantity - abs(_POItemHistory.InvoiceReceiptQty)) * division(_ConvertedNetAmount.NetAmountInCoCodeCurrency, OrderQuantity, 4) end as abap.curr(21,5)) as StillToInvoiceValue AS curr215asStillToInvoiceValue,
_PurchaseOrder.PurchaseOrderType AS PurchaseOrderType
FROM I_PurchaseOrderItem
LEFT OUTER JOIN P_PurchaseOrderConvertedAmount AS _ConvertedNetAmount ON PurchaseOrder = _ConvertedNetAmount.PurchaseOrder AND PurchaseOrderItem = _ConvertedNetAmount.PurchaseOrderItem -- association [1..1]
LEFT OUTER JOIN R_PurgDocGoodsReceiptCalc AS _GoodsReceiptCalc ON PurchaseOrder = _GoodsReceiptCalc.PurchaseOrder AND PurchaseOrderItem = _GoodsReceiptCalc.PurchaseOrderItem -- association [1..1]
LEFT OUTER JOIN P_POItemHistoryCalc AS _POItemHistory ON PurchaseOrder = _POItemHistory.PurchaseOrder AND PurchaseOrderItem = _POItemHistory.PurchaseOrderItem -- association [0..1]
LEFT OUTER JOIN R_POItemEnhcdNextDeliveryCalc AS _POItemEnhcdNextDeliveryCalc ON _POItemEnhcdNextDeliveryCalc.PurchaseOrder = PurchaseOrder AND _POItemEnhcdNextDeliveryCalc.PurchaseOrderItem = PurchaseOrderItem -- association [1..1]
LEFT OUTER JOIN R_POItemNextDeliveryCalc AS _POItemNextDeliveryCalc ON _POItemNextDeliveryCalc.PurchaseOrder = PurchaseOrder AND _POItemNextDeliveryCalc.PurchaseOrderItem = PurchaseOrderItem -- association [1..1]
-- UNION ALL with additional select branch(es): I_PurchaseOrderItem
;
Learn More
- VDM (Virtual Data Model) in SAP S/4HANA Explained
- Types of CDS Views: Basic, Composite, Consumption, and Transactional
- CDS View Annotations — A Complete Guide
- What Is a CDS View in SAP S/4HANA?
- SAP Tables vs CDS Views — Key Differences
- Understanding Data Lineage in SAP S/4HANA
- 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
- BSEG to ACDOCA: The Universal Journal Migration
- Business Partner Migration: KNA1/LFA1 to BUT000
- Material Document Migration: MSEG/MKPF to MATDOC
- How to Find the Right CDS View for an SAP Table
- BW Extractor to CDS View Migration Guide
- S/4HANA CDS View Deprecation: What You Need to Know
- ABAP CDS View Tutorial — From Basics to Real-World Examples
- RAP and CDS Views — Building Transactional Apps in SAP S/4HANA
- Sales Document Status Migration: VBUP/VBUK Removal in S/4HANA
- CO Tables in S/4HANA: COEP, COBK, COSS, COSP to ACDOCA