This trick was shown to me by Narendran on the SAP SDN Forum. All credit goes to him on this one. One method of allowing the user to maintain a table is to attach a transaction code to it. For example, you have the need to maintain table V_T510W.
First you will need to go to transaction SE93 to create the new customized transaction. Give it a name and short description. Be sure to select "Transaction With Parameters (Parameters Transaction)".
Click on the green check to continue to the next screen.
Under the "Default Values For" section area, you have two pieces you need to focus on. Next to the "Transaction" field, type in the transaction "SM31". Right below it, check the box next to "Skip Initial Screen".
What you've just done there, was basically tell the program to use SM31 to maintain the table structure, but skip the initial screen where the user had a choice to enter in the type he/she wants to maintain. In the next steps, we will enforce what table they will be maintaining for this transaction.
Towards the bottom of this same screen, you have a section called "Default Values". In the left side, under "Name Of Screen Field", select "VIEWNAME" via the drop down button. To the right of it, you have a column called "Values". Type in the table you wish to maintain, in our example, we will type in "V_T510W". On the next line, selection "UPDATE", as we want this to be a maintain transaction. If we want it to be a display transaction, we would choose "DISPLAY". To the right under the "Values" column, put an "x" as the value for it.
These are the basic values you need to create a transaction code and link it to a table for you to maintain w/o having to give out access to transaction SM30/SM31 where the user might be able to enter in any tables they wishes.
Give it a shot and let me know via the comments what you think.