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

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Вывод дерева CL_SALV_TREE на 2 экрана.
СообщениеДобавлено: Пт, ноя 15 2013, 11:51 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, ноя 07 2011, 11:46
Сообщения: 83
Добрый день, уважаемые коллеги!

Возникла следующая проблема.
Есть сплиттер на экране 100, состоящий из 4-х контейнеров. В один из контейнеров выводится дерево CL_SALV_TREE(gr_table_1 TYPE REF TO cl_salv_tree, gt_empty_tab TYPE zpp_route_teb). Затем, при нажатиии кнопки "Открыть экран" необходимо развернуть экран с деревом. При нажатии данной кнопки я вызываю экран 300 вот с таким PBO:
IF go_container_300 IS INITIAL.

CREATE OBJECT go_container_300
EXPORTING
container_name = 'CONTAINER_300'.

TRY.
CALL METHOD cl_salv_tree=>factory
EXPORTING
r_container = go_container_300
IMPORTING
r_salv_tree = gr_table_300
CHANGING
t_table = gt_empty_tab_300.
CATCH cx_salv_error.
MESSAGE e016(z_route_tech_map).
ENDTRY.

" Добавление стандартного тулбара
lr_functions = gr_table_300->get_functions( ).
lr_functions->set_all( abap_true ).

" Сохранение варианта
ls_key-report = sy-repid.
lr_layout = gr_table_300->get_layout( ).
lr_layout->set_key( value = ls_key ).
lr_layout->set_save_restriction( value = if_salv_c_layout=>restrict_none ).
lr_layout->set_default( value = 'X' ).

" Вид
lr_columns = gr_table_300->get_columns( ).
lr_columns->set_optimize( 'X' ).

" Некоторые пар-ры для вывода дерева
lv_hier_icon = icon_tree.
lo_settings = gr_table_300->get_tree_settings( ).
lo_settings->set_hierarchy_header( text-003 ).
lo_settings->set_hierarchy_size( 40 ).
lo_settings->set_hierarchy_icon( lv_hier_icon ).

gt_empty_tab_300 = gt_empty_tab.

gr_table_300->display( ).

ELSE.
* CALL METHOD gr_table_300->refresh.
ENDIF.

Но при такой реализации выводится пустое дерево. Что я делаю неправильно? Присвоение gt_empty_tab_300 = gt_empty_tab. ни к чему не привело.
Присваивать gr_table_1 таблице 300 экрана gr_table_300 нет смысла.
P.s. нужно обязательно вызывать экран 300, но как сделать, чтобы отобразилось дерево, построенное в контейнера экрана 100. Подскажите, пожалуйста.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вывод дерева CL_SALV_TREE на 2 экрана.
СообщениеДобавлено: Пт, ноя 15 2013, 13:57 
Специалист
Специалист

Зарегистрирован:
Чт, ноя 23 2006, 17:37
Сообщения: 197
Откуда: Москва
Пол: Мужской
В примерах работы с CL_SALV_TREE и в документации сказано, что таблица при создании дерева д.б. пустой. Затем, по мере заполнения структуры дерева узлами, заполняется и соответствующая таблица. Тут 2 варианта: либо требуется заполнить таблицу gt_empty_tab_300 из gt_empty_tab, либо, если в отладчике видно содержимое таблицы gt_empty_tab_300, сделать обновление структуры дерева.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вывод дерева CL_SALV_TREE на 2 экрана.
СообщениеДобавлено: Пт, ноя 15 2013, 14:38 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, ноя 07 2011, 11:46
Сообщения: 83
Дело в том, что было написано о присвоении
gt_empty_tab_300 = gt_empty_tab.

И это ничего не дало. Не совсем понятно про обновление, ведь вызывается не 100 экран, а 300. А на 300 и обновлять нечего, там же ничего не выводилось. Более того, деревья на 100 и 300 идентичны, их стр-ру обновлять не нужно, а просто сделать так, чтобы дерево с 100 отобразилось на 300.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вывод дерева CL_SALV_TREE на 2 экрана.
СообщениеДобавлено: Пт, ноя 15 2013, 15:38 
Специалист
Специалист

Зарегистрирован:
Чт, ноя 23 2006, 17:37
Сообщения: 197
Откуда: Москва
Пол: Мужской
Под "обновить" имел в виду использование методов типа refresh

Посмотрите пример SALV_DEMO_TREE_DATA_UPDATE.
Кмк, просто использовать один и тот же экземпляр класса на разных экранах не получится, Вам надо "клонировать" объект с экрана 100.

Т.е. создать новое дерево, переписать туда метаданные, заполнить аналогично иерархию узлов.
У CL_SALV_TREE есть метод SET_DATA, но отсутствие его использования наводит на подозрения.


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

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


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

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


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

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