@AccessControl.authorizationCheck: #PRIVILEGED_ONLY
@VDM.private: true
@VDM.viewType: #COMPOSITE
@ObjectModel.usageType.serviceQuality: #A
@ObjectModel.usageType.sizeCategory: #L
@ObjectModel.usageType.dataClass: #TRANSACTIONAL
define view entity P_PurchaseOrderItemMonitor
as select from I_PurchaseOrderItem as _PurchaseOrderItem
// //used to fetch the Earliest Schedule Line Delivery Date and Open Quantity
association [0..1] to P_POItemNextOpenSchedLineQuan as _NextOpenScheduleLine on $projection.PurchaseOrder = _NextOpenScheduleLine.PurchaseOrder
and $projection.PurchaseOrderItem = _NextOpenScheduleLine.PurchaseOrderItem
// used to fetch aggregated invoice qty , value and GR value from history table
association [0..1] to P_PurOrdItemAggrCast as _PurchaseOrderItemHistory on $projection.PurchaseOrder = _PurchaseOrderItemHistory.PurchaseOrder
and $projection.PurchaseOrderItem = _PurchaseOrderItemHistory.PurchaseOrderItem
{
key PurchaseOrder,
key PurchaseOrderItem,
_PurchaseOrderItem.PurchaseOrderQuantityUnit,
_PurchaseOrderItem.DocumentCurrency,
//Fields to apply filters
_PurchaseOrderItem.Material,
_PurchaseOrderItem.CompanyCode,
_PurchaseOrderItem.Plant,
case when (_PurchaseOrderItem.GoodsReceiptIsExpected <> 'X' or _PurchaseOrderItem.IsCompletelyDelivered = 'X' or _PurchaseOrderItem.PurchaseOrderItemCategory = 'A' or _NextOpenScheduleLine.ScheduleLineDeliveryDate is null ) then cast ('00000000' as abap.dats )
else _NextOpenScheduleLine.ScheduleLineDeliveryDate
end as ScheduleLineDeliveryDate,
@Semantics.quantity.unitOfMeasure : 'PurchaseOrderQuantityUnit'
case when (_PurchaseOrderItem.GoodsReceiptIsExpected <> 'X' or _PurchaseOrderItem.IsCompletelyDelivered = 'X' or _PurchaseOrderItem.PurchaseOrderItemCategory = 'A' or _NextOpenScheduleLine.ScheduleLineDeliveryDate is null ) then cast ( 0 as abap.quan (13,3))
when _PurchaseOrderItem.IsReturnsItem = 'X' then -abs(cast ( _NextOpenScheduleLine.OpenPurchaseOrderQuantity as abap.quan (13,3)))
else cast ( _NextOpenScheduleLine.OpenPurchaseOrderQuantity as abap.quan (13,3))
end as ScheduleLineOpenQty,
@Semantics.quantity.unitOfMeasure : 'PurchaseOrderQuantityUnit'
case when (_PurchaseOrderItem.PurchaseOrderItemCategory = 'A' or _PurchaseOrderItemHistory.GoodsReceiptQuantity is null ) then cast (0 as abap.quan (13, 3))
when _PurchaseOrderItem.IsReturnsItem = 'X' then -abs(_PurchaseOrderItemHistory.GoodsReceiptQuantity)
else _PurchaseOrderItemHistory.GoodsReceiptQuantity
end as GoodsReceiptQty,
cast (case when _PurchaseOrderItem.IsCompletelyDelivered = 'X' and _PurchaseOrderItem.IsFinallyInvoiced = 'X'
then 'X'
else ''
end as xfeld ) as IsCompleted,
@Semantics.amount.currencyCode : 'DocumentCurrency'
case when (_PurchaseOrderItem.PurchaseOrderItemCategory = 'A' and _PurchaseOrderItem.ProductType = '1') then cast (0 as abap.curr (15, 2))
when (_PurchaseOrderItem.PurchaseOrderItemCategory = 'A' and _PurchaseOrderItem.ProductType = '2') then _PurchaseOrderItemHistory.GoodsReceiptAmount
when (_PurchaseOrderItemHistory.GoodsReceiptQuantity is null or _PurchaseOrderItem.OrderQuantity is null or _PurchaseOrderItem.OrderQuantity = 0) then cast (0 as abap.curr (15, 2))
when _PurchaseOrderItem.IsReturnsItem = 'X' then -abs( _PurchaseOrderItemHistory.GoodsReceiptAmount )
else _PurchaseOrderItemHistory.GoodsReceiptAmount
end as GoodsReceiptAmountInCoCodeCrcy,
@Semantics.quantity.unitOfMeasure : 'PurchaseOrderQuantityUnit'
case when (_PurchaseOrderItem.GoodsReceiptIsExpected <> 'X' or _PurchaseOrderItem.IsCompletelyDelivered = 'X' or _PurchaseOrderItem.PurchaseOrderItemCategory = 'A') then cast (0 as abap.quan (13, 3))
when _PurchaseOrderItem.IsReturnsItem = 'X'
then
case when _PurchaseOrderItemHistory.GoodsReceiptQuantity is null then -abs(_PurchaseOrderItem.OrderQuantity)
else -abs(_PurchaseOrderItem.OrderQuantity - abs(_PurchaseOrderItemHistory.GoodsReceiptQuantity))
end
else
case when _PurchaseOrderItemHistory.GoodsReceiptQuantity is null then _PurchaseOrderItem.OrderQuantity
else _PurchaseOrderItem.OrderQuantity - _PurchaseOrderItemHistory.GoodsReceiptQuantity
end
end as StillToBeDeliveredQuantity,
@Semantics.amount.currencyCode : 'DocumentCurrency'
case when (_PurchaseOrderItem.GoodsReceiptIsExpected <> 'X' or _PurchaseOrderItem.IsCompletelyDelivered = 'X' or _PurchaseOrderItem.GoodsReceiptIsNonValuated = 'X' or
(_PurchaseOrderItem.PurchaseOrderItemCategory = 'A' and _PurchaseOrderItem.ProductType = '1'))
then cast (0 as abap.curr (15, 2))
when (_PurchaseOrderItem.PurchaseOrderItemCategory = 'A' and _PurchaseOrderItem.ProductType = '2')
then
case when _PurchaseOrderItemHistory.GoodsReceiptAmount is null then _PurchaseOrderItem.NetAmount
else _PurchaseOrderItem.NetAmount - _PurchaseOrderItemHistory.GoodsReceiptAmount
end
when _PurchaseOrderItem.OrderQuantity is null or _PurchaseOrderItem.OrderQuantity = 0 or _PurchaseOrderItem.NetPriceQuantity = 0 then cast (0 as abap.curr (15, 2))
when _PurchaseOrderItem.IsReturnsItem = 'X'
then
case when _PurchaseOrderItemHistory.GoodsReceiptQuantity is null or _PurchaseOrderItemHistory.GoodsReceiptQuantity = 0 then -abs(_PurchaseOrderItem.NetAmount)
else -abs(_PurchaseOrderItem.NetAmount - abs(- _PurchaseOrderItemHistory.GoodsReceiptAmount) )
end
else
case
when _PurchaseOrderItemHistory.GoodsReceiptQuantity is null or _PurchaseOrderItemHistory.GoodsReceiptQuantity = 0
then _PurchaseOrderItem.NetAmount
else
cast ( (
cast ( _PurchaseOrderItem.NetPriceAmount as abap.dec (15,2) ) / cast ( _PurchaseOrderItem.NetPriceQuantity as abap.dec (13,3)) )
* ( _PurchaseOrderItem.OrderQuantity - abs(_PurchaseOrderItemHistory.GoodsReceiptQuantity) ) as abap.curr ( 15, 2 ) )
end
end as StillToBeDeliveredValue,
@Semantics.quantity.unitOfMeasure : 'PurchaseOrderQuantityUnit'
case when (_PurchaseOrderItem.PurchaseOrderItemCategory = 'A' or _PurchaseOrderItemHistory.InvoiceReceiptQty is null ) then cast (0 as abap.quan (13, 3))
else _PurchaseOrderItemHistory.InvoiceReceiptQty
end as InvoiceReceiptQty,
@Semantics.amount.currencyCode : 'DocumentCurrency'
case when _PurchaseOrderItemHistory.InvoiceReceiptAmount is null then cast (0 as abap.curr (15,2))
else _PurchaseOrderItemHistory.InvoiceReceiptAmount
end as InvoiceReceiptAmount,
@Semantics.quantity.unitOfMeasure : 'PurchaseOrderQuantityUnit'
case when (_PurchaseOrderItem.InvoiceIsExpected <> 'X' or _PurchaseOrderItem.IsFinallyInvoiced = 'X' or _PurchaseOrderItem.PurchaseOrderItemCategory = 'A') then cast (0 as abap.quan (13, 3))
when (_PurchaseOrderItemHistory.InvoiceReceiptQty is null and _PurchaseOrderItem.IsReturnsItem = 'X') then -abs(_PurchaseOrderItem.OrderQuantity)
when _PurchaseOrderItemHistory.InvoiceReceiptQty is null then _PurchaseOrderItem.OrderQuantity
when _PurchaseOrderItemHistory.InvoiceReceiptQty >= _PurchaseOrderItem.OrderQuantity then cast (0 as abap.quan (13, 3))
when _PurchaseOrderItem.IsReturnsItem = 'X' then -abs(_PurchaseOrderItem.OrderQuantity - abs(_PurchaseOrderItemHistory.InvoiceReceiptQty))
else _PurchaseOrderItem.OrderQuantity - _PurchaseOrderItemHistory.InvoiceReceiptQty
end as StillToInvoiceQuantity,
@Semantics.amount.currencyCode : 'DocumentCurrency'
case when (InvoiceIsExpected <> 'X' or IsFinallyInvoiced = 'X') then cast (0 as abap.curr (15, 2))
when (_PurchaseOrderItemHistory.InvoiceReceiptAmount is null and IsReturnsItem = 'X') then -abs(NetAmount)
when _PurchaseOrderItemHistory.InvoiceReceiptAmount is null then NetAmount
when ( NetAmount <= abs(_PurchaseOrderItemHistory.InvcRcptAmtWthoutNonDcblTaxAmt) ) and IsReturnsItem = 'X' then cast (0 as abap.curr (15, 2))
when _PurchaseOrderItemHistory.InvcRcptAmtWthoutNonDcblTaxAmt >= NetAmount then cast (0 as abap.curr (15, 2))
when PurchaseOrderItemCategory = 'A' then NetAmount - _PurchaseOrderItemHistory.InvcRcptAmtWthoutNonDcblTaxAmt
when OrderQuantity is null or OrderQuantity = 0 then cast (0 as abap.curr (15, 2))
when IsReturnsItem = 'X' then -abs(NetAmount - abs(_PurchaseOrderItemHistory.InvcRcptAmtWthoutNonDcblTaxAmt))
when _PurchaseOrderItemHistory.InvoiceReceiptQty >= OrderQuantity then cast (0 as abap.curr (15, 2))
else NetAmount - _PurchaseOrderItemHistory.InvcRcptAmtWthoutNonDcblTaxAmt
end as StillToInvoiceValue,
_PurchaseOrderItemHistory
}
where
_PurchaseOrderItem.PurchasingDocumentDeletionCode = ''
and _PurchaseOrder.PurchasingDocumentDeletionCode = ''
and _PurchaseOrder.PurchasingCompletenessStatus <> 'X'
// and POSchedLineReqFileds2.POItem.PurchaseOrderItemCategory <> '9' "Not appicable for Public Cloud
and _PurchaseOrderItem.PurchaseOrderItemCategory <> '1'
and not (
_PurchaseOrderItem.IsStatisticalItem = 'X'
)
Depth:
1
2
3
4
5
All
Reload
P_PurchaseOrderItemMonitor view_entity