I'm using the function Exit EXIT_SAPMM06E_012 in User Exit MM06E005 to validate my PO before saving.
I'm using macro MMPUR_MESSAGE to issue messages.
In ME21N, I'm able to save the PO even if there are error messages. It just gives a message saying the PO is faulty and asking if i still want to Save. It gives an option to put the PO on Hold / Edit.
Why don't the error messages prevent saving as in ME22N.