• 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编辑状态示例相关推荐

  1. 微信小程序轮播中的current_微信小程序 swiper轮播图的按钮切换

    一.前言 swiper组件自带autoplay切换,本文将会介绍如何用到左右按钮切换轮播图,以及如何解决快速点击按钮出现的bug. 核心属性 circular: 负责切换衔接的效果(否则最后一张与第一 ...

  2. 设置ALV单元格可编辑状态

    在使用ALV显示列表的过程中,我们可以使用IT_FIELDCAT参数设置某一个字段的可编辑状态.但是,要设置具体的单元格的可编辑状态对于对ALV不是很了解的人来说是一个头大的问题. 具体单元格可编辑状 ...

  3. angular点击按钮弹出页面_Axure RP8:如何做出点击按钮切换页面效果?

    如何利用Axure RP8做出点击按钮切换页面效果?一起来文中看看~ 先来看一下页面的效果图:点击不同的按钮,切换不同的页面.(是web端和手机端都很常见的交互效果) 实现这一效果大致要分为三个步骤: ...

  4. layui修改table中的按钮_layui数据表格中如何设置按钮切换(是否置顶)与分页居中...

    手记1 一.数据表格中按钮切换(置顶与取消) 在layUI数据表格中是可以使用toolbar设置表格内的按钮 使用laytel语法 置顶 {{#  if(d.order>0){ }} 取消 {{ ...

  5. android tableview实现多选功能,iOS开发UI篇-tableView在编辑状态下的批量操作(多选)...

    先看下效果图 直接上代码 #import "MyController.h" @interface MyController () { UIButton *button; } @pr ...

  6. IOS开发中UIBarButtonItem上按钮切换或隐藏实现案例

    IOS开发中UIBarButtonItem上按钮切换或隐藏案例实现案例是本文要介绍的内容,这个代码例子的背景是:导航条右侧有个 edit button,左侧是 back button 和 add bu ...

  7. vue点击按钮切换显示不同内容_邂逅Vue

    01 什么是Vue.js Vue (读音 /vjuː/,类似于view) 是一套用于构建用户界面的渐进式框架. 看到这里,你就会问了,什么是渐进式? 渐进式就是你可以将Vue作为一个项目中的部分组件改 ...

  8. JTable 失去焦点时取消编辑状态

    为什么80%的码农都做不了架构师?>>>    reference: http://tips4java.wordpress.com/2008/12/12/table-stop-edi ...

  9. dev项目属性按钮是灰色_如何当按钮处于各种交互状态时具有不同样式的按钮?...

    Axure RP 9 for Mac是一款交互式原型设计神器,使用axure rp9以最佳的方式展示您的作品,优化现代浏览器并为现代工作流程设计.同时确保您的解决方案正确完整地构建.在本篇文章中,我们 ...

最新文章

  1. Cadence入门笔记(1):创建元件库的基本操作!
  2. WinAPI: waveOutGetErrorText - 根据错误号得到错误描述
  3. bitmap xml大小 安卓_一张壁纸让安卓用户手机系统崩溃,包括三星、小米、一加等...
  4. 20应用统计考研复试要点(part36)--概率论与数理统计
  5. sql server 2008 年累计数_Windows Server 2008 和 SQL Server 2008将终止支持 迁移至Azure 微软提供3年免费技术支持...
  6. LeetCode 1298. 你能从盒子里获得的最大糖果数(BFS)
  7. 得物:两款问题商品系标识标注方式不符合最新规定 已先行下架商品
  8. ref out 关键字用法与区别详解
  9. 关闭迅雷首页播放视频的方法
  10. 主流PCB画图软件的对比区别(AD、Pads、Allegro)
  11. java性能调优原因和因素
  12. 查看DELL服务器保修期
  13. 通过MapReduce统计每个单子在每个文件中出现的次数(FileSplit的使用),单词作为key,所在文本和次数作为value进行统计...
  14. BMFont 制作字体时,无法导入图片
  15. 项目管理第三招:做好计划,拥抱变化
  16. 积分分汇界面将判断放到D层后,D层的写法
  17. python贷款_python算账,贷款表
  18. 学之思考试系统功能开发文档
  19. 《空号》:聊聊我在阿里外包3个月学到了什么。。。
  20. C++ 系统宏定义 windows mac linux android ios

热门文章

  1. 设计模式之简单化_Mediator中介者模式_只有一个仲裁者
  2. python selenium中析构方法报错sys.meta_path is None, Python is likely shutting down如何解决?
  3. 什么叫手机或设备的ID
  4. 使用labelme打标签,详细教程
  5. 【目标检测】基于matlab GUI背景差分算法视频运动物体跟踪【含Matlab源码 1915期】
  6. Docker容器与本地文件相互拷贝
  7. 项目二-成员函数、友元函数和一般函数之区别
  8. 计算机国二复习攻略,全国计算机等级考试四级复习纲要二[1]
  9. 海思hi3716c机顶盒接usb摄像头和usb无线耳机时,无线耳机有时没有声音
  10. 全球PM25实时可视化