Natürlich gibt es zusätzlich noch die Möglichkeit der aktiven Eingrenzung... Irgendwann brauchst Du ja eventuell doch mal ein Feld, was im Ziel anders heisst als in der Quelle.
Ich arbeite dann immer mit Arrays oder Listen, je nachdem was grade besser reinkommt.
Liste wäre in etwa so:
LCopyFields("Quellfeldname") = "Zielfeldname"
Forall zielfeld in LCopyFields
Quellfled = Listtag(zielfeld)
Call zieldoc.Replaceitemvalue(zielfeld,quelldoc.GetItemValue(quellfeld))
End forall
Oder so:
Allefelder = split("quellfeld1~zielfeld1,quellfeld2~zielfeld2,quellfeld3,zielfeld3",",")
Forall feld in allefelder
Call zieldoc.replaceitemvalue(strtoken(feld,"~",1),quelldoc.GetItemValue(strtoken(feld,"~"))
end forall
Das hat den Nachteil, dass du beim hinzukommen von einem Feld den code ändern musst (oder du lagrst die mappings in eine konfig aus), aber den Vorteil, dass Du flexibler bist.
HtH