Текущее время: Сб, июл 26 2025, 09:59

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: метод update_nodes класса cl_gui_simple_tree не работает
СообщениеДобавлено: Чт, июн 07 2007, 12:39 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, окт 14 2004, 18:02
Сообщения: 415
Откуда: из HR
Пол: Мужской
Добрый день, кто-нибудь сталкивался с такой проблемой:
- имеем cl_gui_simple_tree
- в программе заполняем узлы верхнего уровня
делаем так:
Code:
  node-node_key = 2.
  node-text = 'СтарыйТекст'.
  APPEND node TO node_table.
  CALL METHOD lcl_tree->add_nodes
        EXPORTING table_structure_name = 'ABDEMONODE'
                          node_table = node_table.

- через некоторое время дополняем дерево (т.е. наполняем эти ноды)
- и возникает необходимость обновить текст узлов верхнего уровня
делаем так:
Code:
  node-node_key = 2.
  node-text = 'НовыйТекст'.
  APPEND node TO node_table_edit.

  CALL METHOD lcl_tree->update_nodes
    EXPORTING
      node_table_structure_name      = 'ABDEMONODE'
      node_table                     = node_table_edit
      .

и ничего не происходит, не подскажите в чем может быть ошибка?


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

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
не пробовали для обновления текста воспользоваться
NODE_SET_TEXT ?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июн 07 2007, 12:58 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Если нужно быстро решить проблемку - используйте метод NODE_SET_TEXT. Работает 100%.


млин писать надо быстрее... :lol:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июн 07 2007, 13:14 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, окт 14 2004, 18:02
Сообщения: 415
Откуда: из HR
Пол: Мужской
Спасибо большое, действительно работает, но как быть если нужно обновить не только текст, ну естественно исключая вариант полной перерисовки дерева с нуля с новыми изменениями. Интересует именно update?


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

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
А Вы попробуйте CL_GUI_ALV_TREE, там побольше всяких полезностей и есть REFRESH_TABLE_DISPLAY


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июн 07 2007, 13:20 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, окт 14 2004, 18:02
Сообщения: 415
Откуда: из HR
Пол: Мужской
Да в том то и дело, что мне не нужны лишние изыски, хотел обойтись самым простым вариантом, тем более, что он меня полностью устраивает, за исключением озвученного нюанса.


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

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
так оба они наследники CL_ALV_TREE_BASE и делать Вам нового ни чего не придется. Просто есть еще один полезный метод :) Может еще что-то понадобится.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июн 07 2007, 13:34 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
http://help.sap.com/saphelp_nw04/helpdata/en/28/1cfc52cf4611d3a7030000e83dd863/frameset.htm
Здесь написано, что UPDATE_NODES работает только со специальными структурами, созданными в абап-словаре с инклюдом TREEV_UNOD и дополнением собственных полей с названиями TEXT (тип текст) и U_TEXT (тип AS4FLAG). Т.е. NODE_TABLE_STRUCTURE_NAME должно быть такого типа.
Попробуйте сделать как написано, может поможет...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июн 07 2007, 17:00 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, окт 14 2004, 18:02
Сообщения: 415
Откуда: из HR
Пол: Мужской
Спасибо John Doe
Цитата:

интересная информация, попробовал воспроизвести, после длительных манипуляций с бубном получил следующий код:
Code:
  DATA : n_key TYPE tv_nodekey
       , node_edit TYPE LINE OF treemsunot OCCURS 1 WITH HEADER LINE
       .
  n_key = 2.
  node_edit-node_key = n_key.
  node_edit-text = 'test'.
  node_edit-u_text = 'X'.
  APPEND node_edit.

  CALL METHOD lcl_tree->update_nodes
    EXPORTING
      node_table_structure_name      = 'ABDEMONODE'
      node_table                     = node_edit[]
          .

в синтаксисе ошибок нет, но при выполнении вылетает в ошибку:
/ Internal error CALL_FUNCTION_OPEN_ERROR. :shock:
что это может быть, в чем я накосячил?


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

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Нужно создать структуру в абап-словаре как сказано в ссылке. И использовать ее вместо ABDEMONODE...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: re
СообщениеДобавлено: Пт, июн 08 2007, 10:07 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
попробуйте метод frontend_update (если есть), после изменений в дереве


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 08 2007, 18:13 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, окт 14 2004, 18:02
Сообщения: 415
Откуда: из HR
Пол: Мужской
Да, John Doe, Вы оказались правы, действительно нужно было создать свою структуру в словаре. Все заработало. Спасибо большое за ссылку.


offtop: Но я не вижу логики! Зачем создавать новую структуру??? Зачем столько геморроя??? Пути сапа неисповедимы.


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

Зарегистрирован:
Чт, окт 14 2004, 18:02
Сообщения: 415
Откуда: из HR
Пол: Мужской
УПС, беру свои слова обратно :o только что удалось все воспроизвести со стандартным типом TREEV_UNOD. Делаем так:
Code:
DATA : node_edit LIKE TABLE OF TREEV_UNOD WITH HEADER LINE.
  node_edit-node_key = n_key.
  node_edit-expander = 'X'.
  node_edit-u_expander = 'X'.
  APPEND node_edit.
  CALL METHOD lcl_tree->update_nodes
    EXPORTING
      node_table_structure_name      = 'TREEV_UNOD'
      node_table                     = node_edit[]
          .

и все работает 8) просто поразительно, по сути, пользовательская структура, о которой идет речь в выше приведенной ссылке, отличается от TREEV_UNOD только двумя полями: TEXT и U_TEXT, но вот почему сразу не создать их в этой структуре, а предлагать это пользователю не понятно, тем более, что есть метод NODE_SET_TEXT, в общем, все равно пути сапа неисповедимы...

Спасибо за помощь


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

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


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

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


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

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