abap开发中,检索帮助的方法大概有4种,下面进行简单描述下。
1. 参照数据库字段,用数据字典自带的检索帮助,或者参照字段的定义域实现F4检索帮助。也是最简单的方法,参照字段定义即可。
2. SE11里面创建一个检索帮助ID(search_help),然后再定义的时候,使用MATCHCODE OBJECT search_help 绑定即可。
3. 使用函数‘F4IF_INT_TABLE_VALUE_REQUEST‘实现。
具体方法如下:
3-1.添加VALUE-REQUEST事件
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s1-low.
* 检索帮助(年/月)
PERFORM frm_s1_low_f4.
3-2.在子程序中实现检索帮助
FORM frm_s1_low_f4.
DATA lt TYPE STANDARD TABLE OF dd07v.
**************************************************
* 如果要获取某字段的定义域的值作为检索帮助的话,可以使用以下函数。
CALL FUNCTION ‘DD_DOMVALUES_GET‘
EXPORTING
domname = ‘ZZLZT‘ "有定义域的字段
text = ‘X‘ "要获取该定义域对应的文本
TABLES
dd07v_tab = lt
EXCEPTIONS
WRONG_TEXTFLAG = 1
OTHERS = 2
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
* 把上面获取到的值,绑定到S1-LOW字段上
CALL FUNCTION ‘F4IF_INT_TABLE_VALUE_REQUEST‘
EXPORTING
retfield = ‘DOMVALUE_L‘ "lt内表里面的字段
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = ‘S1-LOW‘ "画面上绑定字段
value_org = ‘S‘
callback_program = sy-repid
TABLES
value_tab = lt "需要显示帮助的值内表
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS
= 3.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF
4. 使用函数‘F4IF_FIELD_VALUE_REQUEST‘实现。
F4 help for fields that are only known at runtime这是这个函数的描述,即运行时使用。
在日常的工作中,其实都是在运行时使用,所以就当正常的函数使用就可以了。
*
运行这个函数就会弹出F4帮助界面的值选择窗口,
窗口中的值就是tabname中字段fieldname的所有可选值,当选择某个值后,
那么这个值和其相关的属性就会存放到表return_tab中。这里不详细列举,请developer们自行测试。
深入研究发现,这个函数隶属于函数组SDHI(外部应用程序 F4 界面模块),
在这个函数组中有很多可用的允许开发者自定义帮助的函数。
原文:http://blog.csdn.net/forever_crazy/article/details/19107629