Hi Andy,
We are using the Second method in our Project...just that instead of the Program/CMOD ,we are using the BADI (the Latest) to write the Logic and populate Data.
And this method is Fine enough.
When we are using Generic Datasource we are using FM based Extraction.
rgds
SVU