I think you should probably review the process of this. If the availability check during delivery creation finds available stock, then the stocks should be really available. If they are not really available, then your scope of check settings are probably not strict enough.
If your business process does require an ATP check when the delivery block is set, I think it could be achieved by this:
1) Add a Z field to the LIPS structure in SE11. This Z field should be an "X" field.
2) In BADI LE_SHP_DELIVERY_PROC, Method CHANGE_DELIVERY_HEADER, you can implement code like "IF CS_LIKP-LIFSK IS NOT INITIAL. IT_XLIPS-<ZFIELD> = "X".
This should ensure that LIPS is changed when you change the header data and consequently an ATP check is executed. The LIPS data has to be changed for the system to trigger ATP - when you just change the delivery block in the header, LIPS is not changed.
Please note that I have not tested the above so I am not sure if it works practically. As I am sure you are aware, often these things sound simple but you can find it is unworkable once you try to implement and test them.
Regards,
Noel