I really wouldn't do this, both from a technical and a business perspective: You cannot react on errors / messages from the validation logic in the background step, and especially for Material (MDG-M), changes to classification would be totally unchecked until activation - which will then fail w/ hard to debug errors. Furthermore, the changed data is not what the last user has approved, which goes pretty much against the idea of MDG.
I'd rather read out the MDG Application Context (class CL_USMD_APP_CONTEXT) in your derivation and then run some derivations only at the start of the last approval step. The API tells you the WF step number and such things.
Alternative is brute writing data in the background step using the Convenience API (CL_USMD_MDG_CONV_API).