Recently I was asked to proof if my ABAP-CDS-views over ACDOCA table will be fast enough with real massive of data in acadoca table.
In the realization phase of S/4 implementation project we create CDS views for Embedded analytics reports. Usually there are luck of data in the development system to conduct nessesary quick performance tests. All CDS-views will work fast on small dataset and it’s not evident how things will come in couple of months after golive. We need to minimize risk of the low performance in order to improve quality of our work and customer satisfaction. So I suggest easy and non-disruptive approach for preparing dataset for representative performance testing. It relates to acdoca table but the approach can be applied to any other S/4 table.
Following assumptions should be made:
- you create base CDS-view over acdoca table with @VDM.viewType: #BASIC.
- you use the view as foundation for composite view @VDM.viewType: #COMPOSITE
- you create @VDM.viewType: #CONSUMPTION view over composite view and expose it as infoprovider for Embedded analytics reports.
You need to create zacdoca table as copy of acdoca but with additional key field. Let it be udocln type DOCLN6, same type as standard acdoca field docln field has. Then you fill zacdoca with relevant number of records. I say some words about it below.
Finally, you need to substitute acdoca with zacdoca table in #BASIC CDS-view. It is the one fast text replace operation in one place! Then you conduct performance tests and turn the definition of #BASIC CDS-views back.
There are several ways of filling the zacdoca table. To fill I use pure ABAP-report (no AMDP at all!) to provide more control during filling process. Performance of filling is not critical factor: in my case 9 mln records (38 Mb of data in HANA memory) created for 25 minutes. So if you run the report over night you can get hundred of millions records and more. My ABAP report iterates over current acdoca table and multiply each records N times and save them in zacdoca table. Remember additional key field in zacdoca table! Now it is used to provide unique key and filled in the ABAP-report. N is parameter of the ABAP-report. You use it to control number of entries in target zacdoca table.
You only need to ask FI/CO-consultants to create only few amount of relevant journal entries. Using them you can perform functional testing of your CDS-view. And after multipling journal entries you can perform relevant performance tests too.