If it is a single fill to get to the full fill it is still compliant. If you have two partials for the same OrderID then ExecID for the two partial fills should be different.
Tag 17 is unique for each Execution Report Message.
In normal scenario, where multiple Execution report messages sent for different ExecutionType(Tag 39) may be 39=A,39=0,39=2. so through out the trade OrderId(37) should be the same and ExecID(17) will be different.
In your case if there is only one ExecutionReport message exchanged, so Tag37=Tag17 is compliant(if this is agreed between two communicating parties in Rules Of Engagement).