Esta función la suelo utilizar desde un ALV para que le lleve al usuario a visualizar los datos de una tabla.
Puedes pasarle los parámetros que necesites de la tabla, ponerla como editable, solo visualización, etc...
Cómodo y muy rápido de realizar.
* data declaration for the FM
DATA: l_tab TYPE se16n_tab,
t_sel TYPE se16n_or_t,
la_sel LIKE LINE OF t_sel,
t_sel_tab TYPE se16n_or_seltab_t,
la_sel_tab LIKE LINE OF t_sel_tab.
* Table name
l_tab = 'ZXXXXX'.
LOOP AT s_bukrs.
la_sel_tab-field = 'BUKRS'.
la_sel_tab-sign = s_bukrs-sign.
la_sel_tab-option = s_bukrs-option.
la_sel_tab-low = s_bukrs-low.
la_sel_tab-high = s_bukrs-high.
APPEND la_sel_tab TO t_sel_tab.
ENDLOOP.
* Fill the main selection table
la_sel-pos = 1.
la_sel-seltab = t_sel_tab.
APPEND la_sel TO t_sel.
*
* Function module for the SE16N
CALL FUNCTION 'SE16N_INTERFACE'
EXPORTING
i_tab = l_tab
i_edit = 'X'
i_clnt_dep = 'X'
TABLES
* IT_OUTPUT_FIELDS =
it_or_selfields = t_sel
EXCEPTIONS
no_values = 1
OTHERS = 2
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.