ALV 网格锁定特定行

ALV Grid lock specific rows

我正在使用 CL_GUI_ALV_GRID class 来显示一个 table。我希望能够编辑 table(添加新行并删除所有行),但我不希望现有行成为 editable。这意味着:

我有 5 条记录要显示,我希望能够删除和添加新记录,但我不希望用户编辑 5 条现有记录(我希望他能够删除它们)。

这可能吗?

默认情况下,当您调用'LVC_FIELDCATALOG_MERGE' 功能模块为CL_GUI_ALV_GRID 生成字段目录时,单元格是不可编辑的。

您必须设置要编辑的列,设置 'edit' 属性,如下所示:

...
data: it_fieldcat type lvc_t_fcat,
      wa_fieldcat like line of it_fieldcat.

call function 'LVC_FIELDCATALOG_MERGE'
  EXPORTING
    i_structure_name = 'ZSTRUCT'
  CHANGING
    ct_fieldcat      = it_fieldcat.

loop at it_fieldcat into wa_fieldcat.
  wa_fieldcat-edit = 'X'. " ---->Here is set the editable column
  modify it_fieldcat from wa_fieldcat.
endloop.

如果您不想编辑单元格,请不要设置此属性。

但为了更好的参考检查程序 'BCALV_EDIT_03' 和 'BCALV_EDIT_04' 以获得完整的示例。

希望对您有所帮助。