事件delay_callback-ALV GRID

2020-09-09 18:51发布

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

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


嗨,

我有一个具有若干功能(双击,用户命令等)的alv网格。

现在我假装使用cl_gui_alv_grid的delay_callback事件。

我已经看到了示例BCALV_TEST_GRID_EVENTS,并在程序中实现了该事件,但是它不起作用。

该事件未引发!

这是我的代码:

....

cl_event_receiver_300类定义。

公共部分。

数据:ucomm类型为sy-ucomm。

数据:selfield类型slis_selfield。

  • 延迟的回调

方法handle_delayed_callback

处理cl_gui_alv_grid的事件delay_callback。

...

endclass。

class cl_event_receiver_300

  • 处理delay_callback

方法handle_delayed_callback。

消息i000(zm)带有" Delayed" '。

终止方法。 "延迟回叫

结束类。

模块alv_300_display输出。

如果g_custom_container_300是初始的。

  • 为以下对象创建容器 ALV网格

创建对象g_custom_container_300

导出

container_name ='CUSTOM_CONTROL_300'。

endif。

如果grid_300是初始的。

  • 创建事件接收器

创建对象event_receiver_300。

  • 创建ALV网格

创建对象grid_300

导出

i_appl_events''" 选择

i_parent = g_custom_container_300。

  • 选择。 上校 宽度

清除gs_layout_alv。

gs_layout_alv-cwidth_opt =已选中。

gs_layout_alv-grid_title ='Contactos com o Cliente'。

gs_layout_alv-zebra ='X'。

gs_layout_alv-sel_mode ='A'。

  • 唯一的标准配置 ferramentas

将cl_gui_alv_grid => mc_fc_graph附加到gt_funcoes_300。

将cl_gui_alv_grid => mc_fc_help附加到gt_funcoes_300。

附加cl_gui_alv_grid mc_mb_sum添加到gt_funcoes_300。/p>

  • D'n'D的句柄

  • gs_layout_alv-s_dragdrop-row_ddid = g_handle_alv。

  • ALV网格处理程序

为grid_300设置处理程序event_receiver_300-> handle_toolbar_set。

为grid_300设置处理程序event_receiver_300-> handle_user_command。

为grid_300设置处理程序event_receiver_300-> handle_double_click。

为grid_300设置处理程序event_receiver_300-> handle_delayed_callback

。 p>

调用方法grid_300-> register_delayed_event

导出

i_event_id = cl_gui_alv_grid => mc_evt_delayed_move_curr_cell。

  • criaçãodocatálogode campos

执行create_fieldcat_cont。

  • variante

variant_alv- 报告= sy-repid。

调用方法grid_300-> set_table_for_first_display

导出i_save ='A'

it_toolbar_clusion = gt_funcoes_300 []

i_default ='X'

i_buffer_active =''

i_bypassing_buffer =''

i_consistency_check =''

更改it_outtab = it_contactos []

it_fieldcatalog = gt_fieldcat_cont []。

  • 刷新

    调用方法cl_gui_control => set_focus导出控件 = grid_300。

    调用方法cl_gui_cfw => flush。

    endif。

    如果选择了flg_new_300。

    清除flg_new_300。

    • 调用数据

    调用方法grid_300-> set_frontend_layout

    导出is_layout = gs_layout_alv。

    调用方法grid_300-> refresh_table_display。

    • 刷新

    调用方法cl_gui_control => set_focus导出控件= grid_300

    调用方法cl_gui_cfw => flush。

    endif。

    endmodule。 " alv_300_display OUTPUT

    最诚挚的问候

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

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


嗨,

我有一个具有若干功能(双击,用户命令等)的alv网格。

现在我假装使用cl_gui_alv_grid的delay_callback事件。

我已经看到了示例BCALV_TEST_GRID_EVENTS,并在程序中实现了该事件,但是它不起作用。

该事件未引发!

这是我的代码:

....

cl_event_receiver_300类定义。

公共部分。

数据:ucomm类型为sy-ucomm。

数据:selfield类型slis_selfield。

  • 延迟的回调

方法handle_delayed_callback

处理cl_gui_alv_grid的事件delay_callback。

...

endclass。

class cl_event_receiver_300

  • 处理delay_callback

方法handle_delayed_callback。

消息i000(zm)带有" Delayed" '。

终止方法。 "延迟回叫

结束类。

模块alv_300_display输出。

如果g_custom_container_300是初始的。

  • 为以下对象创建容器 ALV网格

创建对象g_custom_container_300

导出

container_name ='CUSTOM_CONTROL_300'。

endif。

如果grid_300是初始的。

  • 创建事件接收器

创建对象event_receiver_300。

  • 创建ALV网格

创建对象grid_300

导出

i_appl_events''" 选择

i_parent = g_custom_container_300。

  • 选择。 上校 宽度

清除gs_layout_alv。

gs_layout_alv-cwidth_opt =已选中。

gs_layout_alv-grid_title ='Contactos com o Cliente'。

gs_layout_alv-zebra ='X'。

gs_layout_alv-sel_mode ='A'。

  • 唯一的标准配置 ferramentas

将cl_gui_alv_grid => mc_fc_graph附加到gt_funcoes_300。

将cl_gui_alv_grid => mc_fc_help附加到gt_funcoes_300。

附加cl_gui_alv_grid mc_mb_sum添加到gt_funcoes_300。/p>

  • D'n'D的句柄

  • gs_layout_alv-s_dragdrop-row_ddid = g_handle_alv。

  • ALV网格处理程序

为grid_300设置处理程序event_receiver_300-> handle_toolbar_set。

为grid_300设置处理程序event_receiver_300-> handle_user_command。

为grid_300设置处理程序event_receiver_300-> handle_double_click。

为grid_300设置处理程序event_receiver_300-> handle_delayed_callback

。 p>

调用方法grid_300-> register_delayed_event

导出

i_event_id = cl_gui_alv_grid => mc_evt_delayed_move_curr_cell。

  • criaçãodocatálogode campos

执行create_fieldcat_cont。

  • variante

variant_alv- 报告= sy-repid。

调用方法grid_300-> set_table_for_first_display

导出i_save ='A'

it_toolbar_clusion = gt_funcoes_300 []

i_default ='X'

i_buffer_active =''

i_bypassing_buffer =''

i_consistency_check =''

更改it_outtab = it_contactos []

it_fieldcatalog = gt_fieldcat_cont []。

  • 刷新

    调用方法cl_gui_control => set_focus导出控件 = grid_300。

    调用方法cl_gui_cfw => flush。

    endif。

    如果选择了flg_new_300。

    清除flg_new_300。

    • 调用数据

    调用方法grid_300-> set_frontend_layout

    导出is_layout = gs_layout_alv。

    调用方法grid_300-> refresh_table_display。

    • 刷新

    调用方法cl_gui_control => set_focus导出控件= grid_300

    调用方法cl_gui_cfw => flush。

    endif。

    endmodule。 " alv_300_display OUTPUT

    最诚挚的问候

付费偷看设置
发送
8条回答
nice_wp
1楼 · 2020-09-09 19:19.采纳回答

如果您仍在寻找可能的解决方案(13年后),或者更多(如果有人)...(我曾经)

如果不需要在ALV网格中使用右键单击上下文菜单,则可以重新设置CONTEXT_MENU_REQUEST事件的用途...

 CLASS lcl_event_receiver定义。
   公共部分。
     方法:
       handle_context_menu
         对于事件context_menu_request OF cl_gui_alv_grid
           导入e_object。
 ENDCLASS。

 CLASS lcl_event_receiver的实现。
   方法handle_context_menu。
 *关闭上下文菜单选项
     调用方法e_object-> clear。
 *处理您的特定右键单击功能
     PERFORM handle_context_menu使用电子对象。
   终结法。
 ENDCLASS。
 表格create_grid。
 *在程序启动时创建并初始化网格
   创建对象gw_grid
     出口
       i_parent = gw_container
       i_appl_events ='X'。
   呼叫方法gw_grid-> set_table_for_first_display
     ...
 *设置上下文菜单处理程序
   为gw_grid设置处理程序gw_alv_event-> handle_context_menu。
 ENDFORM。  " create_grid
 FORM handle_context_menu使用e_object类型引用到cl_ctmenu。
   数据:
     lt_row_no TYPE lvc_t_roid,
     lw_row TYPE i,
     lw_value TYPE c,
     lw_col TYPE i,
     lw_row_id类型lvc_s_row,
     lw_col_id类型lvc_s_col,
     lw_row_no类型lvc_s_roid。
   字段符号:
     与gw_data类似。  "指向您的数据表的指针
 *获取当前光标行
   调用方法gw_grid_sppr-> get_current_cell
     输入
       e_row = lw_row
       e_value = lw_value
       e_col = lw_col
       es_row_id = lw_row_id
       es_col_id = lw_col_id
       es_row_no = lw_row_no。
   检查lw_row_no-row_id不是INITIAL。
 *阅读您的关联数据
   读取表gt_data分配索引lw_row_no-row_id。
   检查sy-subrc EQ 0。
 *做你的东西...
   调用方法cl_gui_cfw =>刷新。
 ENDFORM。  " handle_context_menu
 

希望有帮助。 :D

能不能别闹
2楼-- · 2020-09-09 19:15

您好 Bryan Sippel

非常感谢您的回复。 问题已解决。

现在我还有另一个任务:) :)。

关于此,

半个程序猿
3楼-- · 2020-09-09 19:09

嗨,

< p>我已经在使用手柄:

grid_300的handle_toolbar_set

grid_300的handle_user_command

grid_300的handle_double_click

我假装 使用delay_callback在用户单击当前选定单元格以外的其他单元格的同时在屏幕上显示文本。

最诚挚的问候,

MariaJoãoRocha

d56caomao
4楼-- · 2020-09-09 19:05

Hello Maria,

根据 documentationhttp://help.sap.com/saphelp_erp2004/helpdata/zh-cn/ee/c8e065d52611d2b468006094192192fe3/frameset.htm"> documentation>,该事件将通过< i>延迟。这可能是原因。

此外,您是否真的应该出于目的使用事件 delayed_changed_sel_callback

此致

Anand Mandalika。

CJones
5楼-- · 2020-09-09 18:59

Maria,

对于您的情况,我不确定,为什么要处理DELAYED_CALLBACK事件,而不是处理设置了事件的事件

为grid_300设置处理程序event_receiver_300-> handle_toolbar_set。

为grid_300设置处理程序event_receiver_300-> handle_user_command。

为grid_300设置处理程序event_receiver_300-> handle_double_click。

您应该为HANDLE_TOOLBAR,HANDLE_USER_COMMAND和HANDLE_DOUBLE_CLICK编写方法。 我找不到相同的代码。

此致

Ravi

注意:请标记出有用的答案。

打个大熊猫
6楼-- · 2020-09-09 19:15

玛丽亚,

我不确定使用DELAY CALL BACK的确切原因是什么。 您提到的事件可以通过激活直接使用。

您可以尝试删除DELAYED CALL BACK事件并查看是否获得所需的输出吗?

此致

Ravi

CJones
7楼-- · 2020-09-09 19:21

嗨,

延迟...,让示例程序BCALV_TEST_GRID_EVENTS运行正常,文档显示"短暂的1.5秒延迟" 。

也许还有其他方法可以满足我的需要,但我不知道该怎么做! 可以帮忙吗?

最好的问候,

MariaJoãoRocha

一周热门 更多>