ALV响应回车事件修改内容

修改字段BB的内容,回车后修改CC的值

步骤:

1、定义类lcl_event_handler、定义方法用于实现类CL_GUI_ALV_GRID的事件DATA_CHANGED_FINISHED,实现类、方法;

2、调用FM ‘REUSE_ALV_GRID_DISPLAY_LV’时,给事件CALLER_EXIT添加FORM子程序;

3、在事件CALLER_EXIT的FORM子程序中注册回车事件、创建类lcl_event_handler对象CREATE OBJECT g_event_receiver、注册事件     DATA_CHANGED_FINISHED
SET HANDLER g_event_receiver->handle_modify FOR gr_grid.

TYPE-POOLS: slis.

TYPES: BEGIN OF typ_itab,

aa TYPE c,

bb TYPE i,

cc TYPE i,

END OF typ_itab.

DATA: gt_itab TYPE TABLE OF typ_itab WITH HEADER LINE,

wa_tab TYPE typ_itab,

gt_fieldcat TYPE lvc_t_fcat,

wa_layout TYPE lvc_s_layo,

gt_event TYPE slis_t_event WITH HEADER LINE,

gr_grid TYPE REF TO cl_gui_alv_grid.

CLASS: lcl_event_handler DEFINITION DEFERRED.

DATA: g_event_receiver TYPE REF TO lcl_event_handler.

*----------------------------------------------------------------------*

*       CLASS lcl_event_handler DEFINITION

*----------------------------------------------------------------------*

*

*----------------------------------------------------------------------*

CLASS lcl_event_handler DEFINITION.

PUBLIC SECTION.

METHODS:

handle_modify FOR EVENT data_changed_finished OF cl_gui_alv_grid

IMPORTING e_modified et_good_cells.

ENDCLASS.                    "lcl_event_handler DEFINITION

*----------------------------------------------------------------------*

*       CLASS lcl_event_handler IMPLEMENTATION

*----------------------------------------------------------------------*

*

*----------------------------------------------------------------------*

CLASS lcl_event_handler IMPLEMENTATION.

METHOD handle_modify.

DATA: ls_stbl TYPE lvc_s_stbl.

LOOP AT gt_itab INTO wa_tab.

wa_tab-cc = wa_tab-bb * 2 .

MODIFY gt_itab FROM wa_tab TRANSPORTING cc.

ENDLOOP.

ls_stbl = ‘XX‘.

CALL METHOD gr_grid->refresh_table_display

EXPORTING

is_stable = ls_stbl.

ENDMETHOD.                    "HANDLE_MODIFY

ENDCLASS.                    "lcl_event_handler IMPLEMENTATION

START-OF-SELECTION.

**--取数

PERFORM frm_fetch_data.

**--输出列字段设置

PERFORM frm_set_fieldcat.

**--输出列字段属性设置

PERFORM frm_set_fieldcat_attribute.

**--ALV显示

PERFORM frm_display_alv.

*&---------------------------------------------------------------------*

*&      Form  FRM_FETCH_DATA

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM frm_fetch_data .

gt_itab-aa = ‘aa‘.

gt_itab-bb = 1.

gt_itab-cc = 3.

APPEND gt_itab.

ENDFORM.                    " FRM_FETCH_DATA

*&---------------------------------------------------------------------*

*&      Form  FRM_SET_FIELDCAT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM frm_set_fieldcat .

DATA: ls_fieldcat TYPE lvc_s_fcat.

DEFINE fieldcat.

ls_fieldcat-col_pos = &1.

ls_fieldcat-fieldname = &2.

ls_fieldcat-scrtext_l = &3.

ls_fieldcat-checkbox = &4.

ls_fieldcat-edit = &5.

ls_fieldcat-decimals = &6.

append ls_fieldcat to gt_fieldcat.

clear ls_fieldcat.

END-OF-DEFINITION.

fieldcat ‘1‘ ‘AA‘ ‘AA‘ ‘‘ ‘‘ ‘‘.

fieldcat ‘2‘ ‘BB‘ ‘BB‘ ‘‘ ‘X‘ ‘‘.

fieldcat ‘3‘ ‘CC‘ ‘CC‘ ‘‘ ‘‘ ‘0‘.

ENDFORM.                    " FRM_SET_FIELDCAT

*&---------------------------------------------------------------------*

*&      Form  FRM_SET_FIELDCAT_ATTRIBUTE

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM frm_set_fieldcat_attribute .

ENDFORM.                    " FRM_SET_FIELDCAT_ATTRIBUTE

*&---------------------------------------------------------------------*

*&      Form  FRM_DISPLAY_ALV

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM frm_display_alv .

gt_event-name = ‘CALLER_EXIT‘.   "slis_ev_caller_exit_at_start事件

gt_event-form = ‘FRM_CALLER_EXIT‘.

APPEND gt_event.

CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY_LVC‘

EXPORTING

i_callback_program = sy-repid

it_fieldcat_lvc    = gt_fieldcat[]

it_events          = gt_event[]

TABLES

t_outtab           = gt_itab.

ENDFORM.                    " FRM_DISPLAY_ALV

*&---------------------------------------------------------------------*

*&      Form  FRM_CALLER_EXIT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->E_GRID     text

*----------------------------------------------------------------------*

FORM frm_caller_exit USING ir_grid TYPE slis_data_caller_exit.

CALL FUNCTION ‘GET_GLOBALS_FROM_SLVC_FULLSCR‘

IMPORTING

e_grid = gr_grid.

"---注册回车事件

CALL METHOD gr_grid->register_edit_event

EXPORTING

i_event_id = cl_gui_alv_grid=>mc_evt_enter

EXCEPTIONS

error      = 1

OTHERS     = 2.

CREATE OBJECT g_event_receiver.

SET HANDLER g_event_receiver->handle_modify FOR gr_grid.

ENDFORM.                    "FRM_CALLER_EXIT



版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-15 00:17:03

ALV响应回车事件修改内容的相关文章

angularjs中响应回车事件

下面这个示例在输入框键入回车键或者点击按钮时,将输入框的值置为"Hello World!":(黄色背景内容为响应回车事件涉及到的代码) <html ng-app="myApp"> <head> <meta charset="utf-8"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8&quo

Qt 中响应回车事件 keyPressEvent

这两天闲着用Qt把迷宫问题重写了一下, 记得当时本科学数据结构的时候写迷宫问题,各种蛋疼,现在居然一下就写出来了, 这里不再多说. 我们现在想把原来的win32黑窗口用图形化显示出来, 于是想到了QT, 我们先把原始迷宫图显示出来: 添加回车事件 在类的声明中添加 void keyPressEvent(QKeyEvent * event); 在类的实现中添加 void Dialog::keyPressEvent(QKeyEvent *event) { if (event->key() == Qt

网页按钮响应回车事件

我们有时候希望回车键敲在文本框(input element)里来提交表单(form),但有时候又不希望如此.比如搜索行为,希望输入完关键词之后直接按回车键立即提交表单,而有些复杂表单,可能要避免回车键误操作在未完成表单填写的时候就触发了表单提交. 要控制这些行为,不需要借助JS,浏览器已经帮我们做了这些处理,这里总结几条规则:     如果表单里有一个type=”submit”的按钮,回车键生效.     如果表单里只有一个type=”text”的input,不管按钮是什么type,回车键生效.

AngularJs 相应回车事件

最近做项目,要用到AngularJs,之前也有用过一点点,但仅限于数据的绑定,这次项目要整个前端需要使用这个框架,可能是不熟悉的原因,感觉这代码搞起来非常的不便利,:现总结一个响应回车事件: <!doctype html> <html> <head> <meta charset="utf-8"> <title>test</title> <script src="http://apps.bdimg.c

Ogre: 建立一个简单的框架——响应键盘事件

[转载请保证内容的完整性和正确性] 建立一个简单的框架——响应键盘事件 上一节我们在场景中添加了一个机器人,这一节我们将建立一个FrameListener类(顾名思义,这是一个侦听类),来控制模型进行移动. 创建FrameListener类 FrameListener类主要负责事件的侦听,如帧结束.键盘输入等事件.它继承自ExampleFrameListener类,如果需要的话还可以继承KeyListener(键盘事件).MouseListener(鼠标事件)和JoyStickListener(

js实现标签绑定回车事件

给一个input 绑定一个回车事件, 如搜索框 输入内容后敲回车键执行某个事件 <input id="freeText" type="text" value=""> $("#freeText").keypress(function (evt) { evt = (evt) ? evt : ((window.event) ? window.event : ""); var key = evt.key

通过js实现单击或双击直接修改内容

代码并不重要,关键是思路,这里简要说一下: 1.展示的时候直接将内容展示在文本框中,文本框的边框设置为0,也可以在设置一下readonly,这样在展示到页面上的时候给人一种普通文本的假象, 实际是显示在边框为0的文本框中,给文本框加单击或者双击事件,触发时将边框更改为1,并且去掉readonly属性,这样就可以修改了,同时也要有失去 焦点事件,失去焦点时通过ajax将相应的数据发送到服务器端进行修改,修改成功文本框恢复原状.这种方式给用户一种假象,有时体验不太好,比如设置双击 触发事件,而单击时

自定义 ViewGroup 支持无限循环翻页之三(响应回调事件)

大家如果喜欢我的博客,请关注一下我的微博,请点击这里(http://weibo.com/kifile),谢谢 转载请标明出处,再次感谢 ####################################################################### 自定义 ViewGroup 支持无限循环翻页系列 自定义 ViewGroup 支持无限循环翻页之一(重写 onLayout以及 dispatchDraw) 自定义 ViewGroup 支持无限循环翻页之二(处理触摸事件)

easyui-combobox绑定回车事件注意事项

回车事件的定义的位置必须是easyui-combobox数据加载的后面,才有效果. HTML文件: <select id="aucBrandNo" class="easyui-combobox" name="aucBrandNo" style="width: 160px;" data-options="required:true,onHidePanel:function(){validateComboboxIn