弹出以在cl_gui_alv_grid中进行确认

2020-08-20 17:49发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中) 你好ABAPers, ...

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

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


你好ABAPers,

是否可以实现弹出窗口以在可编辑的cl_gui_alv_grid中进行确认?

我知道有一个可以使用的功能,但是我想在标准的alv delete选项中实现此弹出式窗口(当用户点击Delete图标以删除所选行时,应该弹出一个窗口来确认此操作 )。 请看附件的屏幕截图!

我正在哎呀,我想举一个例子来回答:)

P.S。 我已经尝试通过创建要删除的自定义按钮来尝试弹出该窗口,但是我需要在Alv标准工具栏中弹出该窗口。

预先感谢:)

(9.0 kB)
7条回答
My梦
2020-08-20 18:22 .采纳回答

最简单的解决方案:

  • 为TOOLBAR事件定义事件处理程序,以替换功能代码&LOCAL&DELETE_ROW。
  • 为USER_COMMAND事件定义事件处理程序,在其中显示

快速且肮脏的代码(定义一个真实的容器,请勿使用cl_gui_container => screen0):

 CLASS lcl_app DEFINITION。
   公共部分。
     方法pbo。
     方法on_toolbar
       活动工具栏
                   OF cl_gui_alv_grid
       导入e_object。
     方法on_user_command
       EVENT用户命令
                   OF cl_gui_alv_grid
       导入e_ucomm。
     数据go_alv类型参考cl_gui_alv_grid。
     数据gt_sflight sflight的类型表。
 ENDCLASS。

 类别lcl_app实施。
   方法pbo。
     选择* FROM sflight进入表gt_sflight的对应字段。
     创建对象go_alv
       出口
         i_parent = cl_gui_container => screen0。
     在go_alv中设置处理程序on_toolbar。
     在go_alv中设置处理程序on_user_command。
     go_alv-> set_table_for_first_display(
         出口
           i_structure_name ='SFLIGHT'
           is_layout = VALUE#(编辑='X')
         改变
           it_outtab = gt_sflight)。
   终结法。
   方法on_toolbar。
     将FIELD_SYMBOL()的ASSIGN e_object-> mt_toolbar [function ='&LOCAL&DELETE_ROW']分配。
     如果sy-subrc = 0。
        -function ='ZZ_DELETE_ROW'。
     万一。
   终结法。
   方法on_user_command。
     案例e_ucomm。
       当" ZZ_DELETE_ROW"时。
         go_alv-> get_current_cell(IMPORTING e_row = DATA(row))。
         " 弹出
         如果1 =1。",如果您确认删除
           删除gt_sflight INDEX行。
           go_alv-> refresh_table_display(EXCEPTIONS OTHERS = 2)。
         万一。
     结束。
   终结法。
 ENDCLASS。

 参数哑元。

 DATA APP TYPE REF TO LCL_APP。

 选择屏幕输出时。
   如果应用程序未绑定。
     应用= NEW lcl_app()。
     app-> pbo()。
   万一。

 在退出命令的选择屏幕上。
   app-> go_alv-> check_changed_data()。  " <===将屏幕输入转移到GT_SFLIGHT
   app-> go_alv-> free()。
 

一周热门 更多>