In most cases, i always try to convince client that if there is a change on PO, the PO must be subjected to another set of release instead of an ideal situation similar to yours. And this is triggered at PO change level instead of L3 approver doing the cancelation. Furthermore, L3 approver gets the operational burden of the cancel request instead of the more efficient way of automatic cancel / resubject to release once the PO has been changed.
Also, There will always be a frequent occurence of PO being modified by PO change user in terms of quantity or prices due to the dynamic nature of business (i.e. frequent vendor renegotiated terms, user error, etc)
If really required, can you check the release indicator as 1 - cannot be changed by creating a new release id and assign it to the release strategy via status. Advise us if workable .