Skip to Content
Personal Insights

Real-Time Open Order Calculation with S/4HANA CDS Views

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.

  1. Select order requested information on schedule line level
  2. Calculate order requested quantity totals and running totals for each order item
  3. Calculate goods issued quantity on order item level
  4. Calculate open quantity e.g. open = requested – goods issued
  5. Calculate open order schedule line value and eliminate order schedule lines that are not open

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

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


Calculate Open Order Schedule Line Value and Eliminate Order Schedule Lines That are Not Open

Note: open order schedule line value is calculated prorating order line value. Not open schedule lines are eliminated checking open quantity



You must be Logged on to comment or reply to a post.
    • Hi Danish,

      Open Order business rules differs from client to client. That is why I kept my explanation shot, simple and client agnostic.

      Explaining complete scenario goes beyond the scope of the blog. I am planning to write a functional blog to explain logic in more details.

      Regards, Uladzislau


  • Indeed a good concept to use AMDP classes by using table function in CDS view and which will be executed in HANA DB directly instead of application layer.

    But in CDS view itself there are so many basic things which we can use like if/else, regular expressions and case statement, and once artefacts are generated code will be pushed inside the HANA DB only.

    So is there is any advantage in performance if we are using simple things like if/else or case or any basic expression in cds itself VS Table function( AMDP class) ?

    Because same functionality we can achieve using cds view without AMDP(Table function).


    Abhijeet Kankani