CL_SALV_TABLE调用第二个CL_SALV_TABLE

2020-08-17 02:37发布

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

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


大家好!

使用 Paul Hardy 很棒的博客,我设法创建了具有所有功能的CL_SALV_TABLE(自定义和非自定义) 我需要使用 Naimesh Patel 提示

现在出现了一个新的业务需求:单击一个新的功能按钮(已添加并实现!),我应该调用一个 second alv 已在其类中通过所有功能以及热点和用户进行管理 命令。

我天真地尝试仅创建新对象并调用该方法以显示alv,但是我没有刷新屏幕,显示的alv始终是"旧的"。

这里有一些代码片段可以更好地解释:

  • 第1类-方法SHOW_ALV
 METHOD show_alv。
     通话功能'SALV_CSQT_CREATE_CONTAINER'
       出口
         r_content_manager =我
         title ='每个interfaccia文件的Tabella guida'。
   ENDMETHOD。

仍然是第1类,实现if_salv_csqt_content_manager〜fill_container_content接口以创建和显示ALV

方法if_salv_csqt_content_manager〜fill_container_content。

     alv = create_alv(r_container)。
     set_alv_fcat(更改c_alv = alv)。
     set_alv_functions(更改c_alv = alv)。
     alv-> get_selections()-> set_selection_mode(if_salv_c_selection_mode => row_column)。
     为alv-> get_event()设置处理程序on_user_command。
     SET HANDLER on_link_click FOR alv-> get_event()。

     alv-> display()。
   终结法。

 

始终为第1类,用户命令(注意," transcode"定义为类型ref class2)

出现" TRASCODE"时。
         创建对象代码转换EXPORTING i_setup = setup_data。
         检查转码不是初始化的。
         transcode-> update_from_config(return_config_table_extended())。
         转码-> show_alv()。
       当别人。
     结束。

   ENDMETHOD。

在类2中,SHOW_ALV和接口if_salv_csqt_content_manager〜fill_container_content的实现方式相似。

有什么建议吗?

谢谢!

Simone

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

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


大家好!

使用 Paul Hardy 很棒的博客,我设法创建了具有所有功能的CL_SALV_TABLE(自定义和非自定义) 我需要使用 Naimesh Patel 提示

现在出现了一个新的业务需求:单击一个新的功能按钮(已添加并实现!),我应该调用一个 second alv 已在其类中通过所有功能以及热点和用户进行管理 命令。

我天真地尝试仅创建新对象并调用该方法以显示alv,但是我没有刷新屏幕,显示的alv始终是"旧的"。

这里有一些代码片段可以更好地解释:

  • 第1类-方法SHOW_ALV
 METHOD show_alv。
     通话功能'SALV_CSQT_CREATE_CONTAINER'
       出口
         r_content_manager =我
         title ='每个interfaccia文件的Tabella guida'。
   ENDMETHOD。

仍然是第1类,实现if_salv_csqt_content_manager〜fill_container_content接口以创建和显示ALV

方法if_salv_csqt_content_manager〜fill_container_content。

     alv = create_alv(r_container)。
     set_alv_fcat(更改c_alv = alv)。
     set_alv_functions(更改c_alv = alv)。
     alv-> get_selections()-> set_selection_mode(if_salv_c_selection_mode => row_column)。
     为alv-> get_event()设置处理程序on_user_command。
     SET HANDLER on_link_click FOR alv-> get_event()。

     alv-> display()。
   终结法。

 

始终为第1类,用户命令(注意," transcode"定义为类型ref class2)

出现" TRASCODE"时。
         创建对象代码转换EXPORTING i_setup = setup_data。
         检查转码不是初始化的。
         transcode-> update_from_config(return_config_table_extended())。
         转码-> show_alv()。
       当别人。
     结束。

   ENDMETHOD。

在类2中,SHOW_ALV和接口if_salv_csqt_content_manager〜fill_container_content的实现方式相似。

有什么建议吗?

谢谢!

Simone

付费偷看设置
发送
3条回答
zhangjiyang1323
1楼-- · 2020-08-17 03:23

如果在同一个容器中显示第二个ALV,但没有调用第一个容器的FREE方法(也请同时清除第一个ALV实例以避免进一步的问题),则将出现 2个ALV位于同一容器中,在这种情况下,始终显示第一个,容器中的其他控件保持不可见。

d56caomao
2楼-- · 2020-08-17 03:15

感谢 Sandra Rossi ,也许我还不够清楚:

我在第一个ALV用户命令中,所以我无法释放容器或当我释放容器时 关闭第二个Alv,我将得到一个转储:)

野沐沐
3楼-- · 2020-08-17 03:14

如果两个ALV网格位于同一容器中,则唯一的解决方案是释放第一个网格( 容器或将其隐藏(方法set_visible,但可能很难实现,因为SALV会隐藏ALV网格控件的实例)。

为此,我想唯一的可能是 通过控制器类管理屏幕,或按照传统方式创建屏幕。

一周热门 更多>