Программное изменение макета дерева 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 и могу загрузить его через панель инструментов.

Есть ли другой способ изменить вариант макета дерева программно?


person Community    schedule 05.09.2013    source источник
comment
Вы пытались назвать ls_vari-variant = '/NEW_VARIANT' так? Капитализация часто является проблемой.   -  person vlad-ardelean    schedule 06.09.2013


Ответы (1)


Вы вызываете метод SET_TABLE_FOR_FIRST_DISPLAY с параметром I_DEFAULT = space?

Значением по умолчанию будет 'X', в результате чего всегда будет отображаться вариант по умолчанию.

person XcodeJunkie    schedule 09.09.2013
comment
Не могли бы вы рассказать нам, был ли какой-либо из этих ответов полезен для вас? - person XcodeJunkie; 24.09.2013