Идея такая есть таблица в которой сотня полей или около того.
создаем o_salv
Code:
o_salv TYPE REF TO cl_salv_table
cl_salv_table=>factory( EXPORTING
r_container = o_container_r
IMPORTING
r_salv_table = o_salv
CHANGING
t_table = it_salv_bsas ).
o_salv->get_display_settings( )->set_striped_pattern( abap_true ).
o_salv->get_columns( )->set_optimize( abap_true ).
o_salv->get_functions( )->set_all( ).
o_salv->get_selections( )->set_selection_mode( if_salv_c_selection_mode=>row_column ).
далее считываем с нее каталог, укорачиваем таблицу делая невидимые поля. на некоторые вешаем HOTSPOT для дальнейшей обработки, например вызов какой либо процедуры.
Code:
DATA(it_fcat) = cl_salv_controller_metadata=>get_lvc_fieldcatalog( r_columns = o_salv->get_columns( )
r_aggregations = o_salv->get_aggregations( ) ).
LOOP AT it_fcat ASSIGNING FIELD-SYMBOL(<fcat>).
CASE <fcat>-fieldname.
WHEN 'BUKRS'.
<fcat>-NO_OUT = abap_false.
WHEN 'BELNR'.
<fcat>-NO_OUT = abap_false.
WHEN 'WRBTR'.
<fcat>-NO_OUT = abap_false.
<fcat>-edit = abap_true.
WHEN 'HKONT'.
<fcat>-NO_OUT = abap_false.
<fcat>-HOTSPOT = abap_true.
" <fcat>-edit = abap_true.
WHEN OTHERS.
<fcat>-NO_OUT = 'X'.
ENDCASE.
ENDLOOP.
и затем опять актуализировать o_salv в таком виде как модифицированный каталог.
Code:
o_salv->display( )
Вытащить каталог легко.
Как актуализироватъ модифицированный каталог в o_salv ?