REUSE_ALV_GRID_DISPLAY_LVC-可编辑单元格-程序员宅基地

使用REUSE_ALV_GRID_DISPLAY_LVC显示ALV时,如何将列、行或者具体的某个单元格设置成可编辑能输入状态?这个其实很简单,下面一一讲解:

1, 列可编辑

只要将catalog中的字段edit设置成‘X',整列就变成能输入的了,LVC_S_FCAT-EDIT

<img class="alignnone size-full wp-image-3892" src="http://www.baidusap.com/wp-content/uploads/2017-03-16_12-53-07.png" alt="" width="766" height="289" srcset="http://www.baidusap.com/wp-content/uploads/2017-03-16_12-53-07.png 766w, http://www.baidusap.com/wp-content/uploads/2017-03-16_12-53-07-740x279.png 740w" sizes="(max-width: 766px) 100vw, 766px" />

代码:

REPORT ztest_alv_lvc_edit.

TYPES:BEGIN OF gty_ekko,
        ebeln TYPE ekko-ebeln,
        verkf TYPE ekko-verkf,
      END OF gty_ekko.
DATA:git_ekko TYPE STANDARD TABLE OF gty_ekko.
DATA:git_fcat   TYPE lvc_t_fcat,
     gwa_fcat   LIKE LINE OF git_fcat,
     gwa_layout TYPE lvc_s_layo.
DATA:l_pos TYPE i VALUE 1.

START-OF-SELECTION.

  SELECT ebeln
         verkf
    INTO TABLE git_ekko
    FROM ekko
   UP TO 10 ROWS.

  CLEAR: l_pos.
  l_pos = l_pos + 1.
  gwa_fcat-coltext   = 'PO'.
  gwa_fcat-scrtext_l = 'PO'.
  gwa_fcat-scrtext_m = 'PO'.
  gwa_fcat-scrtext_s = 'PO'.
  gwa_fcat-fieldname = 'EBELN'.
  gwa_fcat-col_pos = l_pos.
  gwa_fcat-outputlen = '10'.
  APPEND gwa_fcat TO git_fcat.
  l_pos = l_pos + 1.
  gwa_fcat-coltext   = 'PO item'.
  gwa_fcat-scrtext_l = 'PO item'.
  gwa_fcat-scrtext_m = 'PO item'.
  gwa_fcat-scrtext_s = 'PO item'.
  gwa_fcat-fieldname = 'VERKF'.
  gwa_fcat-col_pos = l_pos.
  gwa_fcat-edit = 'X'.  "设置列为可编辑状态
  gwa_fcat-outputlen = '20'.
  APPEND gwa_fcat TO git_fcat.

  gwa_layout-zebra = 'X'.
  gwa_layout-sel_mode = 'A'.
  gwa_layout-cwidth_opt = 'X'.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      i_callback_program = sy-repid
      is_layout_lvc      = gwa_layout
      it_fieldcat_lvc    = git_fcat
    TABLES
      t_outtab           = git_ekko[]
    EXCEPTIONS
      program_error      = 1
      OTHERS             = 2.
  IF sy-subrc = 0.
*    BREAK-POINT.
  ENDIF.

运行结果:

<img class="alignnone size-full wp-image-3891" src="http://www.baidusap.com/wp-content/uploads/2017-03-16_12-51-33.png" alt="" width="473" height="308" />

2, 整个ALV可编辑

将layout中的EDIT字段赋值’X'(LVC_S_LAYO-EDIT),就可以将整个ALV设置成可输入状态。

还有一种比较笨的办法就是将所有列都设置成可输入。

<img class="alignnone size-full wp-image-3897" src="http://www.baidusap.com/wp-content/uploads/2017-03-16_14-56-49.png" alt="" width="772" height="280" srcset="http://www.baidusap.com/wp-content/uploads/2017-03-16_14-56-49.png 772w, http://www.baidusap.com/wp-content/uploads/2017-03-16_14-56-49-740x268.png 740w, http://www.baidusap.com/wp-content/uploads/2017-03-16_14-56-49-768x279.png 768w" sizes="(max-width: 772px) 100vw, 772px" />

代码:

 gwa_layout-zebra = 'X'.
  gwa_layout-sel_mode = 'A'.
  gwa_layout-cwidth_opt = 'X'.
  gwa_layout-edit     = 'X'.       "将整个ALV设置成可编辑
  gwa_glay-edt_cll_cb = 'X'.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      i_callback_program = sy-repid
      is_layout_lvc      = gwa_layout
      it_fieldcat_lvc    = git_fcat
*      i_grid_settings    = gwa_glay
    TABLES
      t_outtab           = git_ekko[]
    EXCEPTIONS
      program_error      = 1
      OTHERS             = 2.

3, 单元格可编辑

如果要让单元格变成可输入,需要在alv输出内表中多定义一个保存单元格style的字段(类型:lvc_t_styl ),然后填入style属性(可编辑或者是不可编辑),最后还要在layout-stylefname中指定style的字段名。

代码如下:将EBELN设置成不可输入。

TYPES:BEGIN OF gty_ekko,
        ebeln TYPE ekko-ebeln,
        verkf TYPE ekko-verkf,
        style TYPE lvc_t_styl,  "将该字段设置为保存编辑状态的字段
      END OF gty_ekko.
  gwa_edit-fieldname = 'EBELN'.
  gwa_edit-style = cl_gui_alv_grid=>mc_style_disabled."设置为不可输入
  INSERT gwa_edit INTO TABLE git_edit.
gwa_layout-stylefname = 'STYLE'. "指定保存编辑状态的字段名

style属性可以在类CL_GUI_ALV_GRID中可以找到:

MC_STYLE_DISABLED:禁止输入

MC_STYLE_ENABLED:可编辑,可输入。

需要注意的是:MC_STYLE_ENABLED输入性不能单独使用,一定在EDIT = 'X'(layout-edit 或者是catalog-edit)的场合下,才可以利用MC_STYLE_ENABLED进行不可编辑到编辑切换,也就是不设置edit = 'X',MC_STYLE_ENABLED是不起作用的。

<img class="alignnone size-full wp-image-3901" src="http://www.baidusap.com/wp-content/uploads/2017-03-16_13-20-21.png" alt="" width="973" height="369" srcset="http://www.baidusap.com/wp-content/uploads/2017-03-16_13-20-21.png 973w, http://www.baidusap.com/wp-content/uploads/2017-03-16_13-20-21-740x281.png 740w, http://www.baidusap.com/wp-content/uploads/2017-03-16_13-20-21-768x291.png 768w" sizes="(max-width: 973px) 100vw, 973px" />

完整代码:

REPORT ztest_alv_lvc_edit.

TYPES:BEGIN OF gty_ekko,
        ebeln TYPE ekko-ebeln,
        verkf TYPE ekko-verkf,
        style TYPE lvc_t_styl,  "设置编辑状态字段
      END OF gty_ekko.
DATA:git_ekko TYPE STANDARD TABLE OF gty_ekko,
     gwa_ekko TYPE gty_ekko.

DATA:git_fcat   TYPE lvc_t_fcat,
     gwa_fcat   LIKE LINE OF git_fcat,
     gwa_layout TYPE lvc_s_layo,
     gwa_glay   TYPE lvc_s_glay.
DATA:gwa_edit TYPE lvc_s_styl,
     git_edit TYPE lvc_t_styl.

START-OF-SELECTION.

  SELECT ebeln
         verkf
    INTO CORRESPONDING FIELDS OF TABLE git_ekko
    FROM ekko
   UP TO 10 ROWS.

  gwa_edit-fieldname = 'VERKF'.
  gwa_edit-style = cl_gui_alv_grid=>mc_style_disabled."设置为不可编辑
  INSERT gwa_edit INTO TABLE git_edit.

  INSERT LINES OF git_edit INTO TABLE gwa_ekko-style.
* 将除第三行的之外所有行的VERKF字段都设置成不能输入
  DO 10 TIMES.
    IF sy-index <> 3.
      MODIFY git_ekko INDEX sy-index FROM gwa_ekko TRANSPORTING style.
    ENDIF.
  ENDDO.

  PERFORM frm_set_catalog.

  gwa_layout-zebra = 'X'.
  gwa_layout-sel_mode = 'A'.
  gwa_layout-cwidth_opt = 'X'.
  gwa_layout-edit     = 'X'.       "将整个ALV设置成可编辑
  gwa_layout-stylefname = 'STYLE'. "指定保存编辑状态的字段名
  gwa_glay-edt_cll_cb = 'X'.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      i_callback_program = sy-repid
      is_layout_lvc      = gwa_layout
      it_fieldcat_lvc    = git_fcat
*      i_grid_settings    = gwa_glay
    TABLES
      t_outtab           = git_ekko[]
    EXCEPTIONS
      program_error      = 1
      OTHERS             = 2.
  IF sy-subrc = 0.

  ENDIF.
*&---------------------------------------------------------------------*
*&      Form  FRM_SET_CATALOG
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_set_catalog .

  DATA:l_pos TYPE i VALUE 1.
  CLEAR: l_pos.
  l_pos = l_pos + 1.
  gwa_fcat-coltext   = 'PO'.
  gwa_fcat-scrtext_l = 'PO'.
  gwa_fcat-scrtext_m = 'PO'.
  gwa_fcat-scrtext_s = 'PO'.
  gwa_fcat-fieldname = 'EBELN'.
  gwa_fcat-col_pos = l_pos.
  gwa_fcat-outputlen = '10'.
  APPEND gwa_fcat TO git_fcat.
  l_pos = l_pos + 1.
  gwa_fcat-coltext   = 'PO item'.
  gwa_fcat-scrtext_l = 'PO item'.
  gwa_fcat-scrtext_m = 'PO item'.
  gwa_fcat-scrtext_s = 'PO item'.
  gwa_fcat-fieldname = 'VERKF'.
  gwa_fcat-edit    = 'X'. "将这列设置为可编辑
  gwa_fcat-col_pos = l_pos.
  gwa_fcat-outputlen = '20'.
  APPEND gwa_fcat TO git_fcat.

ENDFORM.

&amp;lt;img class="alignnone size-full wp-image-3902" src="http://www.baidusap.com/wp-content/uploads/2017-03-16_16-52-33.png" alt="" width="481" height="316" /&amp;gt;

4, 行可编辑

类似于单元格可编辑,只要将一行之外的所有行都变成不可输入,也就实现了行可编辑。逻辑如下:

1,通过layout-edit = ’X' 将整个行项目都变成可输入

2,将某行之外的所有行style设置成 cl_gui_alv_grid=>mc_style_disabled.

代码:

REPORT ztest_alv_lvc_edit.

TYPES:BEGIN OF gty_ekko,
        ebeln TYPE ekko-ebeln,
        verkf TYPE ekko-verkf,
        style TYPE lvc_t_styl,  "设置编辑状态字段
      END OF gty_ekko.
DATA:git_ekko TYPE STANDARD TABLE OF gty_ekko,
     gwa_ekko TYPE gty_ekko.

DATA:git_fcat   TYPE lvc_t_fcat,
     gwa_fcat   LIKE LINE OF git_fcat,
     gwa_layout TYPE lvc_s_layo,
     gwa_glay   TYPE lvc_s_glay.
DATA:gwa_edit TYPE lvc_s_styl,
     git_edit TYPE lvc_t_styl.

START-OF-SELECTION.

  SELECT ebeln
         verkf
    INTO CORRESPONDING FIELDS OF TABLE git_ekko
    FROM ekko
   UP TO 10 ROWS.

  gwa_edit-fieldname = 'EBELN'.
  gwa_edit-style = cl_gui_alv_grid=>mc_style_disabled.
  INSERT gwa_edit INTO TABLE git_edit.

   gwa_edit-fieldname = 'VERKF'.
  gwa_edit-style = cl_gui_alv_grid=>mc_style_disabled.
  INSERT gwa_edit INTO TABLE git_edit.

  INSERT LINES OF git_edit INTO TABLE gwa_ekko-style.
* 将除第三行之外的所有行都设置成不能输入
  DO 10 TIMES.
    IF sy-index <> 3.
      MODIFY git_ekko INDEX sy-index FROM gwa_ekko TRANSPORTING style.
    ENDIF.
  ENDDO.

  PERFORM frm_set_catalog.

  gwa_layout-zebra = 'X'.
  gwa_layout-sel_mode = 'A'.
  gwa_layout-cwidth_opt = 'X'.
  gwa_layout-edit     = 'X'.       "将整个ALV设置成可编辑
  gwa_layout-stylefname = 'STYLE'. "指定保存编辑状态的字段名
  gwa_glay-edt_cll_cb = 'X'.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      i_callback_program = sy-repid
      is_layout_lvc      = gwa_layout
      it_fieldcat_lvc    = git_fcat
*      i_grid_settings    = gwa_glay
    TABLES
      t_outtab           = git_ekko[]
    EXCEPTIONS
      program_error      = 1
      OTHERS             = 2.
  IF sy-subrc = 0.

  ENDIF.
*&---------------------------------------------------------------------*
*&      Form  FRM_SET_CATALOG
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_set_catalog .

  DATA:l_pos TYPE i VALUE 1.
  CLEAR: l_pos.
  l_pos = l_pos + 1.
  gwa_fcat-coltext   = 'PO'.
  gwa_fcat-scrtext_l = 'PO'.
  gwa_fcat-scrtext_m = 'PO'.
  gwa_fcat-scrtext_s = 'PO'.
  gwa_fcat-fieldname = 'EBELN'.
  gwa_fcat-col_pos = l_pos.
  gwa_fcat-outputlen = '10'.
  APPEND gwa_fcat TO git_fcat.
  l_pos = l_pos + 1.
  gwa_fcat-coltext   = 'PO item'.
  gwa_fcat-scrtext_l = 'PO item'.
  gwa_fcat-scrtext_m = 'PO item'.
  gwa_fcat-scrtext_s = 'PO item'.
  gwa_fcat-fieldname = 'VERKF'.
  gwa_fcat-col_pos = l_pos.
  gwa_fcat-outputlen = '20'.
  APPEND gwa_fcat TO git_fcat.

ENDFORM.

显示:

&amp;lt;img class="alignnone size-full wp-image-3903" src="http://www.baidusap.com/wp-content/uploads/2017-03-16_16-53-13.png" alt="" width="485" height="310" /&amp;gt;

以上。

转载于:https://www.cnblogs.com/datie/p/11435497.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/banin4739/article/details/102249431

智能推荐

CSS背景特殊属性值-程序员宅基地

文章浏览阅读52次。CSS代码示例-背景附着属性(background-attachment)-[背景图固定不动,不跟随滚动条滚动]:<html><head><title>背景附着属性 background-attachment</title><style type="text/css">body {background-image:url(../image..._背景附着方式的属性值

Python-第一阶段-第二章 字面量-程序员宅基地

文章浏览阅读863次,点赞24次,收藏18次。Python字面量

《算法导论》第2章 算法基础(插入排序、归并排序、复杂度计算)_61,55,97,30,38,58两轮选择递增排序法-程序员宅基地

文章浏览阅读1k次。(最近在自己学习《算法导论》一本书,之前本来喜欢手写笔记,但是随即发现自己总是把笔记弄丢,所以打算做一个电子版的笔记)(另外书中用的都是伪代码,笔记中如果需要尝试的地方都是python代码)2.1 插入排序 基本思想:将待排序的数列看成两个部分(以从小到大为例),前一半是排序完成的,后一半是乱序的,对于乱序的第一个,开始和前一半里最大的数字、第二大的数字……依次比较,等到合适的位置就将它放进去。然后比对过的数字向后移动一位,相应的排序完成的长度加一,没有排序的减一。如:5 |..._61,55,97,30,38,58两轮选择递增排序法

把这份关于Android Binder原理一系列笔记研究完,进大厂是个“加分项”(2)-程序员宅基地

文章浏览阅读674次,点赞21次,收藏21次。可以看出,笔者的工作学习模式便是由以下。

Vue实战(三):实现树形表格_vue树形表格组件-程序员宅基地

文章浏览阅读1.1k次。实现树形表格_vue树形表格组件

Linux平台下很实用的44个Linux命令-程序员宅基地

文章浏览阅读237次。Linux平台下很实用的44个Linux命令大家好,今天再继续和大家说下基础的命令,实在是不知道基础的东西还有什么是应该和大家讲的了,要是再开基础的东西,我觉得就得和大家说交换机和路由器什么的了。今天和大家说一下linux运维其实一般来说,能精通100+的命令,就是一个合格的运维人员了,意思就是你的基础已经差不多了。但是在实际运维工作中需要经常运用到的一些命令,今天就和大家简单的说一下,因

随便推点

2023年Java华为OD真题机考题库大全-带答案(持续更新)_华为od机试题-程序员宅基地

文章浏览阅读1.2w次,点赞16次,收藏149次。2023年华为OD真题目前华为社招大多数是OD招聘,17级以下都为OD模式,OD模式也是华为提出的一种新的用工形式,定级是13-17级,属于华为储备人才,每年都会从OD项目挑优秀员工转为正编。D1-D5对应薪资10K-35K左右,年终奖2-4个月,周六加班双倍工资,下个月发。入职OD会有一定薪资上涨,之后每年一次加薪,OD转华为一次加薪。等不到转正机会,相对于内部员工来说,容易被裁,不稳定,可能接触不到核心项目,功能。具体转条件:连续N个季度绩效为A,部门有转正名额,排队。_华为od机试题

python selenium自动化之chrome与chromedriver版本兼容问题_chrome版本122.0.6261.112和chromdriver 107.0.5304.62兼容-程序员宅基地

文章浏览阅读2.7k次,点赞3次,收藏10次。在我们使用python+selenium来驱动chrome浏览器时,需要有chromedriver的支持,但是chrome浏览器更新比较频繁,而chrome浏览器和chromedriver则需要保持版本一致(版本一般相差1以内),此时我们就需要手动下载chromedriver来匹配此时的浏览器,但是生产环境操作比较麻烦。此时,我们就想是不是有一个程序来代替我们完成这个工作呢?思路比较当前的chrome浏览器版本号与chromedriver浏览号如果不匹配,则下载一个新的chromedriver替换掉_chrome版本122.0.6261.112和chromdriver 107.0.5304.62兼容吗

测试人员如何规划自己的职业生涯,分享我这些年的测开的总结给大家参考~_测开个人成长计划-程序员宅基地

文章浏览阅读2.7k次,点赞2次,收藏11次。负责开发项目的技术方法。我的一位同事曾经很认真地问过我一个问题,他说他现在从事软件测试工作已经4年了,但是他不知道现在的工作和自己在工作3年时有什么不同,他想旁观者清,也许我能回答他的问题。随着互联网的飞快发展,IT行业出现了日新月异的变化,新的技术会不断出现,你熟练掌握的软件测试技术很快就过时了。至于第三点说的实践和思考就是你对自己学到的东西的一个掌握的程度的检验了,只有实践了你才能知道,这个知识点你到底学会了没有,会了之后有没有什么其他的理解,这个就是需要自己去思考了 ,这种东西都是别人教不了你的!_测开个人成长计划

MATLAB代码:多微网电能互补与需求响应的微网双层优化模型——动态定价与能量管理_配电网和微电网的matlab模型-程序员宅基地

文章浏览阅读734次,点赞21次,收藏13次。主要内容:代码主要做的是考虑多微网电能互补共享的微网双层优化模型,同时优化配电网运营商的动态电价以及微网用户的能量管理策略,在上层,目标函数为配电网运营商的收益最大化,决策变量为配电网运营商的交易电价;主要内容:代码主要做的是考虑多微网电能互补共享的微网双层优化模型,同时优化配电网运营商的动态电价以及微网用户的能量管理策略,在上层,目标函数为配电网运营商的收益最大化,决策变量为配电网运营商的交易电价;最后,我们输出最终的结果,包括最优的用电费用、配网运营商的收益以及每个微网的用电费用分配情况。_配电网和微电网的matlab模型

基于双极性SPWM调制的三相电压型桥式逆变电路原理解析-程序员宅基地

文章浏览阅读378次,点赞3次,收藏3次。首先介绍了逆变电路的基本原理和应用领域,然后详细分析了双极性SPWM调制方式的工作原理和优势。本文通过对三相电压型桥式逆变电路和双极性SPWM调制方式的技术分析,深入探讨了其在电力系统中的应用和性能评估。双极性SPWM调制方式是SPWM调制方式的一种改进形式,它能够更好地抑制谐波,提高逆变电路的输出质量。面对电力系统的不断发展和需求的变化,逆变电路和SPWM调制方式也在不断演进。为了评估三相电压型桥式逆变电路和双极性SPWM调制方式的性能,本节将详细分析其输出波形的失真程度、功率损耗和效率等关键指标。

用cmake 编译 xcode用的clucene静态库(一)_clucene-config.h-程序员宅基地

文章浏览阅读4.5k次。第一步、下载源代码 http://sourceforge.net/projects/clucene/ 第二步、下载cmakehttp://www.cmake.org/cmake/resources/software.html 编译第一步,打开在应用程序中的cmake GUI程序,设置好源代码路径,和输出路径,如图: 第二步,点击Configure,在_clucene-config.h

推荐文章

热门文章

相关标签