Текущее время: Чт, июл 24 2025, 01:08

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


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

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


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

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