Do you presume that these SAS NUMERIC variables are decimal (using a SAS-default output FORMAT)? And where there is a specific output FORMAT, you would likely want to use that format in any "generated" code used with SAS DATA step assignment statements, as mentioned by Linus H. And, so, would the output be left-justified or right-justified in the SAS CHARACTER, length $20, converted variable values?
So, you could make use of the SAS-maintained views SASHELP.VCOLUMN to interrogate your tables, which could be used to generate SAS DATA step code for assigning the CHARACTER variables. After using SAS code to generate the SAS code out to a TEMP external (sequential) file, you would %INCLUDE that code to create the new SAS variables (possibly, hopefully in a different SAS table).
Of course, questions to ask: why do you want to do this? what is your quest?