A common misunderstanding when working with non-cumulatives is the creation of non-cumulative values for non-cumulatives values according to the validity interval and thus dates being displayed in the query that have no posted movements in the InfoCube.
In the InfoCube there are only 2 movements posted, the requests have not been compressed. For document number 0012345678 the movement is posted for 0CALDAY 06.07.2015.
In the adhoc query for this InfoCube NRICC07/!NRICC07 in RSRT on this, restricted for 0CALDAY 07.07.2015
On first glance this might be interpreted as an 'unexpected movement'.
Looking into the details of the non-cumulatives logic, this is easily understood.
The purpose of non-cumulative key figures is to provide stock values for days where no movement has been posted in the InfoCube (to avoid snapshot loading and creating huge InfoCubes for articles with low turnover (see the SCN HowTo Paper for the 2 scenarios).
Say article 'MANGO' in our example has only movements for 06.07.2015 and 08.07.2015, but in our query we would be interested what the stock value on 07.07.2015 was, the non cumulative key figure would provide this stock value for a day where no movements exist. So, the 'unexpected movements' are actually appearing due to the usage of stock (non-cumulative) key figurs.
For the calculation of this stock value see SAP note 1548125 'Interesting facts about Inventory Cubes' in point
- [II.d]Calculation of Non-Cumulatives in a Query (Reporting)
The query calculates the stock for the requested points in time(t) by using the movements(inflow and outflow) and the marker.
It starts with the calculation of the current stock value (CSV): [Marker + (total delta (change,movement) of all uncompressed requests)]:
CSV = [M + SUM(deltas with requestid>0)]
Then it calculates 'backwards' the stock value for the requested day(t):
Value(t) = CSV - SUM(deltas with time>t)
Filling this formula with the sample values for document number 12345678:
time(t) - 07.07.2015
Marker = 0 (all requests are uncompressed so no technical marker with 0RECORDTP=1 has been created in this sample)
total delta of uncompressed requests= -450 (SUM(deltas with requestid>0)) = 40-490
current stock value (CSV) = -450 ((Marker=0) + (total delta of all uncompressed request= - 450 ))
movements since 07072015 = 0 (there is only a value for a second posted document number )
Value (07072015) = -450 (CSV - SUM(deltas with time>t))
So, the cells for 0ISSTOTSTCK and for 0RECTOTSTCK are empty as there really are no movements, but a calculated stock exists and thus a record is displayed
- Technically, 0DOC_NUM and 0MATERIAL are 2 characteristics in the reporting sense, it might be easier for you if you replace 0DOC_NUM with CHAR1 and 0MATERIAL with CHAR2. The system cannot treat them differently.
- The number of days that are actually calculated is not 1:1 determined by the movements dates in the InfoCube, but taken from the validity interval (either derived from the movement dates or set fix in transaction RSDV)
- So, removing the non-cumulative key figure and reporting on the movement key figures is then again displaying data 1:1 to the cube and in this case 'No applicable data found for 07.07.2015
- The usage of characteristics like 0DOC_NUM or movement type is not very helpful in stock reporting (see also Unexpected numbers for movement type), usually it is of interested what stock value currently exists for a certain material and/or plant, for a document number the purpose of a stock value remains rather unclear.