Текущее время: Сб, июл 19 2025, 02:37

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: Разворачивание всех узлов Cl_GUI_ALV_TREE
СообщениеДобавлено: Вт, июл 29 2014, 11:55 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Сб, июн 01 2013, 22:36
Сообщения: 12
И снова всем добрый день.
Может кто-нибудь подскажет проще вариант, чем у меня? Или подскажет, что делаю не так во втором способе.

Не нашел никакого "прямого" метода для разворачивания сразу всех узлов, поэтому реализовал с помощью вытаскивания всех узлов и передачей их методу expand_nodes.
Code:
    DATA: lt_nodes TYPE lvc_t_nkey.

    gor_tree->get_subtree(
      EXPORTING
        i_node_key         =  cl_gui_alv_tree=>c_virtual_root_node
      IMPORTING
        et_subtree_nodes   =  lt_nodes[]
      EXCEPTIONS
        node_key_not_found = 1
        others             = 2
    ).
    IF sy-subrc <> 0.
     MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.

    gor_tree->expand_nodes(
      EXPORTING
        it_node_key             = lt_nodes[]
      EXCEPTIONS
        failed                  = 1
        cntl_system_error       = 2
        error_in_node_key_table = 3
        dp_error                = 4
        node_not_found          = 5
        others                  = 6
    ).
    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.


Root узла нет. Пробовал еще с помощью вызова expand_node с передачей в него в качестве узла c_virtual_root_node, но падает в дамп во FLUSH:
Code:
    gor_tree->expand_node(
      EXPORTING
        i_node_key          = cl_gui_alv_tree=>c_virtual_root_node
        i_expand_subtree    = 'X'
      EXCEPTIONS
        failed              = 1
        illegal_level_count = 2
        cntl_system_error   = 3
        node_not_found      = 4
        cannot_expand_leaf  = 5
        OTHERS              = 6
    ).
    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Разворачивание всех узлов Cl_GUI_ALV_TREE
СообщениеДобавлено: Вт, июл 29 2014, 12:18 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
правильно делаете


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Разворачивание всех узлов Cl_GUI_ALV_TREE
СообщениеДобавлено: Пн, авг 04 2014, 06:52 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Сб, июн 01 2013, 22:36
Сообщения: 12
Через некоторое время первый способ разворачивания узлов тоже начал падать в дамп во Flush. Поэтому пришлось немного переделать данный способ (спасибо одному хорошему человеку за подсказку). Причина падения в дамп, по всей видимости, в том, что метод EXPAND_NODES пытается развернуть узлы, у которых нет детей.

Code:
*--------------------------------------------------------------------*
*   METHOD expand_all_nodes
*--------------------------------------------------------------------*
  METHOD expand_all_nodes.
    DATA: lt_nodes TYPE lvc_t_nkey.

    gor_tree->get_subtree(
      EXPORTING
        i_node_key         =  cl_gui_alv_tree=>c_virtual_root_node
      IMPORTING
        et_subtree_nodes   =  lt_nodes[]
      EXCEPTIONS
        node_key_not_found = 1
        OTHERS             = 2
    ).
    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.

    DELETE lt_nodes[] WHERE table_line EQ cl_gui_alv_tree=>c_virtual_root_node.

    LOOP AT lt_nodes[] ASSIGNING FIELD-SYMBOL(<lsf_nodes>).
      DATA: ls_parent_key TYPE lvc_nkey.

      gor_tree->get_parent(
        EXPORTING
          i_node_key        = <lsf_nodes>
        IMPORTING
          e_parent_node_key = ls_parent_key
      ).

      CHECK ls_parent_key EQ cl_gui_alv_tree=>c_virtual_root_node.

      gor_tree->expand_node(
        EXPORTING
          i_node_key          = <lsf_nodes>
          i_expand_subtree    = 'X'
        EXCEPTIONS
          failed              = 1
          illegal_level_count = 2
          cntl_system_error   = 3
          node_not_found      = 4
          cannot_expand_leaf  = 5
          OTHERS              = 6
      ).
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
    ENDLOOP.
  ENDMETHOD.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB