the normal way to do this would be to create your own version of the command and then place it higher in the library list than QSYS
it is not a good idea to change the QSYS version of a command as
1) this can cause other processes to fail and
2) it will be overwritten when you do an operating system upgrade
Take some time to study up on selective prompting of CL commands which has been in effect since System 38 days. Using keywords you can force prompting for only certain parameters on a command and even force a value and protect the parameter from being modified. For your example you would add an option to a menu to execute WRKSPLF ?*SELECT(*CURRENT). The ?* keyword says only this parameter is prompted, we force a value of *CURRENT and protect the parameter from being changed.
Of course, then the user may simply use QSYS/WRKSPLF and bypass the version higher in the library list entirely. A given user won’t know to use library qualification; but sooner or later, one user will see a programmer do it. The method <i>will get passed around</i>.
And you won’t know about it until some unpredictable future date.
The real answer is not to worry about the user using *ALL or generic*. There is nothing the user can do with it because you have set authorities correctly. You don’t allow users to have *SPLCTL special authority for example. (If you do, then you can’t stop them by taking *ALL or generic* off the WRKSPLF command.)
The correct answer is to correct the authorities that are wrong. As long as authorities are wrong, this won’t fix the problem.