Through reading some links/articles about virtual KF/Char., we find that our BW workers don't have to use Virtual KF/Char. The purpose of using Virtual KF/Char. is to dynamically decide a KF/Char. value when running queries based on some conditions. But this can also be done at source system side with enhancements to add custom KF/Char. and populate the custom fields with value based on the same condition used in Virtual KF/Char. during extraction. In this way, the query running performance can be improved greatly! Please correct me if I am not right!