Connecting an ETL tool to SAP is difficult. SAP does have a couple of different interfaces but all with their unique pros and cons.
You can use BAPIs or RFCs to get data. This is like invoking a function but an existing function and on the SAP server. This function can be as flexible as "You give me a table name and a where clause and I will return all matching rows". But on the other hand, when extracting real life data requirements are higher.
First, especially with SAP it is very common to have a master and a detail table, like Order + OrderLine, MaterialMovement + MovementLine, etc. So a join is the least you should expect to be possible.
Second, a lot of functionality of SAP is build into function calls. A very common example is currency conversion. SAP is using for this a function in every single place a conversion should happen. And if you look at the source code of that function, it is multiple pages long, not just a lookup the rate in a table and go. So it would be very beneficial to be able to use these functions as well.
Third, a very distinct problem are hierarchies inside SAP. Every module does have its own way to deal with hierarchies, however, inside FI so called set-tables are used. To read them you need to build quite some ABAP code, taking a couple of issues into consideration. So for example, depending on of the hierarchy is in a 3.0 version, migrated from 3.0 to a newer release or rebuild from scratch, different programs have to be generated.
And finally, since all SAP interfaces have their unique pros and cons, all interfaces should be supported.
All the details about SAP, the different options, how to move to production, etc. As intro we have created a 15 minute video explaining the different options.