原文 http://blog.csdn.net/iamah/article/details/8438981

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

步骤:

1. 注册类为对类CL_GUI_ALV_GRID的事件DATA_CHANGED_FINISHED定义一个方法,创建对象gt_evnet_receiver

2. 调用FM 'REUSE_ALV_GRID_DISPLAY_LVC'时要调用事件 slis_ev_caller_exit_at_start来获取ALV对象并给其注册回车事件及处理方法.

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

DATA:  gt_event TYPE slis_t_event WITH HEADER LINE.

DATA:  ref_grid TYPE REF TO cl_gui_alv_grid.

"声明类及定义方法来处理data_changed_finished事件

CLASS lcl_event_receiver 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_RECEIVER DEFINITION

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

*       CLASS LCL_EVENT_RECEIVER IMPLEMENTATION

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

*

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

CLASS lcl_event_receiver IMPLEMENTATION.

METHOD handle_modify.

*    PERFORM refresh.

DATA stbl TYPE lvc_s_stbl.

LOOP AT gt_itab INTO wa_itab.

wa_itab-cc = wa_itab-bb * 2 .

MODIFY gt_itab FROM wa_itab.

ENDLOOP.

*   稳定刷新

stbl-row = 'X'.基于行的稳定刷新

stbl-col = 'X'.基于列稳定刷新

CALL METHOD ref_grid->refresh_table_display

EXPORTING

is_stable = stbl.

ENDMETHOD.                    "HANDLE_MODIFY

ENDCLASS.                    "LCL_EVENT_RECEIVER IMPLEMENTATION

DATA gt_event_receiver TYPE REF TO lcl_event_receiver .

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

gt_event-name = 'CALLER_EXIT'.   "slis_ev_caller_exit_at_start事件调用来获取ALV对象并注册回车事件

gt_event-FORM = 'FM_BUTTON'.

APPEND gt_event .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'

EXPORTING

i_callback_program                  = sy-repid

*    i_callback_user_command            = 'USER_COMMAND'

*    i_grid_settings                    = gs_grid

is_layout_lvc                       = gs_layo

it_fieldcat_lvc                     = pt_fcat[]

it_events                          = gt_event[]

*     it_event_exit                     = gt_event_exit[]

TABLES

t_outtab                            = pt_tab

*   EXCEPTIONS

*     PROGRAM_ERROR                     = 1

*     OTHERS                            = 2

.

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

FORM fm_button USING e_grid TYPE slis_data_caller_exit.

CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'

*   EXPORTING

*     IR_SALV_FULLSCREEN_ADAPTER       =

IMPORTING

*     ET_EXCLUDING                     =

*     E_REPID                          =

*     E_CALLBACK_PROGRAM               =

*     E_CALLBACK_ROUTINE               =

e_grid                           = ref_grid

*     ET_FIELDCAT_LVC                  =

*     ER_TRACE                         =

*     E_FLG_NO_HTML                    =

*     ES_LAYOUT_KKBLO                  =

*     ES_SEL_HIDE                      =

*     ET_EVENT_EXIT                    =

*     ER_FORM_TOL                      =

*     ER_FORM_EOL                      =

.

*   CALL METHOD ref_grid->check_changed_data.

设置enter事件

CALL METHOD ref_grid->register_edit_event

EXPORTING

i_event_id = cl_gui_alv_grid=>mc_evt_enter

EXCEPTIONS

error      = 1

OTHERS     = 2.

CREATE OBJECT gt_event_receiver.

SET HANDLER   gt_event_receiver->handle_modify FOR ref_grid.

ENDFORM.                    "FM_BUTTON

.

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

***************************************************************************************************************

***************************************************************************************************************

***************************************************************************************************************

完整代码,可执行

***************************************************************************************************************

***************************************************************************************************************

***************************************************************************************************************

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

*& Report  ZFELIX_ALV

*&

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

*&

*&

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

REPORT  zfelix_alv.

TYPE-POOLS: slis.

DATA: gs_fcat TYPE lvc_s_fcat,

gt_fcat TYPE lvc_t_fcat,

gs_layo TYPE lvc_s_layo,

gs_grid TYPE lvc_s_glay.

DATA: gt_event TYPE slis_t_event WITH HEADER LINE,

gt_event_exit TYPE slis_t_event_exit WITH HEADER LINE.

DATA:  ref_grid TYPE REF TO cl_gui_alv_grid..

DATA: BEGIN OF gt_itab OCCURS 0,

aa TYPE c,

bb TYPE i,

cc TYPE p,

style TYPE lvc_t_styl,

END OF gt_itab.

DATA: wa_itab LIKE gt_itab.

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

*       CLASS lcl_event_receiver DEFINITION

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

*

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

CLASS lcl_event_receiver 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_RECEIVER DEFINITION

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

*       CLASS LCL_EVENT_RECEIVER IMPLEMENTATION

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

*

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

CLASS lcl_event_receiver IMPLEMENTATION.

METHOD handle_modify.

*    PERFORM refresh.

DATA stbl TYPE lvc_s_stbl.

LOOP AT gt_itab INTO wa_itab.

wa_itab-cc = wa_itab-bb * 2 .

MODIFY gt_itab FROM wa_itab.

ENDLOOP.

*   稳定刷新

stbl-row = 'X'.基于行的稳定刷新

stbl-col = 'X'.基于列稳定刷新

CALL METHOD ref_grid->refresh_table_display

EXPORTING

is_stable = stbl.

ENDMETHOD.                    "HANDLE_MODIFY

ENDCLASS.                    "LCL_EVENT_RECEIVER IMPLEMENTATION

DATA gt_event_receiver TYPE REF TO lcl_event_receiver .

START-OF-SELECTION.

gt_itab-aa = 'aa'.

gt_itab-bb = 1.

gt_itab-cc = '1.2'.

APPEND gt_itab.

gt_itab-aa = 'aa'.

gt_itab-bb = 1.

gt_itab-cc = '1.2'.

APPEND gt_itab.

gt_itab-aa = 'aa'.

gt_itab-bb = 1.

gt_itab-cc = '1.2'.

APPEND gt_itab.

PERFORM display_data .

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

*&      Form  display_data

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

*       text

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

FORM display_data .

PERFORM set_fcat.

PERFORM set_layout.

*  gt_event-form = 'DATA_CHANGED'.

*  gt_event-name = slis_ev_data_changed.

*  APPEND gt_event.

*  gt_event_exit-ucomm  =  'ENTR'. "Enter = 'ENTR' & '/00' & ' '

*  APPEND gt_event_exit.

*  gt_event_exit-ucomm  =  '/00'.

*  APPEND gt_event_exit.

*

*  gt_event_exit-ucomm  =  ' '.

*  APPEND gt_event_exit.

*

*  gt_event_exit-ucomm  =  '&DATA_SAVE'.

*  APPEND gt_event_exit.

*

*  gt_event_exit-ucomm  = '&F03'.   "Back

*  APPEND gt_event_exit.

*  gt_event_exit-ucomm  = '&F15'.

*  APPEND gt_event_exit.

*  gt_event_exit-ucomm  = '&F12'.

*  APPEND gt_event_exit  .

PERFORM show_alv  TABLES gt_fcat  gt_itab[]

USING  gs_layo.

ENDFORM.                    " DISPLAY_DATA

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

FORM set_fcat .

PERFORM csalv_set_fcat USING:

" 'Field' 'Text' 'Edit' 'Zero' 'Type' 'Qfieldname' 'Key' 'Hostspot' 'Emphasize' 'Checkbox'

'AA'  'AA'  ''  ''  ''  ''  ''  ''  ''  '',

'BB'  'BB'  'X'  ''  ''  ''  ''  ''  ''  '',

'CC'  'CC'  ''  ''  ''  ''  ''  ''  ''  ''.

*        'DD'  'DD'  'X'  ''  ''  ''  ''  'X'  ''  'X',

*        'EE'  'EE'  ''  ''  ''  ''  ''  ''  ''  'X'  .

ENDFORM.                    " SET_FCAT

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

FORM set_layout .

gs_layo-zebra             = 'X'.

*  gs_layout-stylefname     = 'FIELD_STYLE'.

*  gs_layo-CWIDTH_OPT        =  'X'.

ENDFORM.                    " SET_LAYOUT

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

FORM csalv_set_fcat USING p_name

p_text

p_edit

p_zero

p_type

p_qfieldname

p_key

p_hotspot

p_emphasize

p_checkbox.

gs_fcat-fieldname   =  p_name.

*  gs_fcat-reptext_l   =

*  gs_fcat-selddictxt   =

gs_fcat-reptext     =  p_text.

gs_fcat-edit        =  p_edit.

gs_fcat-no_zero     =  p_zero.

gs_fcat-datatype    =  p_type.

gs_fcat-qfieldname  =  p_qfieldname.

gs_fcat-key         =  p_key.

gs_fcat-hotspot     =  p_hotspot.

gs_fcat-emphasize   =  p_emphasize.

gs_fcat-checkbox    =   p_checkbox.

APPEND gs_fcat TO  gt_fcat.

ENDFORM.                    "csalv_set_fcat

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

FORM show_alv TABLES  pt_fcat

pt_tab

USING   ps_layout.

*  gs_grid-edt_cll_cb = 'X'.

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

gt_event-FORM = 'FM_BUTTON'.

APPEND gt_event .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'

EXPORTING

i_callback_program                  = sy-repid

*    i_callback_user_command            = 'USER_COMMAND'

*    i_grid_settings                    = gs_grid

is_layout_lvc                       = gs_layo

it_fieldcat_lvc                     = pt_fcat[]

it_events                          = gt_event[]

*     it_event_exit                     = gt_event_exit[]

TABLES

t_outtab                            = pt_tab

*   EXCEPTIONS

*     PROGRAM_ERROR                     = 1

*     OTHERS                            = 2

.

ENDFORM.                    "csalv_set_fcat

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

*&      Form  user_command

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

*       text

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

*      -->P_UCOMM      text

*      -->PS_SELFIELD  text

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

FORM user_command USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield.

CASE r_ucomm.

WHEN '&DATA_SAVE'.

WHEN ' ' .

WHEN OTHERS.

ENDCASE.

ENDFORM.                    "user_command

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

*&      Form  SET_PF_STATUS

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

*       text

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

*      -->RT_EXTAB   text

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

FORM set_pf_status USING rt_extab TYPE slis_t_extab..

*  SET PF-STATUS '100'.

ENDFORM.                    "SET_PF_STATUS

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

*&      Form  fm_button

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

*       text

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

*      -->E_GRID     text

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

FORM fm_button USING e_grid TYPE slis_data_caller_exit.

CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'

*   EXPORTING

*     IR_SALV_FULLSCREEN_ADAPTER       =

IMPORTING

*     ET_EXCLUDING                     =

*     E_REPID                          =

*     E_CALLBACK_PROGRAM               =

*     E_CALLBACK_ROUTINE               =

e_grid                           = ref_grid

*     ET_FIELDCAT_LVC                  =

*     ER_TRACE                         =

*     E_FLG_NO_HTML                    =

*     ES_LAYOUT_KKBLO                  =

*     ES_SEL_HIDE                      =

*     ET_EVENT_EXIT                    =

*     ER_FORM_TOL                      =

*     ER_FORM_EOL                      =

.

*   CALL METHOD ref_grid->check_changed_data.

设置enter事件

CALL METHOD ref_grid->register_edit_event

EXPORTING

i_event_id = cl_gui_alv_grid=>mc_evt_enter

EXCEPTIONS

error      = 1

OTHERS     = 2.

CREATE OBJECT gt_event_receiver.

SET HANDLER   gt_event_receiver->handle_modify FOR ref_grid.

ENDFORM.                    "FM_BUTTON

转载于:https://www.cnblogs.com/springzt/p/4371700.html

转载非原创:修改BB 的内容,回车后修改CC 的值相关推荐

  1. (淘宝无限适配)移动手机端rem布局详解(转载非原创)

    https://www.cnblogs.com/well-nice/p/5509589.html (淘宝无限适配)手机端rem布局详解(转载非原创) 从网易与淘宝的font-size思考前端设计稿与工 ...

  2. 向程序输入数据12345M678并回车后,x的值为123,y的值为45.000000

    int x; float y;scanf("%3d%f",&x,&y); 向程序输入数据:12345M678并回车后,x的值为123,y的值为45.000000 总 ...

  3. (淘宝无限适配)手机端rem布局详解(转载非原创)

    从网易与淘宝的font-size思考前端设计稿与工作流 本文结合自己对网易与淘宝移动端首页html元素上的font-size这个属性的思考与学习,讨论html5设计稿尺寸以及前端与设计之间协作流程的问 ...

  4. 转载非原创-- 一个APP的前世和今生

    (1)前言 从今天开始,我会用一个系列的小文写一个我在2010年底开始进行的一个旅游App产品的开发经历.这个产品现在还在苹果的软件商店里,Apple AppStore,他有近7000的下载量.绝大多 ...

  5. (淘宝无限适配)手机端rem布局详解(转载非原创) 1

    从网易与淘宝的font-size思考前端设计稿与工作流 本文结合自己对网易与淘宝移动端首页html元素上的font-size这个属性的思考与学习,讨论html5设计稿尺寸以及前端与设计之间协作流程的问 ...

  6. linux修改程序文件内容,linux 批量修改文件内容

    如果有批量修改文件内容的需求,可参考下面这些方法 1.批量查找某个目下文件的包含的内容,例如: #   grep -rn或l "要找查找的文本"  路径或文件 rn表示匹配查找字符 ...

  7. bandizip修改压缩文件内容_如何修改压缩文件的编码?

    使用系统自带的那个"发送到-压缩文件夹"?那么就是压缩为zip格式了.而这种格式,确实要考虑文件名编码的问题--你在日语系统下压缩,使用了本地编码Shift-JIS,显示正常的文件 ...

  8. webbrowser设置html内容,delphi 修改WebBrowser的内容

    很多方法都可以修改WebBrowser的内容.比如说修改innerHTML.以流方式修改. 以流方式就不说了,网上很多代码.直接修改innerHTML的方法很简单,但是有个缺点,修改后没保存,最近在做 ...

  9. Keil MDK5中(1)汉字注释显示转向,字体显示朝左旋转90°(2)汉字注释显示为问号(3)按回车后光标缩进距离太大的解决办法

    这是目录0.0 前言 第一个问题:汉字注释显示转向,字体显示朝左旋转90°解决办法: 第二个问题:注释中的汉字变成了问号,显示不出来,如下图所示: 第三个问题:按回车后光标缩进距离太大,如下图所示: ...

最新文章

  1. 【.NET Core项目实战-统一认证平台】第四章 网关篇-数据库存储配置(2)
  2. 最全面的linux信号量解析
  3. js将百度坐标转为wgs84
  4. (68)SPI工作模式有哪些?分为几种极性模式。
  5. PHP 大文件下载(方式3 支持断点续传)
  6. php清空session值_php注销session变量和销毁session详细分析
  7. Revit二次开发——一个简单的插件
  8. [Python黑帽] 二.Python能做什么攻击?正则表达式、网络爬虫和套接字通信入门
  9. 浙江工大学计算机学院保研,浙江工业大学计算机学院保研初试名单
  10. 从零开始学习node.js
  11. dlib实现人脸识别方法
  12. C语言—字符串函数和内存函数
  13. 启动时出现 r8169 0000:02:00.0: firmware: agent loaded rtl_nic/rtl8168e-3.fw into memory
  14. 手机端的日期选择的插件
  15. Java、JSP大阳电动车销售系统的设计与实现
  16. 用Rest assured作API自动化集成测试
  17. URL Extractor 4 for Mac(URL资源地址抓取器)特别版
  18. std::forward理解
  19. FICO 里面的替代和校验 以及调试
  20. Linux中命令行查找文件

热门文章

  1. Linux下如何实现用户的集中管理(NIS服务器的高级配置)
  2. vivado烧录flash过程
  3. Python作为目前的大势,有哪些优势?
  4. 美国本科计算机专业,美国本科计算机专业的最新排名介绍
  5. 分布式 java 应用:基础与实践_西研技术大讲堂第二期FRCS应用情况介绍及分布式技术平台能力应用实践...
  6. 无线ap软件_无线WLAN网络的优化技术
  7. 云计算的7种变化方式
  8. jfinal js 拦截_jfinal全局数据拦截器
  9. HDU2112(SPFA算法)
  10. java操作跨页的word cell,利用itext 生成pdf,处理cell 跨页问题 [转]