Spend reporting is an important AP requirement that helps companies better understand and control their expenses. Traditionally, companies that run SAP approach Spend reporting with BW solutions.
When it comes to Spend reporting BW gives little to no advantage compared to S/4HANA Embedded Analytics due to rigid extraction process and need of complex transformations and native modeling. It makes total sense to bring Spend reporting back to S/4HANA where it belongs.
S/4HANA Embedded Analytics Spend data can be sliced and diced in Analysis for Office or visualized using SAP Analytics Cloud or Power BI.
But first come first – we need to be build the solution:
- CDS view cube that provides all necessary details for analysis and KPI modeling
- Query that models KPIs and expose data for consumption
Spend CDS cube view is quite complex
But idea is simple – self-joining account document item information to derive expense items information along with supplier information
And also isolating AP transactions restricting data by posting key and supplier count:
Such a way intercompany transactions, data error entries and process problems (for example, multiple travel expenses paid to different employees in one document) are excluded.
For Spend query I decided to go with BW query option instead of CDS view query:
BW query makes definition of calculated and restricted measures easy (no multiple nested views and less coding thanks to visual interface). Let me show you how easy PO Penetration Rate KPI is modeled (measures percentage of AP documents with PO compared compared to overall number of AP documents):
- Defined PO Spend Amount restricted measure
- Defined PO Spend Count calculated measure counting number of documents for which PO Spend Amount is not 0
- Defined Spend count calculated measure
- Defined PO Penetration Rete calculated measure
Besides of BW query supports advanced variable handling. Using OLAP variable I limited data selection 1 year to making sure that S/4HANA system is not overstressed if very detailed query is run open wide.
OLAP variable provides default values and data entry validation. The variable logic is coded in implementation class of RSROA_VARIABLES_EXIT BADI
Intercompany transactions, data error entries and process problems are excluded from Spend reporting, but can be analyzed separately as Spend Exceptions reporting. For this I created Spend Exception CDS view cube.
This is how Spend Exceptions are isolated from the rest of Spend data
For Spend exception data consumption I also created BW query built on top Spend Exception CDS view cube transient provider. Spend Exception query does not model any KPIs, just provides detailed information about financial transaction for case by case analysis to understand data entry errors or processes issues.
For more information about Spend reporting implementation please refer to source code on GitHub