For simple copy operations, there is - IMHO - no objection to using APPEND FROM. If you have more complicated transfer requirements, you can program a loop, like this:
local loRecord
use Source in 0
use Destination in 0
select Source
scan
scatter name loRecord
loRecord.Field1 =
&& change values while you copy
select Destination
append blank
gather name loRecord
endscan
You may have to enable buffering in "Destination", if (temporary) blank values are not accepted because of triggers.
Regards, Hilmar.
Difference in opinions hath cost many millions of lives: for instance, whether flesh be bread, or bread be flesh; whether whistling be a vice or a virtue; whether it be better to kiss a post, or throw it into the fire... (from Gulliver's Travels)