Instead of a "live" connection you would used a extract. Basically you determine what fields you want (nothing more!) from your db and then Tableau will get that data and put it into an extract. This extract is saved where ever you need it, typically in your C: drive. Your report would then query the extract and not ping your server every time. Remember, the data is in memory so things go even faster so once you 'connect' to the extract you're going against it in memory and not as a file (constant disk access).
You do NOT want to cache ALL data to the Tableau Server! You only cache -- really, it's an extract saved on the Tableau Server -- what you need and nothing more. You can add/remove fields to the extract as needed. The extract on the server can be put on a schedule to get updated automaticlly.
But there is one little problem, extracts aren't supported for OLAP sources:
Tableau "extracts" When connected to a cube, you cannot perform a Tableau "extract". This feature is available when connected to relational data sources. This is by design: You cannot take an OLAP cube "offline" and all analysis must occur directly against the cube data source.
Product(s): Professional Edition, Tableau Server
Version(s): 6.1, 6.0
Last Modified Date: 04 May 2012
Link could be outdated
My only experience with SAP/BEX was some Excel VBA automation so I'm not very familiar with what type of data source it is. I remember the BEX queries not taking very long so there may be issues with your BEX queries and/or the data source itself. Could be something simple like poor network connectivity (wireless vs. cable).
<edit>Ah, I see you mentioned that your BW is slow. Hmm. I don't really know. I don't have a cube to test against. Could you have an export of the data you need saved into a .CSV (text) file and then report against that? I don't know, sorry