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

Abap Web Dynpro ALV条件可编辑单元格,abap,alv,webdynpro,Abap,Alv,Webdynpro,问题是,我希望WD ALV中复选框列的某些单元格可编辑,而某些单元格将不可编辑,具体取决于某些属性 我将采取下一步措施以实现所需的结果: 1) 将属性只读类型WDY-BOOLINE添加到相应节点(已添加属性检查类型WDY-BOOLINE) 2) 然后在我的代码中检查表行中的一些条件,并指定属性READONLY值abap_true或abap_false 3) 然后我用表绑定我的节点。表格填写正确,我已签入调试器 4) 配置我的alv: DATA: lo_table_settings TYPE

问题是,我希望WD ALV中复选框列的某些单元格可编辑,而某些单元格将不可编辑,具体取决于某些属性

我将采取下一步措施以实现所需的结果:

1) 将属性只读类型WDY-BOOLINE添加到相应节点(已添加属性检查类型WDY-BOOLINE)

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

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

4) 配置我的alv:

  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' ).

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

要使字段a可编辑或只读,只需“将字段B的值用于a的只读属性”

所以,据我所知,您有一个复选框列,您希望某些行是可编辑的,而其他行是只读的

为此,您不需要创建输入字段,只需获取checkbox列引用并将其readonly属性绑定到数据结构中的字段


如果仍然不起作用,请检查数据,检查每条记录的只读字段值是否为“”,如果是,则检查的每个单元格都将是可编辑的。

您的第一步是正确的。在调用网格之前,您向节点添加了
WDY-BOOLEAN
类型的属性
READONLY
,并将其赋值为
abap\u true

下一步是为要使其可编辑的每个字段/行创建输入字段引用,并将该引用指定给字段属性READONLY,并仅为符合条件的行更改该属性

以下是示例代码:

初始分配

 loop at lt_table assigning field-symbol(<fs_table>).
  <fs_table>-read_only = abap_true.    " non editable
 endloop.
基于条件使单行可编辑

loop at lt_table assigning field-symbol(<fs_table>).
  if smth = abap_true
    <fs_table>-read_only = abap_false.    " non editable
  endif.
endloop.
lt_表赋值字段-symbol()处的循环。 如果smth=abap_为真 -只读=abap\U错误。“不可编辑 恩迪夫。 结束循环。 查阅参考资料

loop at lt_table assigning field-symbol(<fs_table>).
  if smth = abap_true
    <fs_table>-read_only = abap_false.    " non editable
  endif.
endloop.