随后如何从SALV树中删除节点?

2020-09-15 07:45发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我想从SALV树中删除选定的节点及其子树。 这适用于我选择的第一个节点。 现在,删除该节点后,我想删除另一个节点。 这将导致一个shortdump(方法TREE_GET_CHILDREN中的异常" NODE_KEY_NOT_FOUND")。

感觉节点索引有刷新或类似的缺失。 还是这仅仅是SAL树的限制? 如何避免转储? 捕获CX_ROOT显然没有帮助。

以下是引发异常的代码段:

这是我编写的代码:

 METHOD remove_node。
     数据:lo_node类型参考cl_salv_node,
           lo_item类型参考cl_salv_item,
           lo_selections类型参考cl_salv_selections_tree。

     lo_selections = mo_tree-> get_selections()。

     尝试。
       lo_item = lo_selections-> get_selected_item()。
       lo_node = lo_item-> get_node()。
       lo_node-> delete()。
     捕捉CX_ROOT。
     ENDTRY。
     mo_tree-> display()。
   ENDMETHOD。

(21.4 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我想从SALV树中删除选定的节点及其子树。 这适用于我选择的第一个节点。 现在,删除该节点后,我想删除另一个节点。 这将导致一个shortdump(方法TREE_GET_CHILDREN中的异常" NODE_KEY_NOT_FOUND")。

感觉节点索引有刷新或类似的缺失。 还是这仅仅是SAL树的限制? 如何避免转储? 捕获CX_ROOT显然没有帮助。

以下是引发异常的代码段:

这是我编写的代码:

 METHOD remove_node。
     数据:lo_node类型参考cl_salv_node,
           lo_item类型参考cl_salv_item,
           lo_selections类型参考cl_salv_selections_tree。

     lo_selections = mo_tree-> get_selections()。

     尝试。
       lo_item = lo_selections-> get_selected_item()。
       lo_node = lo_item-> get_node()。
       lo_node-> delete()。
     捕捉CX_ROOT。
     ENDTRY。
     mo_tree-> display()。
   ENDMETHOD。

(21.4 kB)
付费偷看设置
发送
4条回答
悻福寶寶
1楼-- · 2020-09-15 08:22

看看示例程序BCALV_TREE_DEMO。 它具有您所需要的一切。

大道至简
2楼-- · 2020-09-15 08:22

看起来像它。 但是,它基于ALV树,而我正在使用SALV树。 没有用ALV取代SALV的预算,因此我必须设法解决。 据我所知,SALV树是基于ALV树的。 那么,有没有办法使用SALV树不直接提供的ALV树功能?

Bunny_CDM
3楼-- · 2020-09-15 08:10

您好,Patrick,
您第二次尝试删除节点时,是否要删除节点? 先前删除的节点的子节点?

我知道这听起来很傻,但是消息是,您的代码找不到要删除的节点,而DELETE方法删除了所选的节点及其所有子节点。

DafaDDDa
4楼-- · 2020-09-15 08:05

是的, 我认为索引有些混乱。

我不记得是否有刷新它们的方法,此刻,我正在旅行,因此没有SAP访问权限。

您能否尝试研究所有各种对象,以查看是否可以得到刷新索引的方法。

确认将调试您的代码并记下每次删除的索引。

一周热门 更多>