我有一个 DDIC 结构,其中包含字段
BUKRS
和 SAKNR
。使用键 SAKNR
、SKB1
、MANDT
为检查表 BUKRS
上的字段 SAKNR
定义外键。
该结构的表格显示在 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.
如果您未定义自定义 F4 (*) 处理,则无法阻止更改搜索帮助输出中定义的不可编辑字段。
如果您未定义自定义 F4 处理,则无法将搜索帮助选择对话框中与不可编辑字段对应的字段灰显。
因此,剩下的唯一解决方案是为每个相关字段定义自定义 F4 处理(事件
onf4
,请参阅此 示例)...当然,我不建议更改标准方法 F4
类 CL_GUI_ALV_GRID
处理 F4 键。
NB (*): F4 键 = 与单击按钮显示值帮助相同。