ALV 中根据条件设置某个cell 是否可编辑

*&---------------------------------*

*& Report  Z_TEST_ZS13

*&

*&---------------------------------*

*&

*&

*&---------------------------------*

REPORT  Z_TEST_ZS13.

*&---------------------------------*

*& Report  ZDEMO_ALVGRID_EDIT                                          *

*&                                                                     *

*&---------------------------------*

*&                                                                     *

*& Example of a simple ALV Grid Report                                 *

*& ...................................                                 *

*&                                                                     *

*& The basic ALV grid, Enhanced to display specific fields as          *

*& editable depending on field value                                   *

*&---------------------------------*

TABLES:     ekko.

TYPE-POOLS: slis.                                 "ALV Declarations

*Data Declaration

*----------------

TYPES: BEGIN OF t_ekko,

ebeln TYPE ekpo-ebeln,

ebelp TYPE ekpo-ebelp,

statu TYPE ekpo-statu,

aedat TYPE ekpo-aedat,

matnr TYPE ekpo-matnr,

menge TYPE ekpo-menge,

meins TYPE ekpo-meins,

netpr TYPE ekpo-netpr,

peinh TYPE ekpo-peinh,

field_style  TYPE lvc_t_styl, "FOR DISABLE

END OF t_ekko.

DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,

wa_ekko TYPE t_ekko.

*ALV data declarations

DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE.

DATA: it_fieldcat TYPE lvc_t_fcat,     "slis_t_fieldcat_alv WITH HEADER LINE,

wa_fieldcat TYPE lvc_s_fcat,

gd_tab_group TYPE slis_t_sp_group_alv,

gd_layout    TYPE lvc_s_layo,     "slis_layout_alv,

gd_repid     LIKE sy-repid.

************************************************************************

*Start-of-selection.

START-OF-SELECTION.

PERFORM data_retrieval.

PERFORM set_specific_field_attributes.

PERFORM build_fieldcatalog.

PERFORM build_layout.

PERFORM display_alv_report.

*&---------------------------------*

*&      Form  BUILD_FIELDCATALOG

*&---------------------------------*

*       Build Fieldcatalog for ALV Report

*----------------------------------*

FORM build_fieldcatalog.

wa_fieldcat-fieldname   = ‘EBELN‘.

wa_fieldcat-scrtext_m   = ‘Purchase Order‘.

wa_fieldcat-col_pos     = 0.

wa_fieldcat-outputlen   = 10.

wa_fieldcat-emphasize   = ‘X‘.

wa_fieldcat-key         = ‘X‘.

APPEND wa_fieldcat TO it_fieldcat.

CLEAR  wa_fieldcat.

wa_fieldcat-fieldname   = ‘EBELP‘.

wa_fieldcat-scrtext_m   = ‘PO Item‘.

wa_fieldcat-col_pos     = 1.

APPEND wa_fieldcat TO it_fieldcat.

CLEAR  wa_fieldcat.

wa_fieldcat-fieldname   = ‘STATU‘.

wa_fieldcat-scrtext_m   = ‘Status‘.

wa_fieldcat-col_pos     = 2.

APPEND wa_fieldcat TO it_fieldcat.

CLEAR  wa_fieldcat.

wa_fieldcat-fieldname   = ‘AEDAT‘.

wa_fieldcat-scrtext_m   = ‘Item change date‘.

wa_fieldcat-col_pos     = 3.

APPEND wa_fieldcat TO it_fieldcat.

CLEAR  wa_fieldcat.

wa_fieldcat-fieldname   = ‘MATNR‘.

wa_fieldcat-scrtext_m   = ‘Material Number‘.

wa_fieldcat-col_pos     = 4.

APPEND wa_fieldcat TO it_fieldcat.

CLEAR  wa_fieldcat.

wa_fieldcat-fieldname   = ‘MENGE‘.

wa_fieldcat-scrtext_m   = ‘PO quantity‘.

wa_fieldcat-col_pos     = 5.

APPEND wa_fieldcat TO it_fieldcat.

CLEAR  wa_fieldcat.

wa_fieldcat-fieldname   = ‘MEINS‘.

wa_fieldcat-scrtext_m   = ‘Order Unit‘.

wa_fieldcat-col_pos     = 6.

APPEND wa_fieldcat TO it_fieldcat.

CLEAR  wa_fieldcat.

wa_fieldcat-fieldname   = ‘NETPR‘.

wa_fieldcat-scrtext_m   = ‘Net Price‘.

*设置单价字段可编辑

wa_fieldcat-edit        = ‘X‘.

wa_fieldcat-col_pos     = 7.

wa_fieldcat-outputlen   = 15.

wa_fieldcat-datatype     = ‘CURR‘.

APPEND wa_fieldcat TO it_fieldcat.

CLEAR  wa_fieldcat.

wa_fieldcat-fieldname   = ‘PEINH‘.

wa_fieldcat-scrtext_m   = ‘Price Unit‘.

wa_fieldcat-col_pos     = 8.

APPEND wa_fieldcat TO it_fieldcat.

CLEAR  wa_fieldcat.

ENDFORM.                    " BUILD_FIELDCATALOG

*&---------------------------------*

*&      Form  BUILD_LAYOUT

*&---------------------------------*

*       Build layout for ALV grid report

*----------------------------------*

FORM build_layout.

* Set layout field for field attributes(i.e. input/output)

gd_layout-stylefname = ‘FIELD_STYLE‘.

gd_layout-zebra             = ‘X‘.

ENDFORM.                    " BUILD_LAYOUT

*&---------------------------------*

*&      Form  DISPLAY_ALV_REPORT

*&---------------------------------*

*       Display report using ALV grid

*----------------------------------*

FORM display_alv_report.

gd_repid = sy-repid.

*  call function ‘REUSE_ALV_GRID_DISPLAY‘

CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY_LVC‘

EXPORTING

i_callback_program      = gd_repid

*            i_callback_user_command = ‘USER_COMMAND‘

is_layout_lvc               = gd_layout

it_fieldcat_lvc             = it_fieldcat

i_save                  = ‘X‘

TABLES

t_outtab                = it_ekko

EXCEPTIONS

program_error           = 1

OTHERS                  = 2.

IF sy-subrc <> 0.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFORM.                    " DISPLAY_ALV_REPORT

*&---------------------------------*

*&      Form  DATA_RETRIEVAL

*&---------------------------------*

*       Retrieve data form EKPO table and populate itab it_ekko

*----------------------------------*

FORM data_retrieval.

SELECT ebeln ebelp statu aedat matnr menge meins netpr peinh

UP TO 10 ROWS

FROM ekpo

INTO  CORRESPONDING FIELDS OF TABLE it_ekko.

ENDFORM.                    " DATA_RETRIEVAL

*&---------------------------------*

*&根据条件设置字段是否可编辑

*&---------------------------------*

*       populate FIELD_STYLE table with specific field attributes

*----------------------------------*

form set_specific_field_attributes .

DATA ls_stylerow TYPE lvc_s_styl .

DATA lt_styletab TYPE lvc_t_styl .

* Populate style variable (FIELD_STYLE) with style properties

* The NETPR field/column has been set to editable in the fieldcatalog...

* The following code sets it to be disabled(display only) if ‘NETPR‘

* is gt than 10.

LOOP AT it_ekko INTO wa_ekko.

IF wa_ekko-netpr GT 10.

ls_stylerow-fieldname = ‘NETPR‘ .

ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.

"set field to disabled

APPEND ls_stylerow  TO wa_ekko-field_style.

*可以按上面的代码添加多个字段的是否可修改

MODIFY it_ekko FROM wa_ekko.

ENDIF.

ENDLOOP.

endform.                    " set_specific_field_attributes

时间: 2024-12-07 11:45:18

ALV 中根据条件设置某个cell 是否可编辑的相关文章

[DevExpress]条件设置GridControl RepositoryItem是否可编辑

在项目开发中,并不是每个RepositoryItem都可以编辑,往往是有条件性的,需要譬如当A列等于"AA"的时候,B列才可编辑,实现起来在ShowingEditor事件中最为方便,并且加入toolTip提示显得人性化. 代码如下: private void gvLampConfig_ShowingEditor(object sender, System.ComponentModel.CancelEventArgs e) { GridView _view = sender as Gri

网格部件中,根据某一个列的条件设置整行是否可编辑的参考示例

度量快速开发平台在网格部件构建中,有这样的需求,比如网格中根据条件"未审核"的数据,这一行都可以编辑调整,"已审核"的数据,这一行数据都不能修改.这种需求在日常构建中也是很多的.大家知道度量快速开发平台中有两个熟悉的方法来控制网格部件的读写.网格部件1.只读=True 网格部件1.只读=False 这个是整体控制网格部件是否可以写或者是只能读,需要放在网格部件1.RefreshData()之前才有效果. 网格部件1.SetFieldReadOnly("字段

C# 将Access中时间段条件查询的数据添加到ListView中

C# 将Access中时间段条件查询的数据添加到ListView中 一.让ListView控件显示表头的方法 在窗体中添加ListView 空间,其属性中设置:View属性设置为:Detail,Columns集合中添加表头中的文字. 二.利用代码给ListView添加Item. 首先,ListView的Item属性包括Items和SubItems.必须先实例化一个ListIteView对象.具体如下: ListViewItem listViewItem=new ListViewItem(); l

Bourne Shell中的条件判断

条件判断是一个程序获得智能的基础,而Bourne Shell脚本则通过命令 [ 来模拟大多数编程语言中的条件表达式. shell中支持的控制结构有: (1) if then else fi (2) for in do done (3) while do done 第二种主要用于遍历,可能不需要条件判断,其它两种则免不了和 [ 命令共同使用了.下面讲解这个命令如何模拟条件表达式. 文件/目录判断[ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真.[ -c FILE ] 如果 FI

iOS_25_彩票设置的cell的数据源模型的封装

组模型的封装 SettingGroup // // SettingGroup.h // 25_彩票 // // Created by beyond on 14-8-28. // Copyright (c) 2014年 com.beyond. All rights reserved. // 模型,一组(Section,Group),包括 组的header,组的footer,中间的条目(cell数组) #import <Foundation/Foundation.h> @interface Set

asp.net 微信企业号办公系统-流程设计--流转条件设置(路由)

当一个步骤后面有多个步骤时,可以设置为根据设置条件系统自动判断该流向哪些步骤,也叫路由. 工作流没有单独的路由步骤来设置条件,流程条件通过双击连线弹出条件设置框来设置. 1.sql条件 即通过sql条件来判断条件是否满足,条件对应的表为流程对应的表. 2.组织机构 通过当前人员在组织机构中的关系来判断条件是否满足. 3.自定义方法 该方法的使用和参数与步骤中的事件相同. 注意:如果要使设置的条件生效需要在步骤设置中将流转类型设置为:系统控制 系统会根据您设置的条件自动判断该发送到哪些步骤.

函数alv下的颜色设置

ABAP中的颜色代码是由4位字都组成的 cxyz    c:color的简写,颜色代码均以C开头 x:标准色代码,SAP中一共有7个标准色    y:反转颜色启用/关闭 1/0 z:增强颜色启用/关闭 1/0 标准色代码一览表 X 颜色 主要用处 1 灰蓝色 抬头.标题栏 2 浅灰色 列表内容 3 黄色 汇总 4 蓝色 关键字 5 绿色 正确 6 红色 错误 7 橙色 控制 如: 单元格颜色控制: 定义最后显示内表的时候要在里面增加一个 colour  type lvc_T_scol,类型,这是

.NET开源工作流RoadFlow-流程设计-流转条件设置(路由)

当一个步骤后面有多个步骤时,可以设置为根据设置条件系统自动判断该流向哪些步骤,也叫路由. roadflow没有单独的路由步骤来设置条件,流程条件通过双击连线弹出条件设置框来设置. 1.sql条件 即通过sql条件来判断条件是否满足,条件对应的表为流程对应的表. 2.组织机构 通过当前人员在组织机构中的关系来判断条件是否满足. 3.自定义方法 该方法的使用和参数与步骤中的事件相同. 注意:如果要使设置的条件生效需要在步骤设置中将流转类型设置为:系统控制 系统会根据您设置的条件自动判断该发送到哪些步

在SQL存储过程中给条件变量加上单引号

在SQL存储过程中给条件变量加上单引号,不加语句就会出问题,以下就是在存储过程中将条件where设置成了动态变化的,给where赋完值再和前面的语句拼接,再execute(SQL) set @where= '(DATEDIFF(day,'''+CONVERT(varchar(100), @d_start, 23)+''',sdate)>=0 and DATEDIFF(day,'''+CONVERT(varchar(100), @d_end, 23)+''',sdate)<=0) and ' +