Hi,
Using this BAPI_SALESORDER_CHANGE , you can update your SO.
But the way you described situation It may not be possible as we update SO using standard BAPI,
but If your functional require validations than you can simply skip those field which don't satisfy condition and pass only those structure to BAPI which contains only accurate data.
Hope you got my point.
Thank You.
Dular Sharma.