Saturday, August 5, 2017

New SAP Controlling Course

New SAP Controlling Course

I am creating new SAP Controlling courses. There will be four courses in total:
  • Overhead Cost Management
  • Profit Center Accounting
  • Profitability Analysis
  • Product Costing
The courses will be a deep dive into the configuration settings required to get SAP CO up and running and will also include changes in the Controlling module's transactions and configuration brought by S/4.

let me know what you think and also if you have any requests for specific raining topics.

Here is a preview of one of the lectures:

Thursday, July 27, 2017

New lectures added

New lectures added

Based on some requests I have had over the last few weeks, I have added new lectures on how to create Planning Functions in BPC Embedded as AMDP's.

You can have a preview of the lectures below:

Tuesday, February 28, 2017

New school on

My SAP BCP and HANA school is now on

This school contains two great courses. One for SAP BPC Fundamentals for application design, and the other a SAP BPC Price Planning Application. 

What makes teachable so great is that you can subscribe to the course on a monthly basis or pay an annual subscription rate at a reduced cost.

The school can be accessed here.

Monday, February 27, 2017

Characteristic Relationships as AMDP

Characteristic Relationships as AMDP

In the course of the last few days I have been working on a BW system 740 SP10 and trying to get a Characteristic Relationship with an ABAP Managed Database Procedure to work. I have followed all the documentation published by SAP and countless blogs, but I continued to get errors.

Whenever I execute a planning sequence, I get a short dump:

There is no information in this short dump. Looking at the HANA logs, and a little more information is obtained:

Procedure/Function 'SAPXXX'.'ZCL_DEMO=>DERIVE' not found in catalog!


The solution to this problem is hidden away in the ABAP documentation and is not intuitive at all. I have added the full process to create a CR with AMDP to my teachable course, that you can access here:

Wednesday, February 22, 2017

Saturday, February 18, 2017

Price Planning in BPC

Price Planning in BPC

I have released a new set of videos on Price Planning on BPC. The course is not 100% complete, but you can access the completed videos on YouTube. All the links to the videos are on the SAP BPC Price Planning page, and you access the first video right here:

Let me know what up think.

Friday, January 13, 2017

Debugging FOX: Part 2


In this second post on ways to debug FOX code in SAP BPC Embedded/BI-IP, I will focus on the debugging of the generated ABAP code.

Two methods exists:
1 - Debug the fox code itself as FOX script, covered here, and
2 - Debug the generated ABAP code, covered in this post.

Debug FOX Code ABAP

This method of debugging is very helpful if you know some ABAP, of course, as it shows you on source code level the statements that are being executed. Once you get to grips with the way the statements work, it becomes a lot easier and it is my preferred way of debugging.

To start off, go the transaction RSPLAN and select the FOX code you want to debug. In the code at the point you want the breakpoint, simply add the statement BREAK-POINT.

Execute the code with Trace Mode and you will step into the  ABAP Debugger. Some this to look out for in the debugging of FOX:

Key Figure Value assignment, for example:


Is generated in ABAP as:


GS_OPER-0FISCPER = '0000000'.

A further ABAP statement is generated that reads the reference data table to get the value:


Stepping into this statement and the assignment takes place here:

READ TABLE ith_data ASSIGNING <s_data> WITH TABLE KEY s_chas is_oper.
 IF sy-subrc 0.

is_oper contains the values of the block characteristics and the fields to be changed and is used a the key for the table read against the reference data. This is why, when the fields to be changed contains more than one characteristic value, a foreach loop is required, else the io_oper structure will be incomplete. This is further supported by the fact that a READ statement is executed, rather than a LOOP... WHERE

sy-subrc of course gives the indication whether a record has been found or not. 


The generated code for the FOREACH loop is generated as follows:
                   USING LT_CUR_FIELDS_00001 XT_REF_DATA
                   CHANGING L_CUR_00001_CNT.

It is quite convenient to view the data in the reference table and to get the record of the current iteration. From here, everything follows the same pattern of Key Figure Value assignment and then the table read.

Happy debugging and let me know what your thoughts are on this post.

I will also be making a video, and will update this entry as soon as it is done.