Текущее время: Пн, июл 28 2025, 03:22

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: Обход узлов CL_SALV_TREE
СообщениеДобавлено: Пт, май 24 2013, 15:03 
Специалист
Специалист

Зарегистрирован:
Пт, июл 27 2007, 13:06
Сообщения: 137
Доброго всем дня!

Хожу по узлам через рекурсию и меня очень огорчило, что get_next_sibling, get_first_child и прочие методы вываливаются в дамп, если нет следующего узла. Если с дочерними узлами можно совладать, проверив наличие через is_folder, то с одноуровневыми дело хуже: либо ловить exception через try (некрасиво на мой взгляд), либо ковырять таблицу нодов уровня (get_subtree; тоже имхо не очень), передавая ее через параметр. В идеале бы вот такое иметь:
Code:
FORM DoSomething USING node TYPE REF TO cl_salv_node.
  DATA lp_node TYPE REF TO cl_salv_node.
  lp_node = node.
  WHILE lp_node IS BOUND.
    PERFORM DoSomething USING lp_node->get_first_child( ).
    *поковырять нод в соответствии с нуждами
    lp_node = lp_node->get_next_sibling( ). "<- тут будет дамп, если нет следующего узла. Лучше бы INITIAL значение возвращали бы :(
  ENDWHILE.
ENDFORM.

Есть ли какой-то третий, более правильный вариант или счастья не будет и надо пользовать TRY CATCH либо таблицу в параметрах? Или вариант с таблицей лучше всего? Если что - обход плоской таблицы, которая формируется классом CL_SALV_TREE при добавлении узлов, не подходит, необходима иерархия для обработки данных.

А корневой узел вообще только через Node Key = CL_SALV_TREE->get_nodes( )->get_top_node( )->get_key( ) можно поймать?..

ЗЫ
И чтобы 2 раза не вставать: не могу найти как у Hierarchy Column ширину поменять (столбец, в котором дерево нарисовано) :( Кто-нибудь может подсказать?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обход узлов CL_SALV_TREE
СообщениеДобавлено: Вт, май 28 2013, 15:24 
Специалист
Специалист

Зарегистрирован:
Чт, дек 16 2010, 15:23
Сообщения: 133
Откуда: Набережные Челны
Пол: Мужской
По первой части, на мой взгляд с TRY нормальный вариант.
А по второй, не оно?
Code:
DATA: r_salv_tree_settings TYPE REF TO cl_salv_tree_settings.
r_salv_tree_settings = i_r_salv_tree->get_tree_settings( ).
r_salv_tree_settings->set_hierarchy_size( 60 ).


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

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


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

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


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

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