首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Web Dynpro ALV可条件编辑单元格

Web Dynpro ALV可条件编辑单元格
EN

Stack Overflow用户
提问于 2013-07-02 20:02:30
回答 2查看 4.6K关注 0票数 1

问题是,我希望我的will复选框列的一些单元格将是可编辑的,一些单元格将是不可编辑的,这取决于一些属性。

我将采取以下步骤来实现所需的结果:

1)将属性READONLY类型WDY-BOOLEAN添加到相应的节点(属性检查类型WDY-BOOLEAN已经添加)。

2)然后在我的代码中,我检查我的表行中的一些条件,并分配属性READONLY值abap_true或abap_false。

3)然后我将我的节点与表绑定。表填写正确,我已签入调试器。

4)配置我的alv:

代码语言:javascript
复制
  DATA: lo_table_settings TYPE REF TO if_salv_wd_table_settings,
  lo_column_settings TYPE REF TO if_salv_wd_column_settings,
  lo_column TYPE REF TO cl_salv_wd_column.
  lo_column_settings ?= lv_value.
  lo_table_settings ?= lv_value.

  lo_column = lv_value->if_salv_wd_column_settings~get_column( 'CHECK' ).
  DATA lr_checkbox TYPE REF TO cl_salv_wd_uie_checkbox.

  " create checkbox
  CREATE OBJECT lr_checkbox
  EXPORTING checked_fieldname = 'CHECK'.

  " make our table is editable
  lo_table_settings->set_read_only( abap_false ).

  lo_column = lo_column_settings->get_column( 'CHECK' ).

  " Creating UI Elmenent 'INPUT FIELD' to make the column editable
  DATA: lr_input_field TYPE REF TO cl_salv_wd_uie_input_field.
  CREATE OBJECT lr_input_field EXPORTING value_fieldname = 'CHECK'.

  lr_checkbox->set_read_only_fieldname( value = 'READONLY' ).
  lv_value->if_salv_wd_column_settings~delete_column( ID = 'READONLY' ).

但是它不起作用,复选框列的所有单元格都是可编辑的,并且我没有得到复选框列的不可编辑单元格。

EN

回答 2

Stack Overflow用户

发布于 2013-07-30 13:39:47

要使字段只读或可编辑,只需将字段B的值设置为A的readonly属性即可。

因此,据我所知,您有一列是checkbox,并且您希望某些行是可编辑的,而其他行是只读的。

为此,您不需要创建输入字段,唯一需要做的就是获取复选框列引用,并将其readonly属性绑定到数据结构中的字段。

如果这仍然不起作用,请检查您的数据,检查每条记录的只读字段的值是否为'',如果是,那么当然,检查的每个单元格都是可编辑的。

票数 0
EN

Stack Overflow用户

发布于 2019-08-08 05:58:30

你的第一步是正确的。已将类型为WDY-BOOLEAN的属性READONLY添加到节点,并在调用栅格之前为其指定了abap_true值。

下一步是为您希望设置为可编辑的每个字段/行创建输入字段引用,并将此引用分配给字段属性READONLY,然后只为符合条件的行更改此属性。

以下是示例代码:

初始分配

代码语言:javascript
复制
 loop at lt_table assigning field-symbol(<fs_table>).
  <fs_table>-read_only = abap_true.    " non editable
 endloop.

设置列可编辑性

代码语言:javascript
复制
* input type reference
 data lr_input type ref to cl_salv_wd_uie_input_field.

* Retrieving all column id and reference
call method lv_value->if_salv_wd_column_settings~get_columns
   receiving
    value = data(lt_columns).

loop at lt_columns into ls_columns.
* Assigning column reference
data(lr_column) = ls_columns-r_column.

* Creating input field UI Element
create object lr_input
  exporting
   value_fieldname = ls_columns-id.

*Assigning input field to column to make it as editable
call method lr_column->set_cell_editor
  exporting
   value = lr_input.

* binding input field ref to READONLY field  
lr_input->set_read_only_fieldname( value = "READONLY" ).  
endloop.

根据条件使单行可编辑

代码语言:javascript
复制
loop at lt_table assigning field-symbol(<fs_table>).
  if smth = abap_true
    <fs_table>-read_only = abap_false.    " non editable
  endif.
endloop.

请查看this guide以获取参考。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17425111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档