2008-08-11 17 views
2

Я показываю список элементов, используя дерево дерева столбцов SAP ABAP, в основном дерево папок и файлов с столбцами. Я хочу динамически загружать подпункты папок, поэтому я использую событие EXPAND_NO_CHILDREN, которое срабатывает правильно. К сожалению, после того, как я добавлю новые узлы и элементы в дерево, папка автоматически свернется снова, требуя второго щелчка, чтобы просмотреть узлы. Нужно ли мне обращаться к методу при обработке события, чтобы папка оставалась открытой, или я делаю что-то еще неправильно?Модель дерева столбцов 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. 
+0

Возможно, это была некоторая неясная компоновка флагов - не могли бы вы попытаться опубликовать минимальный рабочий пример? – vwegert 2012-03-22 18:41:07

ответ

2

Это было некоторое время, так как я играл с SAP, но я всегда находил в библиотеке SAP особенно полезно, когда я застрял ...

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

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

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

0

Ваш код выглядит хорошо,

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

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