REUSE_ALV_GRID_DISPLAY_LVC 实现按钮切换ALV编辑状态示例
- PF-STATUS复制SAPLKKBL-STANDARD_FULLSCREEN,并设置Toolbar动态文本:设置Toolbar动态文本
- 代码
TYPES: BEGIN OF TY_SFLIGHT,BOX TYPE C.INCLUDE STRUCTURE SFLIGHT. TYPES: END OF TY_SFLIGHT.DATA: GT_SFLIGHT TYPE TABLE OF TY_SFLIGHT,GS_LAYOUT_LVC TYPE LVC_S_LAYO, "显示布局参数GT_FIELDCAT_LVC TYPE LVC_T_FCAT WITH HEADER LINE, "字段GS_SETTING TYPE LVC_S_GLAY,GT_EVENTS TYPE SLIS_T_EVENT WITH HEADER LINE, "事件WCL_CONTAINER TYPE REF TO CL_GUI_DOCKING_CONTAINER, "存放ALV的容器O_GRID TYPE REF TO CL_GUI_ALV_GRID. "ALV对象DATA: GS_TEXT TYPE SMP_DYNTXT, "动态字段GV_DISPLAY TYPE C. "标志状态"定义fieldcat脚本 DEFINE INIT_FIELDCAT.CLEAR: GT_FIELDCAT_LVC.GT_FIELDCAT_LVC-FIELDNAME = &1. "字段名GT_FIELDCAT_LVC-COLTEXT = &2. "列标题TitleGT_FIELDCAT_LVC-REF_TABLE = &3. "内部表字段的参考表名称GT_FIELDCAT_LVC-REF_FIELD = &4. "内部表字段的参考字段名称GT_FIELDCAT_LVC-NO_ZERO = &5. "为输出隐藏零 X:隐藏GT_FIELDCAT_LVC-NO_CONVEXT = &6. "是否应用转换出口函数 X:开启GT_FIELDCAT_LVC-EDIT = &7. "编辑模式GT_FIELDCAT_LVC-F4AVAILABL = &8. "是否字段帮助CASE GT_FIELDCAT_LVC-FIELDNAME.WHEN 'CARRID'.GT_FIELDCAT_LVC-EMPHASIZE = 'C310'. "设置颜色WHEN 'BOX'.GT_FIELDCAT_LVC-TECH = 'X'. "技术字段WHEN OTHERS.ENDCASE.APPEND GT_FIELDCAT_LVC. END-OF-DEFINITION.INITIALIZATION.GS_TEXT-ICON_ID = ICON_CHANGE. "初始化按钮GS_TEXT-TEXT = '切换到修改模式'. "悬停鼠标显示的文字GS_TEXT-ICON_TEXT = '修改'. "控件栏显示的文字GV_DISPLAY = 'X'. "显示模式,按钮CHANGEAT SELECTION-SCREEN OUTPUT.AT SELECTION-SCREEN.START-OF-SELECTION.PERFORM FRM_SET_LAYOUT. "设置layoutPERFORM FRM_SET_FIELDCAT. "设置FieldcatlogPERFORM FRM_SET_SETTING. "参数回调PERFORM FRM_SET_EVENTS. "设置注册事件的formPERFORM FRM_GET_DATA. "获取数据END-OF-SELECTION.PERFORM FRM_DISPLAY_ALV.*__________________________________form____________________________* FORM FRM_SET_LAYOUT .GS_LAYOUT_LVC-BOX_FNAME = 'BOX'.GS_LAYOUT_LVC-ZEBRA = 'X'.GS_LAYOUT_LVC-CWIDTH_OPT = 'X'.GS_LAYOUT_LVC-SEL_MODE = 'A'.GS_LAYOUT_LVC-EDIT_MODE = 'X'.ENDFORM.FORM FRM_SET_FIELDCAT . * "USE CLASS CL_ABAP_TYPEDESCR Dynamic table * DATA: lt_table_type TYPE REF TO cl_abap_tabledescr, * ls_struct_type TYPE REF TO cl_abap_structdescr, * lt_comp_table TYPE cl_abap_structdescr=>component_table, * gt_itab_type TYPE REF TO cl_abap_tabledescr, * gs_struct_type TYPE REF TO cl_abap_structdescr. * * DATA: dref_str TYPE REF TO data, * dref_tab TYPE REF TO data. * * FIELD-SYMBOLS: <dyn_table> TYPE STANDARD TABLE, * <dyn_wa> TYPE any. * * "从内表读取字段表 * lt_table_type ?= cl_abap_tabledescr=>describe_by_data( gt_bseg ). * * "获取字段DDIC属性 * ls_struct_type ?= lt_table_type->get_table_line_type( ). * * "获取字段组件属性 * lt_comp_table[] = ls_struct_type->get_components( ). * * "创建结构类 * gs_struct_type = cl_abap_structdescr=>create( lt_comp_table[] ). * * "根据结构类创建内表类 * gt_itab_type = cl_abap_tabledescr=>create( gs_struct_type ). * * "创建结构对象 * CREATE DATA dref_str TYPE HANDLE gs_struct_type. * * "创建内表对象 * CREATE DATA dref_tab TYPE HANDLE gt_itab_type. * * "assign对象 * ASSIGN dref_tab->* TO <dyn_table>. * ASSIGN dref_str->* TO <dyn_wa>.INIT_FIELDCAT:'BOX' '' '' '' '' '' '' '','CARRID' '航线代码' 'SFLIGHT' 'CARRID' '' '' '' 'X','CONNID' '航班连接编号' 'SFLIGHT' 'CONNID' '' '' '' 'X','FLDATE' '航班日期' 'SFLIGHT' 'FLDATE' '' '' '' 'X','PRICE' '航空运费' 'SFLIGHT' 'PRICE' '' '' '' 'X','CURRENCY' '航班的本地货币 ' 'SFLIGHT' 'CURRENCY' '' '' '' 'X','PLANETYPE' '飞机类型' 'SFLIGHT' 'PLANETYPE' '' '' '' 'X','SEATSMAX' '经济舱的最大容量 ' 'SFLIGHT' 'SEATSMAX' '' '' '' 'X','SEATSOCC' '占据的经济舱座位' 'SFLIGHT' 'SEATSOCC' '' '' '' 'X','PAYMENTSUM' '当前预定总数' 'SFLIGHT' 'PAYMENTSUM' '' '' '' 'X','SEATSMAX_B' '商务舱的最大容量 ' 'SFLIGHT' 'SEATSMAX_B' '' '' '' 'X','SEATSOCC_B' '占据的商务舱座位' 'SFLIGHT' 'SEATSOCC_B' '' '' '' 'X','SEATSMAX_F' '头等舱的最大容量 ' 'SFLIGHT' 'SEATSMAX_F' '' '' '' 'X','SEATSOCC_F' '占据的头等舱座位' 'SFLIGHT' 'SEATSOCC_F' '' '' '' 'X'.ENDFORM.FORM FRM_GET_DATA .SELECT *FROM SFLIGHTINTO CORRESPONDING FIELDS OF TABLE GT_SFLIGHT UP TO 50 ROWS. ENDFORM.FORM FRM_DISPLAY_ALV .CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'EXPORTINGI_CALLBACK_PROGRAM = SY-REPIDI_CALLBACK_PF_STATUS_SET = 'FRM_PF_STATUS'I_CALLBACK_USER_COMMAND = 'FRM_USER_COMMAND' * I_STRUCTURE_NAME = * I_BACKGROUND_ID = ' ' * I_GRID_TITLE =I_GRID_SETTINGS = GS_SETTING "设置参数回调,屏幕修改值,自动保存到ALV 内表IS_LAYOUT_LVC = GS_LAYOUT_LVCIT_FIELDCAT_LVC = GT_FIELDCAT_LVC[] * I_DEFAULT = 'X'I_SAVE = 'A' "Variant能保存IT_EVENTS = GT_EVENTS[]TABLEST_OUTTAB = GT_SFLIGHT[]EXCEPTIONSPROGRAM_ERROR = 1OTHERS = 2.IF SY-SUBRC <> 0. * Implement suitable error handling hereENDIF.ENDFORM.FORM FRM_SET_SETTING .GS_SETTING-EDT_CLL_CB = 'X'. ENDFORM.FORM FRM_SET_EVENTS .CLEAR: GT_EVENTS,GT_EVENTS[].GT_EVENTS-NAME = 'CALLER_EXIT'. "事件出口,必须是CALLER_EXIT,否则事件不触发EVENTGT_EVENTS-FORM = 'FRM_EVENTS_CALLER'. "事件定义子程序名APPEND GT_EVENTS. ENDFORM.FORM FRM_EVENTS_CALLER USING LS_DATA TYPE SLIS_DATA_CALLER_EXIT. "ls_data形参 "暂时未添加Event ENDFORM.FORM FRM_PF_STATUS USING I_IT_EXTAB TYPE SLIS_T_EXTAB. "设置状态栏DATA: I_IS_EXTAB LIKE LINE OF I_IT_EXTAB.I_IS_EXTAB = '&ABC'.APPEND I_IS_EXTAB TO I_IT_EXTAB.IF 1 = 2.SET PF-STATUS 'STANDARD'.ELSE.SET PF-STATUS 'STANDARD' EXCLUDING I_IT_EXTAB.ENDIF.ENDFORM.FORM FRM_USER_COMMAND USING I_UCOMM TYPE SY-UCOMMI_WA_SELFIELD TYPE SLIS_SELFIELD. "响应user_commandIF O_GRID IS INITIAL. "获取SLVC对象,绑定到O_GRIDCALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'IMPORTINGE_GRID = O_GRID.ENDIF.CASE I_UCOMM.WHEN '&MODIFY'.IF GV_DISPLAY <> 'X'.GS_TEXT-ICON_ID = ICON_CHANGE. "初始化按钮GS_TEXT-TEXT = '切换到修改模式'. "悬停鼠标显示的文字GS_TEXT-ICON_TEXT = '修改'. "控件栏显示的文字GV_DISPLAY = 'X'. "显示模式,按钮CHANGEPERFORM FRM_CHANGE_MODE USING ''. "X开启修改模式* CALL METHOD O_GRID->set_ready_for_input "如果使用Container OO ALV可以用此方法切换 * EXPORTING * i_ready_for_input = 1.ELSE.GS_TEXT-ICON_ID = ICON_DISPLAY. "初始化按钮GS_TEXT-TEXT = '切换到显示模式'. "悬停鼠标显示的文字GS_TEXT-ICON_TEXT = '显示'. "控件栏显示的文字GV_DISPLAY = ''. "显示模式,按钮CHANGE* CALL METHOD O_GRID->set_ready_for_input "如果使用Container OO ALV可以用此方法切换 * EXPORTING * i_ready_for_input = 0.PERFORM FRM_CHANGE_MODE USING 'X'. "X开启修改模式ENDIF.WHEN OTHERS.ENDCASE.CALL METHOD O_GRID->SET_FRONTEND_FIELDCATALOG "设置FIELDCATALOGEXPORTINGIT_FIELDCATALOG = GT_FIELDCAT_LVC[].CALL METHOD O_GRID->REFRESH_TABLE_DISPLAY. "刷新ALVENDFORM.FORM FRM_CHANGE_MODE USING VALUE(P_VALUE).IF P_VALUE = 'X'.LOOP AT GT_FIELDCAT_LVC.GT_FIELDCAT_LVC-EDIT = 'X'.MODIFY GT_FIELDCAT_LVC.ENDLOOP.ELSE.LOOP AT GT_FIELDCAT_LVC.GT_FIELDCAT_LVC-EDIT = ''.MODIFY GT_FIELDCAT_LVC.ENDLOOP.ENDIF. ENDFORM.
- 效果
REUSE_ALV_GRID_DISPLAY_LVC 实现按钮切换ALV编辑状态示例相关推荐
- 微信小程序轮播中的current_微信小程序 swiper轮播图的按钮切换
一.前言 swiper组件自带autoplay切换,本文将会介绍如何用到左右按钮切换轮播图,以及如何解决快速点击按钮出现的bug. 核心属性 circular: 负责切换衔接的效果(否则最后一张与第一 ...
- 设置ALV单元格可编辑状态
在使用ALV显示列表的过程中,我们可以使用IT_FIELDCAT参数设置某一个字段的可编辑状态.但是,要设置具体的单元格的可编辑状态对于对ALV不是很了解的人来说是一个头大的问题. 具体单元格可编辑状 ...
- angular点击按钮弹出页面_Axure RP8:如何做出点击按钮切换页面效果?
如何利用Axure RP8做出点击按钮切换页面效果?一起来文中看看~ 先来看一下页面的效果图:点击不同的按钮,切换不同的页面.(是web端和手机端都很常见的交互效果) 实现这一效果大致要分为三个步骤: ...
- layui修改table中的按钮_layui数据表格中如何设置按钮切换(是否置顶)与分页居中...
手记1 一.数据表格中按钮切换(置顶与取消) 在layUI数据表格中是可以使用toolbar设置表格内的按钮 使用laytel语法 置顶 {{# if(d.order>0){ }} 取消 {{ ...
- android tableview实现多选功能,iOS开发UI篇-tableView在编辑状态下的批量操作(多选)...
先看下效果图 直接上代码 #import "MyController.h" @interface MyController () { UIButton *button; } @pr ...
- IOS开发中UIBarButtonItem上按钮切换或隐藏实现案例
IOS开发中UIBarButtonItem上按钮切换或隐藏案例实现案例是本文要介绍的内容,这个代码例子的背景是:导航条右侧有个 edit button,左侧是 back button 和 add bu ...
- vue点击按钮切换显示不同内容_邂逅Vue
01 什么是Vue.js Vue (读音 /vjuː/,类似于view) 是一套用于构建用户界面的渐进式框架. 看到这里,你就会问了,什么是渐进式? 渐进式就是你可以将Vue作为一个项目中的部分组件改 ...
- JTable 失去焦点时取消编辑状态
为什么80%的码农都做不了架构师?>>> reference: http://tips4java.wordpress.com/2008/12/12/table-stop-edi ...
- dev项目属性按钮是灰色_如何当按钮处于各种交互状态时具有不同样式的按钮?...
Axure RP 9 for Mac是一款交互式原型设计神器,使用axure rp9以最佳的方式展示您的作品,优化现代浏览器并为现代工作流程设计.同时确保您的解决方案正确完整地构建.在本篇文章中,我们 ...
最新文章
- Cadence入门笔记(1):创建元件库的基本操作!
- WinAPI: waveOutGetErrorText - 根据错误号得到错误描述
- bitmap xml大小 安卓_一张壁纸让安卓用户手机系统崩溃,包括三星、小米、一加等...
- 20应用统计考研复试要点(part36)--概率论与数理统计
- sql server 2008 年累计数_Windows Server 2008 和 SQL Server 2008将终止支持 迁移至Azure 微软提供3年免费技术支持...
- LeetCode 1298. 你能从盒子里获得的最大糖果数(BFS)
- 得物:两款问题商品系标识标注方式不符合最新规定 已先行下架商品
- ref out 关键字用法与区别详解
- 关闭迅雷首页播放视频的方法
- 主流PCB画图软件的对比区别(AD、Pads、Allegro)
- java性能调优原因和因素
- 查看DELL服务器保修期
- 通过MapReduce统计每个单子在每个文件中出现的次数(FileSplit的使用),单词作为key,所在文本和次数作为value进行统计...
- BMFont 制作字体时,无法导入图片
- 项目管理第三招:做好计划,拥抱变化
- 积分分汇界面将判断放到D层后,D层的写法
- python贷款_python算账,贷款表
- 学之思考试系统功能开发文档
- 《空号》:聊聊我在阿里外包3个月学到了什么。。。
- C++ 系统宏定义 windows mac linux android ios
热门文章
- 设计模式之简单化_Mediator中介者模式_只有一个仲裁者
- python selenium中析构方法报错sys.meta_path is None, Python is likely shutting down如何解决?
- 什么叫手机或设备的ID
- 使用labelme打标签,详细教程
- 【目标检测】基于matlab GUI背景差分算法视频运动物体跟踪【含Matlab源码 1915期】
- Docker容器与本地文件相互拷贝
- 项目二-成员函数、友元函数和一般函数之区别
- 计算机国二复习攻略,全国计算机等级考试四级复习纲要二[1]
- 海思hi3716c机顶盒接usb摄像头和usb无线耳机时,无线耳机有时没有声音
- 全球PM25实时可视化