Leading S/4HANA UX – Solving No Data Available for Smart Business Apps
Latest update 10.04.2019 – with thanks to Felipe Rodrigues – you should first check this SAP Note
What to do when your Fiori Smart Business app is showing “no data available” and yet your functional experts and users are certain the data is there.
So the conversation with your functional expert or user usually starts like this …. “This Fiori app is not working. We have data there but the app is showing no data available. Please fix it”.
When you look at the app, you see it’s a Smart Business app – aka KPI Tile. Nearly always there is nothing wrong with the SAP Fiori app. There just genuinely isn’t any data being provided to the app by the underlying CDS View that extracts the data.
What’s the problem here? Well it may be just perception. When the user claims there is definitely data there they will not be looking at the CDS View itself but from other perspectives. It’s like complaining a photograph of a party is wrong because it’s not showing everyone at the party – and you know that person was there! They might be there, but the person has to be in the frame of the photograph to be seen.
The question you want to ask is WHY isn’t the CDS View returning any data. It’s almost always caused by one or more of the following:
- Missing table data
- Mismatched table data
- Data exists but does not match the parameters being used
- Missing authorizations
To solve your “no data available” message you will need to:
- Find the CDS View and parameters being used
- Test your CDS View without Authorizations
- Investigate the underlying CDS View hierarchy
WARNING: You can do some light diagnosis just using the Fiori apps for the Analytics Specialist. However deep diagnosis will require ABAP developer skills and the ABAP Development Tools for Eclipse tool.
TIP: Before doing anything, first check for error messages in the SAPGUI transaction /IWFND/ERROR_LOG in your Fiori Frontend Server. If your SAP Fiori app has not been implemented correctly, or there’s an obvious problem with the underlying OData Service, it’s likely to be listed here.
It’s also a good idea to quickly check transaction SU53 or STAUTHTRACE for any possible authorization issues.
Latest Updates: Known issues addressed in SAP Notes
Finding the CDS View & Parameters
In SAP S/4HANA, as per the ABAP Programming Model for Fiori, SAP Fiori Smart Business apps extract data using a Core Data Services (CDS) View. You can find the CDS View using the KPI Workspace app.
TIP: To use the KPI Workspace app you need to be assigned to the Analytics Specialist security role: SAP_BR_ANALYTICS_SPECIALIST or an equivalent custom role.
Drill down into the Evaluation and open the Data Source tab. This gives you the CDS View and the parameters used. In this example the view is C_ACTUALCASHFLOWANALYTICS_CDS.
Testing the CDS View without Authorizations
There are two (2) ways to test your CDS View:
- Using the SAP Fiori View Browser app
- Using ABAP Development Tools for Eclipse
- For this you will need Developer skills
Testing using the View Browser app is a good place to start. It will only let you do some light diagnosis but hat might be all you need. And at least you can eliminate the obvious before you hand it over to a developer.
TIP: To use the View Browser app you need to be assigned to the Analytics Specialist security role: SAP_BR_ANALYTICS_SPECIALIST or an equivalent custom role.
Testing the CDS View using the View Browser
Open the View Browser app and search for the CDS View by entering part of the name in the filter. You can narrow down the selection by looking for Consumption views (i.e. views that are exposed for calls by an OData Service).
Drill down into the CDS View, and use the Show Content button to preview the data.
Enter the relevant parameters to test the view.
The result confirms the view itself is not returning any data, regardless of our authorizations.
Often a good quick test before you go further is to adjust the parameters to see if you can find some data. For instance, if the parameters only look for data in the last 90 days, you might want to extend that to the last 365 days and see if any data is returned. Or change the currency. Or both.
Running our view for 365 days in USD revealed there was data available.
So at this point we could hand the app back to the functional consultant to check the data and currency configuration.
If we still can’t find anything we might need to investigate further. At this point we are going to need the ABAP Development Tools in Eclipse and ABAP Developer skills.
Investigate the underlying tables of the CDS View
Most CDS Views are implemented as a complex join across a group of tables and underlying CDS Views. You’ll need to:
- Find out which underlying tables and CDS views are being used
- Work out which part of the complex join is returning no data
- Check if the underlying tables contain data
- Test the underlying tables, views, and cubes against your parameters
While we can find many of the underlying tables using the Cross Reference tab of the View Browser, to investigate them properly we will need ABAP Development Tools in Eclipse.
Once you have your ABAP Development Tools in Eclipse, as usual you’ll need to create or open an ABAP Project pointing to your SAP S/4HANA backend server (where the data is held) and client.
Open the CDS View using the option Navigate… > Open ABAP Development Object.
Search for your CDS View and open the Data Definition of the CDS View.
Once you are in the Data Definition of the CDS View can start to investigate more deeply. You can find all the underlying CDS Views and tables of any CDS View by using the SQL Dependency Analyzer. Open the context menu and choose Open With Dependency Analyzer.
The dependencies of data sources involved in the CDS view are displayed. You can view the underlying tables as a SQL Dependency Tree.
Or you can view them in graphical format in the tab SQL Dependency Graph.
You can see this view is based on join operations across 4 database tables, and a function call. If any table is empty, a join on that table will not return any data. If any join cannot find matching data it will not return any data. And it may be that the function is not returning data.
TIP: You can confirm the count of tables, joins, views, etc. in the Complexity Metrics tab.
You might want to work top-down the tree to see which paths are not returning data. You want to find the lowest point in the tree where data is not being returned and resolve the cause.
Checking Underlying CDS Views and Tables
You can open any underlying CDS views or Database Tables from the SQL Dependency tree by selecting the Open option in the context menu from the tree or graph, and then previewing the data.
You can then preview the data of underlying CDS Views and Tables to find the problem. To preview CDS Views or Cubes simply use option Run As… > ABAP Application.
You are looking for the lowest point in the hierarchy at which no data is returned. A good approach is to work down the tree until you find data. In this case the Cube returns no data, but all of the CDS Views below are ok.
In this example you can see the cube P_ACTUALCASHFLOWS90DAY is empty.
While the underlying CDS Views such as I_COMPANYCODE all return data
So now at least you know the problem is in the Cube and you can start to investigate the Cube further. In this example you can see the Cube implements a Table Function. So you will need to navigate to the Table Function to debug it and find out what is going on.
Find the “implemented by method” statement. Select the method and use the context option “Navigate to” to open the definition of the method implementing the function.
You can now examine the code of the function. You can also set breakpoints within the code then run the Cube again to debug it further.
By debugging the table function we find out that all actuals are in USD.
So now at least we know the cause and can hand that over to the functional application expert to resolve. Either the Smart Business app should be using USD currency, or the data needs to be loaded in the correct currency.
All screenshots in this blog were based on SAP S/4HANA 1610 FPS1 and Eclipse Oxygen.
Becoming a SAP Fiori for S/4HANA Guru
You can find more information on the SQL Dependency Analyzer in section Analyzing Dependencies in Complex CDS Views of the SAP – ABAP CDS Development User Guide.
You can find more information on debugging Table Functions in the section Debugging AMDPs and Table Functions in the ABAP Development User Guide.
You can find out more in our SAP Fiori for S/4HANA wiki.
Brought to you by the SAP S/4HANA RIG.