ALV 网格单元格通过值帮助进行更改,尽管不可编辑

问题描述 投票:0回答:1

我有一个 DDIC 结构,其中包含字段

BUKRS
SAKNR
。使用键
SAKNR
SKB1
MANDT
为检查表
BUKRS
上的字段
SAKNR
定义外键。

enter image description here

该结构的表格显示在 ALV 网格中 (

CL_GUI_ALV_GRID
)。字段
SAKNR
在字段目录中设置为可编辑。
BUKRS
不是。

通过使用

SAKNR
上的搜索帮助并选择仅与
SAKNR
的某个值相关联的
BUKRS
值,
BUKRS
的值会在 ALV 中发生变化。

我希望字段

BUKRS
限制搜索,而不是更改值。

我怎样才能:

  • 防止更改不可编辑的值
  • 搜索帮助对话框中的外键值变灰(当搜索
    BUKRS
    的值时,
    SAKNR
    应变灰为固定值)

我尝试在相应的

STYLE
表中将其他字段的所有单元格设置为“禁用”,但这也不起作用。我宁愿不创建自定义搜索来帮助解决这个问题,因为考虑到可能导致此问题的标准字段的数量,这将需要大量的工作。

示例代码:

DATA: lt_fcat type lvc_t_fcat.

CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
  EXPORTING
    i_structure_name       = 'ZTEST_SAKNR'
  CHANGING
    ct_fieldcat            = lt_fcat
  EXCEPTIONS
    inconsistent_interface = 1
    program_error          = 2
    others                 = 3.

lt_fcat[ fieldname = 'SAKNR' ]-edit = abap_true.

data(lo_alv) = new cl_gui_alv_grid(
  i_parent  = cl_gui_container=>default_screen ).

DATA: lt_test type table of ztest_saknr.

SELECT * FROM SKB1 INTO CORRESPONDING FIELDS OF TABLE @lt_test.

lo_alv->set_table_for_first_display(
  CHANGING
    it_outtab                     = lt_test
    it_fieldcatalog               = lt_fcat
  EXCEPTIONS
    invalid_parameter_combination = 1
    program_error                 = 2
    too_many_lines                = 3
    others                        = 4 ).

CALL SCREEN 1000.
abap alv sap-data-dictionary
1个回答
0
投票

如果您未定义自定义 F4 (*) 处理,则无法阻止更改搜索帮助输出中定义的不可编辑字段。

如果您未定义自定义 F4 处理,则无法将搜索帮助选择对话框中与不可编辑字段对应的字段灰显。

因此,剩下的唯一解决方案是为每个相关字段定义自定义 F4 处理(事件

onf4
,请参阅此 示例)...当然,我不建议更改标准方法
F4
CL_GUI_ALV_GRID
处理 F4 键。

NB (*): F4 键 = 与单击按钮显示值帮助相同。

© www.soinside.com 2019 - 2024. All rights reserved.