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') or PurchaseOrderItemCategory = '9' 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 = '9' or PurchasingDocumentDeletionCode = 'S' 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 or PurchaseOrderItemCategory = '9' 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' or PurchaseOrderItemCategory = '9' ) 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' or PurchaseOrderItemCategory = '9' or PurchasingDocumentDeletionCode = 'S') 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
INNER JOIN I_PurgAnalyticsConfiguration AS AnalyticalConfiguration ON /* join condition not captured in parsed metadata */
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
;