Сегодня полчаса потратил, что бы понять чего если с одного грида вызывается другой, то варианты у них общие, и если меняеш и сохраняеш один, то во втором гриде отображаются только колонки с сохраненного варианта
.
Оказалось дело в параметре is_variant.
Вообщем вызов REUSE_ALV_GRID_DISPLAY следует делать типа так:
display_grid .
DATA: gs_layout TYPE slis_layout_alv.
DATA: lt_fcat TYPE slis_t_fieldcat_alv.
DATA: var LIKE disvariant. " <<<----
CLEAR var.
var-report = sy-repid.
var-handle = 'MAIN'. " Для второго грида использовать другую строку
PERFORM build_layout USING gs_layout.
PERFORM build_fieldcat USING lt_fcat.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = 'ALV_MAIN_STATUS_SET'
i_callback_user_command = 'USER_COMMAND_MAIN'
is_layout = gs_layout
it_fieldcat = lt_fcat
i_default = 'X'
i_save = 'A'
is_variant = var " <<<----
TABLES
t_outtab = gt_alvtab
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM. " display_grid