ALV单元格级别控制_SAP刘梦_新浪博客

一般而言,alv某列可编辑,就是如下:
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      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值