I guess your situation is...
Assume no new records for now.
Day 1- Full load - 100 records.....DSO has 100 Records, Master Data has 100 records.
Day 2-Full Load - 98 records.....DSO has 100 records, mater Data picks 100 records.
How to delete 2 records from DSO.
Between PSA and DSO, have a routine to loop up an ITAB(DSO ACTIVE DATA) and check the PSA for availability , if not available then set the record mode to delete. This will set the active records in DSO to 98. However this will not fix master data
Logic in the routine ..
Loop ACTIVE table
Check source-package
If available do nothing
If not available then set to delete
End Loop
We cannot purge master data; we can only delimit master data; it is not easy to delete master data at table level and use it in cubes/infoproviders due to SID mismatch.( possible but not a very clean solution, How stable you want the reporting, How fast to load, how many records are we re-engineering ?)
Let see if my solution works for atleast DSO level.