Текущее время: Вс, июл 20 2025, 14:19

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: Обновление в обновление CL_GUI_ALV_TREE
СообщениеДобавлено: Ср, фев 21 2007, 16:06 
Ассистент
Ассистент

Зарегистрирован:
Вт, дек 12 2006, 11:29
Сообщения: 44
Откуда: Столица
Добрый день.

По аналогии с программой BCALV_TREE_DEMO сделал обычное дерево.
(слева иерархия, справа список), все на одном контейнере.
практически 1 в 1 как в указанной выше программе.

Сейчас такая сложилась ситуация. Вставил отладку событию клика на чекбокс.

При этом изменяю таблицу, которая хранит дерево, изменяю узел дерева, и делаю обновление дерева.

по шагам:
1) в method handle_checkbox_change обрабатываю нажатие на чекбокс.
2) так вот call method g_alv_tree->change_node меняю узел дерева
3) делаю обновление списка
call method g_alv_tree->frontend_update.
call method g_alv_tree->update_calculations.


---
Чего должно быть - когда я ставлю чекбокс - справа в отчетке в колонке "Всего" выводится "1", снимаю - "0"
---
Итоги тестирования:
По нажатию ничего не происходит. Меняю формат вывода(убираю колонки, затем снова показываю) - все ок! У выбранных полей стоят "1".

Если я перед вызовом call method g_alv_tree->change_node, делаю принудительно такую вещь:
pc_itab-itogo = pc_itab-itogo + 1.

(
Code:
              call method g_alv_tree->change_node
                   EXPORTING
                      i_node_key     = p_node_key
                      i_outtab_line  = pc_itab
                   EXCEPTIONS
                      node_not_found = 1
                      OTHERS         = 2.

)
, то при нажатии на чекбокс у меня выводится "2" с первого раза(!!!), а затем при снятии флажка, выводится "1".
То есть в данном случае все работает как надо, только чередуются не "0" и "1", а "1" и "2".

При этом если делаю:

pc_itab-itogo = pc_itab-itogo + 1.
pc_itab-itogo = pc_itab-itogo - 1.

ничего не происходит. Опять стоит ноль, и опять он меняется только при смене формата.

В чем может быть проблема? Я бы мог понять, что делаю что-то не так, если бы у меня не чередовались с 1-ого раза "1" и "2".

Заранее благодарен.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обновление в обновление CL_GUI_ALV_TREE
СообщениеДобавлено: Ср, фев 21 2007, 22:13 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 12:50
Сообщения: 134
Откуда: UA->DE
Пол: Женский
rodendron написал(а):
3) делаю обновление списка
call method g_alv_tree->frontend_update.
call method g_alv_tree->update_calculations.


Именно в таком порядке?
Попробуй поменять местами:
Code:
call method g_alv_tree->update_calculations.
call method g_alv_tree->frontend_update.


или вызывать frontend_update дважды:
Code:
call method g_alv_tree->frontend_update.
call method g_alv_tree->update_calculations.
call method g_alv_tree->frontend_update.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, фев 22 2007, 09:10 
Ассистент
Ассистент

Зарегистрирован:
Вт, дек 12 2006, 11:29
Сообщения: 44
Откуда: Столица
Я их по-всякому запускал.

Пробовал и так и так.

Даже
Code:
call method g_alv_tree->update_calculations.
call method g_alv_tree->frontend_update.
call method g_alv_tree->update_calculations.
call method g_alv_tree->frontend_update.
call method g_alv_tree->frontend_update.
call method g_alv_tree->frontend_update.


Результата нет


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, фев 22 2007, 09:37 
Ассистент
Ассистент

Зарегистрирован:
Вт, дек 12 2006, 11:29
Сообщения: 44
Откуда: Столица
Еще один интересный момент.

У меня выводится еще название(текст100).
Так вот, в него поместил я "0", ставлю чекбокс - вывожится "1".
И все работает как положено.


То есть в процедуре изменения нода пишу:
pc_itab-names = pc_itab-itogo.
В этом случае все работает.

Делаю itogo 1 в 1 по типу как и names, заполняю нулями, делаю операцию - нифига...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, фев 22 2007, 09:41 
Ассистент
Ассистент

Зарегистрирован:
Вт, дек 12 2006, 11:29
Сообщения: 44
Откуда: Столица
Еще момент.

Так вот, попробовал сделать так:

pc_itab-all = pc_itab-itogo.
call method g_alv_tree->change_node

All - соседняя колонка.
В таком случае работает все - и в all отображается как мне надо.
Элемент данных у них одинаков.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, фев 22 2007, 11:49 
Ассистент
Ассистент

Зарегистрирован:
Вт, дек 12 2006, 11:29
Сообщения: 44
Откуда: Столица
В общем мне по-любому нужно как-то самому использовать
Метод CL_GUI_COLUMN_TREE=>UPDATE_NODES_AND_ITEMS, потому что я в него в отладке вошел - при чекбоксе он в него подает node_table с 2-мя элементами, хотя у меня их 3 !!!
А когда меняю формат - то он подает все 3 элемента.

Как мне правильно использовать эту ситуацию?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, фев 22 2007, 15:24 
Ассистент
Ассистент

Зарегистрирован:
Вт, дек 12 2006, 11:29
Сообщения: 44
Откуда: Столица
Попробовал под дурака:):

Code:
  CALL METHOD G_ALV_TREE->DELETE_SUBTREE
    EXPORTING
      I_NODE_KEY                = p_node_key
    EXCEPTIONS
      NODE_KEY_NOT_IN_MODEL     = 1
      others                    = 2
      .

  CALL METHOD G_ALV_TREE->ADD_NODE
    EXPORTING
      I_RELAT_NODE_KEY     = tmp_node_key
      i_relationship       = cl_gui_column_tree=>relat_last_child
      is_outtab_line       = pc_itab
      i_node_text          = l_node_text
      IS_NODE_LAYOUT       = l_layout_node
      it_item_layout       = lt_item_layout
    EXCEPTIONS
      RELAT_NODE_NOT_FOUND = 1
      NODE_NOT_FOUND       = 2
      others               = 3
          .


Но тогда он ноды местами меняет...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, фев 22 2007, 16:08 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 12:50
Сообщения: 134
Откуда: UA->DE
Пол: Женский
Выложи уж код целиком.
Раз в основном все работает, то явно какой-то мелочи типа cl_gui_cfw=>flush не хватает.
Но не видя всего кода...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, фев 22 2007, 16:23 
Ассистент
Ассистент

Зарегистрирован:
Вт, дек 12 2006, 11:29
Сообщения: 44
Откуда: Столица
Решил не флудить, и так делов наделал.

Вылил всю прогу целиком

смотреть тут:
http://slil.ru/23974568


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, фев 22 2007, 17:04 
Ассистент
Ассистент

Зарегистрирован:
Вт, дек 12 2006, 11:29
Сообщения: 44
Откуда: Столица
В общем победили проблему так:

Code:
  pc_itab-kolvo = pc_itab-kolvo + 100.
  CALL METHOD G_ALV_TREE->CHANGE_NODE
    EXPORTING
      I_NODE_KEY     = p_node_key
      I_OUTTAB_LINE  = pc_itab
    EXCEPTIONS
      NODE_NOT_FOUND = 1
      others         = 2
          .

  pc_itab-kolvo = pc_itab-kolvo - 100.
  CALL METHOD G_ALV_TREE->CHANGE_NODE
    EXPORTING
      I_NODE_KEY     = p_node_key
      I_OUTTAB_LINE  = pc_itab
    EXCEPTIONS
      NODE_NOT_FOUND = 1
      others         = 2
          .
  call method g_alv_tree->update_calculations.
  call method g_alv_tree->frontend_update.


Смешно? ))))


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

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


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

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


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

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