This is a duplicate of a bug report against SC7.1. I switched to the buggier SC8 because nothing is being fixed in SC7, and SC7 is practically unusable for any non-trivial project.
This is a serious flaw.
When a new record is created via Copy button, the sc_changed() macro does not see the copied fields as having changed.
It’s a new record so every field that does not have the form application’s “Initial Value” should indicate that it was changed when tested with sc_changed().
I can’t use the Copy button as a result, because post-processing is required by the application and such post-processing is not practical with broken macros.