P_InvtryTurnoverStock is a Consumption CDS View that provides data about "Inventory Turnover Stock Calculation" in SAP S/4HANA. It reads from 1 data source (I_MaterialDocumentRecord) and exposes 22 fields with key fields Material, Plant, Supplier, InventoryValuationType, InventoryStockType. It has 7 associations to related views. Part of development package ODATA_MM_IM_INV_TURNOVR_ANLYS.
@AccessControl.authorizationCheck: #NOT_REQUIRED@ObjectModel.usageType.sizeCategory: #XXL@ObjectModel.usageType.serviceQuality: #D@ObjectModel.usageType.dataClass:#TRANSACTIONAL@EndUserText.label: 'Inventory Turnover Stock Calculation'
@VDM.private: true@VDM.viewType: #CONSUMPTION@DataAging.noAgingRestriction: true// Copy of I_MATERIALSTOCK but this view filters also cancelled document items and also does not// consider intra plant stock transfers as stock increase / decrease. It has a reduced field set too.
// This view shall be replaced with I_MATERIALSTOCK VDM Viewas soon as this referenced
// viewis able to filter cancelled documents.
// For this reason, this viewisnot marked as VDM Viewas it is only used for Fiori.
defineviewentity P_InvtryTurnoverStock
asselectfrom I_MaterialDocumentRecord as matdoc
association [1..1] to I_Material as _Material on $projection.Material = _Material.Material
association [1..1] to I_CompanyCode as _CompanyCode on $projection.CompanyCode = _CompanyCode.CompanyCode
association [1..1] to I_Plant as _Plant on $projection.Plant = _Plant.Plant
association [0..1] to I_Supplier as _Supplier on $projection.Supplier = _Supplier.Supplier
association [1..1] to I_InventoryStockType as _InventoryStockType on $projection.InventoryStockType = _InventoryStockType.InventoryStockType
association [1..1] to I_InventorySpecialStockType as _InventorySpecialStockType on $projection.InventorySpecialStockType = _InventorySpecialStockType.InventorySpecialStockType
association [1..1] to I_UnitOfMeasure as _UnitOfMeasure on $projection.MaterialBaseUnit = _UnitOfMeasure.UnitOfMeasure
{
// All fields have to be defined askey field and quantity/value have to be summarized on this lowest level
// in addition to the annotation for aggregation (#SUM)
// This is especiall required for consumption views used by users with restricted authorization to get the right results
// (just because right now an INNERJOINis created which may multiply the result set and hence the aggregate is wrong)
//
// Stock Identifier
key StockIdentifyingMaterial as Material,
key Plant,
key Supplier,
key InventoryValuationType,
key InventoryStockType,
key InventorySpecialStockType,
// Further Stock Groups
key CompanyCode,
key FiscalYearVariant,
key PostingDate as MatlDocLatestPostgDate,
// Units
key MaterialBaseUnit,
key CostEstimate,
// Quantity and Value
@Semantics.quantity.unitOfMeasure: 'MaterialBaseUnit'
@DefaultAggregation : #SUM
sum(MatlStkChangeQtyInBaseUnit) as MatlWrhsStkQtyInMatlBaseUnit,
@Semantics.quantity.unitOfMeasure: 'MaterialBaseUnit'
@DefaultAggregation : #SUM
sum(MatlCnsmpnQtyInMatlBaseUnit) as MatlCnsmpnQtyInMatlBaseUnit,
@Semantics.quantity.unitOfMeasure: 'MaterialBaseUnit'
@DefaultAggregation : #SUMcast(sum(
casewhen IssuingOrReceivingPlant = ''
or IssuingOrReceivingPlant <> Plant
or IssgOrRcvgMaterial <> StockIdentifyingMaterial
thencasewhen MatlStkChangeQtyInBaseUnit > 0 then MatlStkChangeQtyInBaseUnit else 0 end// do not consider intra-plant stock transfers here
else 0 end
) asabap.dec(23, 3) ) as MatlStkIncrQtyInMatlBaseUnit,
@Semantics.quantity.unitOfMeasure: 'MaterialBaseUnit'
@DefaultAggregation : #SUMcast(sum(
casewhen IssgOrRcvgStkIdfgPlant = '' //v2834623
or IssgOrRcvgStkIdfgPlant <> Plant
or IssgOrRcvgStkIdfgMaterial <> StockIdentifyingMaterial //^2834623
thencasewhen MatlStkChangeQtyInBaseUnit < 0 then abs(MatlStkChangeQtyInBaseUnit) else 0 end// do not consider intra-plant stock transfers here
else 0 end
) asabap.dec(23, 3) ) as MatlStkDecrQtyInMatlBaseUnit,
// Associations for names and descriptions
_UnitOfMeasure,
_Material,
_CompanyCode,
_Plant,
_Supplier,
_InventoryStockType,
_InventorySpecialStockType
}
// filterall storno documents
where GoodsMovementIsCancelled <> 'X'
and GoodsMovementCancellationType <> '2'
and GoodsMovementCancellationType <> '3'
and MaterialBaseUnit <> ''
and MaterialDocumentRecordType <> 'AG_MDOC_CF'
groupby
StockIdentifyingMaterial,
Plant,
Supplier,
InventoryValuationType,
InventoryStockType,
InventorySpecialStockType,
CompanyCode,
FiscalYearVariant,
PostingDate,
MaterialBaseUnit,
CostEstimate