This may be a question of preference, but I’d like to get some expert opinions on this topic. While I’ve worked with ABAP DFs before, this is my first experience with extracting data through an SAP Application Data Store.
As a general practice, would you recommend joining tables within the ABAP Data Flow, or would you recommend extracting the tables in the ABAP Data Flow, then joining the tables in the Data Flow (outside of SAP Application)?
If ‘it depends’, what factors would determine your decision?
I know I should ‘tread lightly’ when running ABAP in an SAP Production environment, but at what point should I move query/processing to DS?
To me, the whole point of using ABAP data flows is so you can join tables. If you are only going to do table pulls, what benefit do you get from ABAP ?
I’ve found ABAP dataflows to be a bit of a black art. I have built some very complicated ABAP dataflows which worked fine and some simple ones that caused no end of issues. I suspect that the problems are casued by the underlying SAP application layer and/or tables.
Here are some of the oddities that I’ve experienced:-
Moving tables around on the dataflow screen can cause different code to be generated!
Having to add the same table multiple times as the ABAP dataflow seems to ‘forget’ about the table
Extracting from wide tables causing RFC timeouts (so I had to restrict the number of columns I selected)
So it really seems to be a case of ‘suck it and see’.
There are limits to how much data you can pull directly, and it’s memory intensive as well. Also, the job runs in foreground/dialog mode in SAP.
On the flip side, with ABAP you are limited in the functions you can use, the code generated can change in unexpected ways, and the process of going through a transport file is slow and has other potential problems.