ALV单元格级别控制
来源:互联网 发布:程序员教程 第四版 编辑:程序博客网 时间:2024/05/21 20:25
一般而言,alv某列可编辑,就是如下: it_fieldcatalog TYPElvc_t_fcat. "显示数据列内表
wa_fieldcatalog-edit = 'X'. "可编辑
DATA: wa_fieldcatalog TYPE lvc_s_fcat, "显示数据列内表工作区域
if &1 eq 'AAA'.
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
*&
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT
DATA:BEGIN
DATA:
"alv数据变量
DATA:
DATA:
"alv变量
DATA:
DATA:
FIELD-SYMBOLS《L_DATA》
DEFINE
*
END-OF-DEFINITION.
START-OF-SELECTION.
*