<target DW or DS>.object.data = <source DW or DS>.object.data
But there is a potential issue in that approach which forces us to dilute our business logic with some boring technical code: if the source has no rows, then a runtime error occurs when you grab <source DW or DS>.object.data. That problem is solved in a small autoinstantiated NVO n_copy_data which is downloadable here. It has four overloaded functions uf_from_to(<source DW or DS>, <target DW or DS>). They make sure that there is at least one row to copy.
If you want to add these function to another NVO (or to your ancestor DW/DS) then change their name to uf_copy_data_from_to (the name uf_from_to is understandable only in the context of n_copy_data, like lnv_copy_data.uf_from_to...).