Модель дерева столбцов не расширяет узел после события EXPAND_NO_CHILDREN

Я показываю список элементов, используя модель дерева столбцов SAP ABAP, в основном дерево папок и файлов со столбцами.

Я хочу динамически загружать подузлы папок, поэтому я использую событие EXPAND_NO_CHILDREN, которое срабатывает правильно.

К сожалению, после добавления новых узлов и элементов в дерево папка снова автоматически сворачивается, и для просмотра подузлов требуется второй щелчок. Нужно ли мне вызывать метод при обработке события, чтобы папка оставалась открытой, или я делаю что-то еще неправильно?

* Set up event handling.
  LS_EVENT-EVENTID  = CL_ITEM_TREE_CONTROL=>EVENTID_EXPAND_NO_CHILDREN.
  LS_EVENT-APPL_EVENT = GC_X.
  APPEND LS_EVENT TO LT_EVENTS.
  CALL METHOD GO_MODEL->SET_REGISTERED_EVENTS
    EXPORTING
      EVENTS                    = LT_EVENTS
    EXCEPTIONS
      ILLEGAL_EVENT_COMBINATION = 1
      UNKNOWN_EVENT             = 2.
  SET HANDLER GO_APPLICATION->HANDLE_EXPAND_NO_CHILDREN
    FOR GO_MODEL.

...


* Add new data to tree.
  CALL METHOD GO_MODEL->ADD_NODES
    EXPORTING
      NODE_TABLE = PTI_NODES[]
    EXCEPTIONS
      ERROR_IN_NODE_TABLE = 1.

  CALL METHOD GO_MODEL->ADD_ITEMS
    EXPORTING
      ITEM_TABLE = PTI_ITEMS[]
    EXCEPTIONS
      NODE_NOT_FOUND = 1
      ERROR_IN_ITEM_TABLE = 2.

person Community    schedule 11.08.2008    source источник
comment
Это может быть какое-то неясное расположение флагов - не могли бы вы попытаться опубликовать минимальный рабочий пример?   -  person vwegert    schedule 22.03.2012


Ответы (2)


Я давно не играл с SAP, но всегда находил библиотеку SAP особенно полезной, когда застревал...

Мне удалось придумать для вас это: http://help.sap.com/saphelp_nw04/helpdata/en/47/aa7a18c80a11d3a6f90000e83dd863/frameset.htm, а именно:

При добавлении новых узлов в древовидную модель установите для флага ITEMSINCOM значение "X".
Это информирует древовидную модель о том, что вы хотите загружать элементы для этого узла по запросу.

Надеюсь, поможет?

person Pat Hermens    schedule 18.08.2008

Ваш код выглядит нормально,

Я бы сам использовал метод ADD_NODES_AND_ITEMS, если бы мне нужно было добавлять узлы и элементы;)

Кроме того, попробуйте вызвать EXPAND_NODE после добавления элементов/узлов и посмотрите, поможет ли это.

person tomdemuyt    schedule 15.09.2008