Hi Julie,
Yes, you are correct - in the user-exit, you need to influence the KEY_OLD tables (sorry for my mistake). Those are used to drive the mapping, and only the mapped Materials get transferred to GTS.
But the results of the transfer (table LT_RES_KEY) are used to update the Change Pointers, so unless your transfers are failing, you shouldn't see the same Materials coming back again in the next run.
Please check again, and see what's happening in "debug", particularly right at the end of the run (around line 186 - the call to Function Module /SAPSLL/MATMAS_CP_UPDATE_R3).
Regards,
Dave