Я отображаю список элементов, используя модель дерева столбцов 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.
Я давно играл с SAP, но всегда находил библиотеку SAP особенно полезной, когда застрял ...
Мне удалось придумать это для вас: http://help.sap.com/saphelp_nw04/helpdata/en/47/aa7a18c80a11d3a6f90000e83dd863/frameset.htm , а именно:
Когда вы добавляете новые узлы в древовидную модель, установите флаг ITEMSINCOM на «X».
Это информирует древовидную модель о том, что вы хотите загрузить элементы для этого узла по требованию.
Надеюсь, это поможет?
Ваш код выглядит хорошо,
Я бы сам использовал этот метод, ADD_NODES_AND_ITEMS
если бы добавил узлы и элементы;)
Кроме того, попробуйте позвонить EXPAND_NODE
после добавления элементов / узлов и посмотреть, поможет ли это.