If I understood correctly, you want to create a generic dimension table so that you don't have to maintain 22 separate ones. Other than that advantage, I do not think there is any other benefit
I do something similar in my cleansing/translation phase. I use the generic table to validate common-codes coming from a feed. I also have a translation field that specifies an equivalent common-code in the event that an old code is needs to be translated to a one.
Your generic table will require a field that identifies the dimension table it represents, such a PRODUCT, SUPPLIER, REGION, etc. I called my field common_code_entity_key
My generic table looks like this:
SQL> desc common_codes
Name Null? Type
----------------------------------------- -------- ----------------------------
COMMON_CODE_ENTITY_KEY NOT NULL VARCHAR2(30)
COMMON_CODE NOT NULL VARCHAR2(30)
COMMON_CODE_DESC VARCHAR2(60)
COMMON_CODE_TRANSLATION VARCHAR2(150)
The common_code_translation field is typically null unless a code needs to be translated - in which case I can specify the new code or a regular expression. The regular expression my be useful if for example, I want to remove punctuation from a phone number or Canadian postal code.
I hope this helps and provides you with some ideas.