you have to refresh the ALV.
Try this after modifying the internal table in the user command routine :
lo_grid1 TYPE REF TO cl_gui_alv_grid, " ALV instance
l_repid type syrepid ,
l_repid = sy-repid.
---------- Synchronize the grid data and internal table data -------
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_callback_program = l_repid
e_repid = l_repid
e_grid = lo_grid1.
" Activate event data_changed
CALL METHOD lo_grid1->check_changed_data.
rs_selfield-refresh = 'X'.