在ALV刷新前重新设置FIELDCAT属性即可
"REFRESH ALV
LOOP AT gt_fieldcat_lvc ASSIGNING FIELD-SYMBOL(<fs_field>).
CASE <fs_field>-fieldname.
WHEN 'BLART' OR 'BSCHL' OR 'RACCT' OR 'TXT20' OR 'HSL' OR 'MATNR' OR 'MAKT X' OR 'MAT_PSPNR' OR 'POST1' OR 'BUZEI'.
IF p2 = 'X'.
<fs_field>-no_out = ''.
IF g_mark = 'X' .
<fs_field>-no_out = 'X'.
ENDIF.
ENDIF.
WHEN OTHERS.
ENDCASE.
ENDLOOP.
CALL METHOD lr_grid->set_frontend_fieldcatalog
EXPORTING
it_fieldcatalog = gt_fieldcat_lvc.
lr_grid->set_frontend_layout( is_layout = gs_layout_lvc ).
lr_grid->refresh_table_display( is_stable = VALUE lvc_s_stbl( row = 'X' col = 'X' ) ).