ALV单个单元格可输入或灰掉

宏中定义EDIT可使一列变为可输入或者灰掉,但一行中某一个或者没有规律的灰掉则需要敲代码。

例图.png

首先先判断灰掉的多还是可输入的多,以可输入多为例子,利用宏让所有字段都可输入。

  • 1 在自建结构里添加字段,储存单元格是否可编辑:

TYPES:BEGIN OF TY_TAB,
        ZCPOR(40) TYPE C,              "资产
        ZCROT(4)  TYPE C,               "行次
        B1HSL     TYPE HSLVT,  "股本
        B2HSL     TYPE HSLVT,  "资本公积
        B3HSL     TYPE HSLVT,  "减  库存股
        B4HSL     TYPE HSLVT,  "其他综合收益
        B5HSL     TYPE HSLVT,  "盈余公积
        B6HSL     TYPE HSLVT,  "一般风险准备
        B7HSL     TYPE HSLVT,  "未分配利润
        B8HSL     TYPE HSLVT,  "所有者权益合计

        S1HSL     TYPE HSLVT,  "股本
        S2HSL     TYPE HSLVT,  "资本公积
        S3HSL     TYPE HSLVT,  "减  库存股
        S4HSL     TYPE HSLVT,  "其他综合收益
        S5HSL     TYPE HSLVT,  "盈余公积
        S6HSL     TYPE HSLVT,  "一般风险准备
        S7HSL     TYPE HSLVT,  "未分配利润
        S8HSL     TYPE HSLVT,  "所有者权益合计
        STYLE     TYPE LVC_T_STYL, " 为内表添加设置编辑状态所需的字段
      END OF TY_TAB.
  • 2 定义Layout属性
 GS_LAYOUT-STYLEFNAME = 'STYLE'. "为内表加设置编辑状态所需的字段
  • 3 灰掉
*--------------------------灰掉
  DATA:LT_STYLE TYPE LVC_T_STYL,
           LS_STYLE LIKE LINE OF LT_STYLE.
 LOOP AT GT_TAB INTO GS_TAB.
 LS_STYLE-FIELDNAME = 'B1HSL'. " 需要编辑的列名
  LS_STYLE-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED. " 设置为不可编辑状态
  APPEND LS_STYLE TO LT_STYLE.
  CLEAR:LS_STYLE.
  GS_TAB-STYLE = LT_STYLE.
  CLEAR LT_STYLE.
*******************
逻辑处理
**********************
   MODIFY GT_TAB FROM GS_TAB.
    CLEAR GS_TAB.
  ENDLOOP.
  • 设置为可编辑
  LS_STYLE-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_ENABLED. " 设置为可编辑状态

你可能感兴趣的:(ALV单个单元格可输入或灰掉)