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

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


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

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


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

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