At what points in your development artefacts do the error codes appear. I typically don't use enumerations in my WSDL (maybe I should) but I do have enumerations or static constants in my (Java) code. So if you keep all those together it's quite easy to scan the existing list before adding a new item. However, I'm not sure that avoiding duplicates is actually a good thing.
In the end, so long as you can reliably interpret the error code it doesn't actually matter if you do have duplicates. So
10034 - disk full
23487 - disk full
doesn't seem to do too much harm whereas if you had at different points in your code
10034 - disk full
10034 - invalid input
then we have a problem. Hence I tend to allocate ranges of error codes to different subsystems and let the subsystems devise their own codes. This means that there tend to be very few places where any given error code is used and hence a quick text search (or grep) for the error code gets me to the place in the code where the problem was reported.