弹出以在cl_gui_alv_grid中进行确认

2020-08-20 17:49发布

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

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


你好ABAPers,

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

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

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

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

预先感谢:)

(9.0 kB)

         点击此处--->   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梦
1楼 · 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()。
 
haha101010
2楼-- · 2020-08-20 18:39

fadi fadi 只是我不明白您的评论对您的初始问题有何影响 。

zhangjiyang1323
3楼-- · 2020-08-20 18:24

您好,Fadi

请参阅此链接,可能会对您有所帮助。

https://answers.sap.com/questions/3561464/alv--custom-message-popup -during-standard-button-p.html

注意,

Venkat

jovirus
4楼-- · 2020-08-20 18:34

该按钮由ALV网格内部处理 本身。 有一种方法可以在删除后立即通过标准按钮立即得到通知,但为时已晚,该行已被删除(REGISTER_EDIT_EVENT(mc_evt_modified)+事件DATA_CHANGED)。 我敢打赌,用自定义按钮(在事件"工具栏"期间)替换标准的"删除"按钮会更容易。

代楠1984
5楼-- · 2020-08-20 18:26

是的,桑德拉,您是对的。 实现自定义按钮很容易,但是我想知道要实现在标准删除按钮中弹出的问题。

我是ABAP的新手,并且了解实现此目标的选项。

CJones
6楼-- · 2020-08-20 18:28

hi Sandra Rossi 谢谢您的帮助。 :)

DafaDDDa
7楼-- · 2020-08-20 18:37

您好,Venkat,

我试图实现该链接中给出的解决方案,但是我没有得到期望的结果!

一周热门 更多>