宏中定义EDIT可使一列变为可输入或者灰掉,但一行中某一个或者没有规律的灰掉则需要敲代码。
首先先判断灰掉的多还是可输入的多,以可输入多为例子,利用宏让所有字段都可输入。
- 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. " 设置为可编辑状态