Hi Harry,
There are lots of ways to resolve your scenario.
Virtual Provider is technically one simple query which fetches run-time data through reference datasource/BAPI/Function Module.
So instead of Virtual provider, create standard info-provider and connect it with reference datasource. If you are using BAPI/FM then create Data source using this BAPI/FM and then load data to standard cube as required.
You can load data from BAPI/FM using APD also
You can load data to and DSO using Query in APD. here you can use virtual provider query in APD.
Regards,
Ashish Lakdawala