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

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


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

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


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

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