Изменить расположение дерева ALV программно
Я хочу изменить макет cl_gui_alv_tree
программно. Мой текущий подход не работает. Это мой код, выполненный в PBO экрана:
CALL METHOD gs_0700-s_tree-r_tree->delete_all_nodes
EXCEPTIONS
failed = 1
cntl_system_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
PERFORM load_new_tree_nodes.
ls_vari-report = gs_0700-repid.
ls_vari-handle = 'TREE'.
ls_vari-variant = '/new_variant'
(...)
CALL METHOD gs_0700-s_tree-r_tree->set_variant_key
EXPORTING
is_variant = ls_vari.
CALL METHOD gs_0700-s_tree-r_tree->column_optimize.
CALL METHOD gs_0700-s_tree-r_tree->update_calculations.
CALL METHOD gs_0700-s_tree-r_tree->frontend_update.
Дерево перерисовывается и загружаются новые узлы. Даже столбцы оптимизируются. Все меняется, но не вариант макета. Это всегда выглядит как /default
вариант макета, который я установил с set_table_for_first_display
метод во время инициализации дерева. Я создал вариант /new_variant
и я могу загрузить его через панель инструментов.
Есть ли другой способ программно изменить вариант макета дерева?
1 ответ
Ты звонишь SET_TABLE_FOR_FIRST_DISPLAY
метод с параметром I_DEFAULT = space
?
По умолчанию будет 'X'
в результате всегда отображается вариант по умолчанию.