Real-time open order calculation was always a challenge in R/3 due to slow DB. Developers had no choice but do calculations in ABAP layer with endless loops, if statements and interim tables / variables. With S/4HANA ABAP CDS Views game changing technology it is time to use set based SQL calculations and push calculations to HANA DB where they belong.
In my blog I will explain open order requested not goods issued scenario e.g. open order = requested – goods issued. All calculations are done in CDS view table function using SQL. Table function is very simple and all complexity is inside implementing ABAP Class.
Let me walk you thought set base calculations inside the table function.
- Select order requested information on schedule line level
- Calculate order requested quantity totals and running totals for each order item
- Calculate goods issued quantity on order item level
- Calculate open quantity e.g. open = requested – goods issued
- Calculate open order schedule line value and eliminate order schedule lines that are not open
Note: CASE statement is where open quantity is calculated.
1st when statement is when schedule line is not open e.g. fully goods issued
2nd when statement current schedule line is partially open e.g. partially goods issued
else statement for schedule lines that are open e.g not goods issued
Note: open order schedule line value is calculated prorating order line value. Not open schedule lines are eliminated checking open quantity