EXPAND_NO_CHILDREN事件后,ABAP列树模型不会扩展节点

时间:2020-03-05 18:38:54  来源:igfitidea点击:

我正在使用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/zh/47/aa7a18c80a11d3a6f90000e83dd863/frameset.htm,具体是:

When you add new nodes to the tree model, set the flag ITEMSINCOM to 'X'.

  This informs the tree model that you want to load the items for that node on demand.

希望能帮助到你?

回答

代码看起来不错,

如果要添加节点和项,我将自己使用方法" ADD_NODES_AND_ITEMS";)

除此之外,在添加项目/节点后尝试调用EXPAND_NODE,看看是否有帮助。