ALV双击单元格事件处理
*激发双击事件
FORM f_alv_user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield. "先引用类型池 TYPE-POOLS: slis CASE r_ucomm.
WHEN '&IC1'.
PERFORM double_click USING rs_selfield-tabindex "双击显示明细
rs_selfield-fieldname .
ENDCASE. FORM double_click USING p_tabindex "双击行号
p_fieldname. "双击列名
DATA:l_bewtp TYPE ekbe-bewtp. READ TABLE gt_output INTO wa_output INDEX p_tabindex.
CHECK sy-subrc = . REFRESH:gt_ekbe_alv.
IF p_fieldname = 'TOTAL'.
l_bewtp = 'E'.
ELSEIF p_fieldname = 'FP_TOTAL'.
l_bewtp = 'Q'.
ELSEIF p_fieldname = 'EBELN'.
SET PARAMETER ID 'BES' FIELD wa_output-ebeln. "调用ME23N界面,详细可见CALL TRANSACTION小节一文
SET PARAMETER ID 'BSP' FIELD wa_output-ebelp.
CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
ELSE.
EXIT.
ENDIF. LOOP AT gt_ekbe INTO wa_ekbe WHERE ebeln = wa_output-ebeln
AND ebelp = wa_output-ebelp
AND bewtp = l_bewtp.
APPEND wa_ekbe TO gt_ekbe_alv.
ENDLOOP.
IF gt_ekbe_alv IS INITIAL..
MESSAGE s398() WITH '无数据' .
EXIT.
ENDIF.
g_fieldname = p_fieldname. CALL SCREEN .
ENDFORM. *自定义工具栏,如果没有自定义的按钮不需要设置,系统会有标准的工具栏,如果设置了自定义工具栏,会替代标准工具栏,
*系统标准ALV工具栏可以通过函数的REUSE_ALV_GRID_DISPLAY_LVC找到函数组SLVC_FULLSCREEN,在函数组下面的GUI状态名:
*SAPLSLVC_FULLSCREEN就是标准的ALV工具栏,可以以拷贝使用。
FORM f_set_alv_status_00 USING i_extab TYPE slis_t_extab.
SET PF-STATUS 'GUISTATUS_00'.
ENDFORM. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = 'F_SET_ALV_STATUS_00'
i_callback_user_command = 'F_ALV_USER_COMMAND'
is_layout_lvc = gs_layout
it_fieldcat_lvc = gt_field
i_save = 'A'
TABLES
t_outtab = gt_output
EXCEPTIONS
program_error =
OTHERS = .
IF sy-subrc <> .
MESSAGE ID sy-msgid
TYPE 'S'
NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
DISPLAY LIKE 'E'. LEAVE LIST-PROCESSING. "ALV执行失败退回到选择界面 ENDIF.
.以上是函数模式的ALV和热点,下面介绍OO方式的
*---------------------------------------------------------------------*
* CLASS 参数定义
*---------------------------------------------------------------------*
CLASS lcl_alv_receiver DEFINITION DEFERRED. "预定义本地类
DATA: g_alv_application TYPE REF TO lcl_alv_receiver. "按钮处理 *----------------------------------------------------------------------*
* CLASS lcl_alv_receiver DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_alv_receiver DEFINITION. "定义本地类
PUBLIC SECTION.
METHODS:
handle_double "执行双击事件
FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row e_column es_row_no.
ENDCLASS. "lcl_event_receiver DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_alv_receiver IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_alv_receiver IMPLEMENTATION.
METHOD handle_double . "双击事方法件的实现
PERFORM set_double_click_class USING e_row e_column.
ENDMETHOD. "HANDLE_double
ENDCLASS. "lcl_event_receiver IMPLEMENTATION FORM set_double_click_class USING p_row TYPE lvc_s_row
p_column TYPE lvc_s_col.
CHECK g_fieldname = 'TOTAL'.
READ TABLE gt_ekbe_alv INTO wa_ekbe INDEX p_row-index.
CHECK sy-subrc = . IF p_column-fieldname = 'BELNR'.
SET PARAMETER ID 'MBN' FIELD wa_ekbe-belnr.
SET PARAMETER ID 'MJA' FIELD wa_ekbe-gjahr.
CALL TRANSACTION 'MB03' AND SKIP FIRST SCREEN.
ELSEIF p_column-fieldname = 'EBELN'.
SET PARAMETER ID 'BES' FIELD wa_ekbe-ebeln.
SET PARAMETER ID 'BSP' FIELD wa_ekbe-ebelp.
CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
ENDIF.
ENDFORM. DATA: g_grid TYPE REF TO cl_gui_alv_grid. "ALV类
DATA:g_custom_container TYPE REF TO cl_gui_custom_container,
g_container TYPE scrfname VALUE 'CONTAINER', "界面绘制的ALV容器名称 'CONTAINER'
gt_exclude TYPE ui_functions. "存放ALV排除工具栏功能按钮的内表 CREATE OBJECT g_custom_container
EXPORTING
container_name = g_container. "界面绘制的ALV容器名称 'CONTAINER'
CREATE OBJECT g_grid
EXPORTING
i_parent = g_custom_container. 初始化ALV类 ***去除不需要的按钮
PERFORM exclude_tb_functions CHANGING gt_exclude. ***显示ALV
PERFORM screen_alv.
CREATE OBJECT g_alv_application.
SET HANDLER g_alv_application->handle_double FOR g_grid. FORM exclude_tb_functions CHANGING pt_exclude TYPE ui_functions.
DATA ls_exclude TYPE ui_func.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy_row.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_delete_row.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_append_row.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_insert_row.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_move_row.
APPEND ls_exclude TO pt_exclude.
ENDFORM. FORM screen_alv .
gs_variant-report = sy-repid.
CALL METHOD g_grid->set_table_for_first_display
EXPORTING
it_toolbar_excluding = gt_exclude
is_layout = gs_layout
is_variant = gs_variant
i_save = 'A'
CHANGING
it_fieldcatalog = gt_fieldcat
it_outtab = gt_ekbe_alv.
ENDFORM.
ALV双击单元格事件处理的更多相关文章
- ABAP ALV单个单元格状态编辑
*&---------------------------------------------------------------------* *& Report ZPPR0024 ...
- ABAP ALV单个单元格状态编辑-简单版本
*&---------------------------------------------------------------------* *& Report ZPPR0024 ...
- ABAP分享五 ALV修改单元格并将修改数据更新到数据表中示例1
*下面的代码是在alv字段中修改字段的内容,点击保存后就可以保存数据至数据表. TABLES: spfli. DATA: wa_fieldcat TYPE lvc_s_fcat , " 相 ...
- vue elementui table 双击单元格实现编辑,聚焦,失去焦点,显示隐藏input和span
<el-table :data="tableData" class="tb-edit" style="width: 100%" ref ...
- Excel双击“单元格”后,自动跳转到相关“工作表
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)If Target.Column = ...
- Delphi DBGrid双击事件、单元格操作
1.得到当前格子中的内容:DBGrid1.Fields[DBGrid1.SelectedIndex].DisplayText;把DBGrid1.SelectedIndex改为你所希望引用的字段就可以了 ...
- Swing-JTable检测单元格数据变更事件
在JTable的初级教程中往往会提到,使用TableModel的 addTableModelListener方法可以监听单元格数据的变更,在其事件处理函,数tableChanged中,可以通过e.ge ...
- ASP.NET 导出gridview中的数据到Excel表中,并对指定单元格换行操作
1. 使用NPOI读取及生成excel表. (1)导出Click事件: 获取DataTable; 给文件加文件名: string xlsxName = "xxx_" + DateT ...
- QTableWidget 用法总结(只能使用标准的数据模型,并且其单元格数据是QTableWidgetItem的对象)
QTableWidget是QT程序中常用的显示数据表格的空间,很类似于VC.C#中的DataGrid.说到QTableWidget,就必须讲一下它跟QTabelView的区别了.QTableWidge ...
随机推荐
- 函数可以作为Javascript对象(哈希表)的键吗
一般Javascript书在讲解对象时,都指出Javascript中的对象可以作为哈希表,存储键值数据.通常情况下,键为字符串,如果键是数字的话,实际上在内部也会转换为字符串. 比如 var o = ...
- 安装Devstack的DNS问题
所谓的OpenStack一键安装,省去了敲键盘的麻烦,但是卡在中间出了问题也是比较尴尬的 在公司内安装经常会出现卡在下载软件的地方,有时候还会出错 trick就是换一个US的dns,比如8.8.8.8
- HTML5 上播放视频格式兼容性
视频格式 当前,video 元素支持三种视频格式: 格式 IE Firefox Opera Chrome Safari Ogg No 3.5+ 10.5+ 5.0+ No MPEG 4 9.0+ No ...
- android的fragment基本介绍
可以分为下面的几部分: 使用支持库 创建一个Fragment 创建一个动态UI 多个Fragment之间的通信 1.使用支持库 如果您的应用需要运行在3.0及以上的版本,可以忽略这部分内容. 如果您的 ...
- SQL 局域网远程备份
局域网远程备份,还真有点问题 我用的是2003,发现sql和windows兼容不太好 . 如果我在windows下面映射远程目录,sql发现不了,找不到路径,备份不了,在sql下映射远程目录,win ...
- java 发送邮件 email相关操作代码测试,生成复杂格式邮件,发送邮件相关操作
项目源码下载:http://download.csdn.net/detail/liangrui1988/6720047 效果图: 相关代码: test1 package com.mail; impor ...
- javascript每日一练(十三)——运动实例
一.图片放大缩小 <!doctype html> <html> <head> <meta charset="utf-8"> < ...
- VC2008如何生成及使用DLL(图文并茂,完整版)
博客分类: Dot net VC2008 DLL Dot net 生成.使用DLL看起来简单,但做起来才发现还是有一些地方需要注意的. 1. 打开VS2008,新建一个VC工程,选择Win32类型 ...
- JVM调优总结(三)-基本垃圾回收算法
可以从不同的的角度去划分垃圾回收算法: 按照基本回收策略分 引用计数(Reference Counting): 比较古老的回收算法.原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数. ...
- cocos2d-x游戏开发系列教程-坦克大战游戏之敌方坦克AI的编写
在上篇我们完成了子弹和地图碰撞的检测,在这篇我们将完成敌方坦克AI的编写. 具体思路是屏幕中保持有四个敌方坦克,然后坦克随机方向运动,并且子弹消失后1秒发射一次 1.我们新建一个敌方坦克的AI类来控制 ...