P_InvtryTurnoverStockPerDay 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 8 fields with key fields Material, Plant, MatlDocLatestPostgDate, MaterialBaseUnit. It has 2 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_InvtryTurnoverStockPerDay
asselectfrom I_MaterialDocumentRecord as matdoc
association [1..1] to I_Material as _Material on $projection.Material = _Material.Material
association [1..1] to I_Plant as _Plant on $projection.Plant = _Plant.Plant
{
// 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 matdoc.StockIdentifyingMaterial as Material,
key matdoc.Plant,
// Further Stock Groups
key matdoc.PostingDate as MatlDocLatestPostgDate,
// Quantity and Value
key matdoc.MaterialBaseUnit as MaterialBaseUnit,
@DefaultAggregation : #SUM@Semantics.quantity.unitOfMeasure: 'MaterialBaseUnit'
sum(matdoc.MatlCnsmpnQtyInMatlBaseUnit) as MatlCnsmpnQtyInMatlBaseUnit,
@DefaultAggregation : #SUM@Semantics.quantity.unitOfMeasure: 'MaterialBaseUnit'
cast(sum(
casewhen matdoc.IssgOrRcvgStkIdfgPlant = '' //v2834623
or matdoc.IssgOrRcvgStkIdfgPlant <> matdoc.Plant
or matdoc.IssgOrRcvgStkIdfgMaterial <> matdoc.StockIdentifyingMaterial //^2834623
thencasewhen matdoc.MatlStkChangeQtyInBaseUnit < 0 then abs(matdoc.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
_Material,
_Plant
}
// filterall storno documents
where matdoc.GoodsMovementIsCancelled <> 'X'
and matdoc.GoodsMovementCancellationType <> '2'
and matdoc.GoodsMovementCancellationType <> '3'
and matdoc.MaterialBaseUnit <> ' '
and matdoc.MaterialDocumentRecordType <> 'AG_MDOC_CF'
and matdoc.InventorySpecialStockType = ' '
groupby
matdoc.StockIdentifyingMaterial,
matdoc.Plant,
matdoc.PostingDate,
matdoc.MaterialBaseUnit