Текущее время: Ср, июл 23 2025, 17:41

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


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

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


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

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