DATA: wa_fieldcatalog TYPE lvc_s_fcat, "显示数据列内表工作区域
it_fieldcatalog TYPE lvc_t_fcat. "显示数据列内表
if &1 eq 'AAA'.
wa_fieldcatalog-edit = 'X'. "可编辑
endif.
然后有时候需要的是,某行的某列数据为特定值的时候才可以编辑,其他时候不可编辑。
这里说明一下是:REUSE_ALV_GRID_DISPLAY是细化不到具体单元格的,
使用REUSE_ALV_GRID_DISPLAY_LVC可以
其实思想跟table control 单元格控制思想差不太多;
都是循环数据内表,等数据满足时,去修改显示的属性;
table control 单元格级别控制可见:
http://blog.sina.com.cn/s/blog_c0978c9b0101gbsu.html
此处大概写下alv的单元格级别控制
*&---------------------------------------------------------------------*
*& Report YLM_0003
*&
http://blog.sina.com.cn/sapliumeng
*&---------------------------------------------------------------------*
*& created by lium
*& ALV单元格控制
*&---------------------------------------------------------------------*
REPORT YLM_0003
.
DATA
:
BEGIN
OF GS_DATA
.
INCLUDE
STRUCTURE SPFLI
.
DATA
: CELL_STYLE
TYPE LVC_T_STYL
,
"为内表添加设置编辑状态所需的字段
END
OF GS_DATA
.
"alv数据变量
DATA
: LT_DATA
LIKE
TABLE
OF GS_DATA
.
DATA
: LW_DATA
LIKE
LINE
OF LT_DATA
.
"alv变量
DATA
:
LT_FIELDCAT
TYPE LVC_T_FCAT
,
"显示数据列内表
LW_FIELDCAT
LIKE
LINE
OF LT_FIELDCAT
,
"显示数据列内表工作区域
L_LAYOUT
TYPE LVC_S_LAYO
.
DATA
: LW_STYLELIN
TYPE LVC_S_STYL
.
FIELD-SYMBOLS 《L_DATA》
LIKE
LINE
OF LT_DATA
. “因英文版单括号会被html误解析,特使用《》
DEFINE MAC_FIELDLOG
.
LW_FIELDCAT
-FIELDNAME
= &1
.
"字段名称
LW_FIELDCAT
-REPTEXT
= &2
.
"标题
* "设置复选框可编辑
IF &1
EQ
'CARRID'
.
LW_FIELDCAT
-
EDIT
=
'X'
.
ENDIF
.
APPEND LW_FIELDCAT
TO LT_FIELDCAT
.
CLEAR LW_FIELDCAT
.
END-OF-DEFINITION
.
START-OF-SELECTION
.
SELECT *
FROM SPFLI
INTO CORRESPONDING
FIELDS
OF
TABLE LT_DATA
.
MAC_FIELDLOG
:
'CARRID '
'航线承运人ID '
,
'CONNID '
'航班连接 Id '
,
'COUNTRYFR '
'国家键值 '
,
'CITYFROM '
'起飞城市 '
,
'AIRPFROM '
'起飞机场 '
.
LOOP
AT LT_DATA
ASSIGNING 《L_DATA》
.
LW_STYLELIN
-FIELDNAME
=
'CARRID'
.
" 需要编辑的列名
IF 《L_DATA》
-CARRID
=
'LH3'
.
* LW_STYLELIN-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_ENABLED. " 设置为可编辑状态
ELSE
.
LW_STYLELIN
-STYLE
= CL_GUI_ALV_GRID
=>MC_STYLE_DISABLED
.
" 设置为可编辑状态
ENDIF
.
APPEND LW_STYLELIN
TO 《L_DATA》
-CELL_STYLE
.
CLEAR LW_STYLELIN
.
ENDLOOP
.
L_LAYOUT
-STYLEFNAME
=
'CELL_STYLE'
.
" 将内表中的字段名存入显示格式
CALL
FUNCTION
'REUSE_ALV_GRID_DISPLAY_LVC'
"调用函数
EXPORTING
IT_FIELDCAT_LVC
= LT_FIELDCAT
IS_LAYOUT_LVC
= L_LAYOUT
TABLES
T_OUTTAB
= LT_DATA
EXCEPTIONS
PROGRAM_ERROR
=
1
OTHERS