Текущее время: Вс, июл 27 2025, 03:03

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Ahrefs [Bot]


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

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