I have seen my salesperson is posting a lot of cancelled sales. I asked what the reason is. For her it was obvious that pressing the Cancel button on an unsaved sale order was the way to not create this sale.
Of course I recommended that she simply not save the record, but I think we can avoid some confusion.
Check that the sale order is saved before enabling the cancel button.
Another option would be to change the function of the button to maybe something like the last saved record if the sale order is not saved, however I think this is the wrong approach.
If some core developer thinks this is useful I can create the issue+codereview.