屏幕出口自定义字段搜索帮助:如何传递标准字段参数至FM
解决搜索帮助出口无法获取屏幕标准字段值的方案
1. 确认搜索帮助参数配置
- 将需要传入的标准屏幕字段添加为搜索帮助的导入参数,务必勾选「导入」标识(Import Parameter)。
- 保证该参数的数据类型与屏幕字段完全一致,避免类型不匹配导致值传递失败。
2. 绑定屏幕字段到搜索帮助参数
- 若通过屏幕元素属性绑定搜索帮助:在「参数分配」(Parameter Assignment)中,直接将屏幕上的标准字段映射到搜索帮助的导入参数。比如搜索帮助导入参数为
STANDARD_FIELD,屏幕标准字段为SCR_STD_FIELD,直接对应关联即可。 - 若通过
PROCESS ON VALUE-REQUEST代码触发:手动将屏幕字段值传入搜索帮助参数表,示例代码如下:DATA: lt_shlp TYPE TABLE OF shlp_descr, ls_shlp TYPE shlp_descr, lt_selpar TYPE TABLE OF shlp_selpar, ls_selpar TYPE shlp_selpar. ls_shlp-shname = 'ZMY_CUSTOM_SEARCHHELP'. APPEND ls_shlp TO lt_shlp. ls_selpar-shlpname = 'ZMY_CUSTOM_SEARCHHELP'. ls_selpar-shlpfield = 'STANDARD_FIELD'. ls_selpar-value = SCR_STD_FIELD. " 赋值屏幕上的标准字段值 APPEND ls_selpar TO lt_selpar. CALL FUNCTION 'F4IF_START_VALUE_REQUEST' EXPORTING shlpname = 'ZMY_CUSTOM_SEARCHHELP' TABLES shlp = lt_shlp shlp_selpar = lt_selpar EXCEPTIONS parameter_error = 1 no_values_found = 2 OTHERS = 3.
3. 搜索帮助出口FM的参数读取
- 若使用标准搜索帮助出口接口(
SHLP_EXIT),可通过遍历SHLP-SELPAR表获取传入的标准字段值,示例代码:DATA: ls_selpar TYPE shlp_selpar, lv_std_value TYPE <对应标准字段类型>. LOOP AT shlp-selpar INTO ls_selpar WHERE shlpfield = 'STANDARD_FIELD'. lv_std_value = ls_selpar-value. EXIT. ENDLOOP. - 若屏幕自动触发搜索帮助,
SHLP-SELPAR表会自动包含绑定的屏幕字段值,直接读取即可。
4. 调试验证关键点
- 在FM入口处设置断点,检查
SHLP-SELPAR表是否存在对应参数记录,若无则说明参数绑定环节出错。 - 确认触发搜索帮助时,屏幕标准字段已有有效值(比如PBO阶段已赋值或用户已输入),空值会导致传递失败。
5. 返回结果格式处理
- 在搜索帮助出口的
SELECT或DISPLAY阶段,将处理后的代码/文本存入RECORD_TAB,需与搜索帮助的输出字段对应,示例代码:DATA: ls_record TYPE seahlpres. " 新增结果行 ls_record-string1 = 'CODE1'. " 对应搜索帮助的CODE字段 ls_record-string2 = 'Text code 1'. " 对应搜索帮助的TEXT字段 APPEND ls_record TO record_tab. ls_record-string1 = 'CODE2'. ls_record-string2 = 'Text code 2'. APPEND ls_record TO record_tab. - 确保搜索帮助已配置CODE/TEXT两个输出字段,且与
RECORD_TAB的字段一一对应(如STRING1对应CODE,STRING2对应TEXT)。
内容的提问来源于stack exchange,提问作者tafkap
相关产品推荐
相关产品推荐

