2013-09-05 2 views
0

Я хочу программно изменить макет cl_gui_alv_tree. Мой нынешний подход не работает. Это мой код до сих пор, выполненный на экране PBO:Программно изменить макет дерева ALV

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, и я могу загрузить его с помощью панели инструментов.

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

+0

Пробовал ли именовать 'ls_vari-variant = '/ NEW_VARIANT'' так? Капитализация часто является проблемой. –

ответ

0

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

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

+0

Не могли бы вы рассказать нам, были ли какие-либо из этих ответов полезными для вас? – XcodeJunkie

 Смежные вопросы

  • Нет связанных вопросов^_^