序
HELLO ,这里是百里,一个学习中的ABAPER,在SAP开中传统会经常遇到选择屏幕,正常系统自带的数据元素可以解决大部分数据搜索帮助的问题,但是一些自开发,或者用户定制的选择屏幕就会出现搜索帮助不存在的情况.此时需要自行建立选择帮助.本案例将详细介绍F4,选择帮助的使用方式.
什么是F4搜索帮助
在标准的SAP中,提供了大量的数据元素类型,我们定义选择屏幕时候只要参考表标准数据数据元素,就提供自带的选择帮助数据。我们增加的F4选择帮助就是参考标准的制作的。
技术介绍
我们调用函数F4IF_INT_TABLE_VALUE_REQUEST ,传输取数内表,到 value_tab
设定对应匹配字段值 retfield
,然后设定对应的LOW 或者 HIGH 取数值 DYNPROFIELD
.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
FORM f_Create_username . CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' EXPORTING * DDIC_STRUCTURE = ' ' retfield = 'USNAM' * PVALKEY = ' ' DYNPPROG = SY-REPID DYNPNR = SY-DYNNR DYNPROFIELD = 's_name-low' * STEPL = 0 * WINDOW_TITLE = * VALUE = ' ' VALUE_ORG = 'S' * MULTIPLE_CHOICE = ' ' * DISPLAY = ' ' * CALLBACK_PROGRAM = ' ' * CALLBACK_FORM = ' ' * CALLBACK_METHOD = * MARK_TAB = * IMPORTING " USER_RESET = 'S' tables value_tab = gt_Data * FIELD_TAB = * RETURN_TAB = * DYNPFLD_MAPPING = EXCEPTIONS PARAMETER_ERROR = 1 NO_VALUES_FOUND = 2 OTHERS = 3 . IF sy-subrc <> 0. * Implement suitable error handling here ENDIF. ENDFORM. |
实例展示
本案例内容为自建表,对应1000屏幕内的选择屏幕取数介绍. 通过给LOW 和 HIGH 设定对应的值 跳出对应的选择数据.
数据准备
1
2
3
4
5
|
tables : znametable1 . data : gs_data TYPE znametable1 . data : gt_Data TYPE TABLE of znametable1 . sELECT -OPTIONS : s_name for znametable1- name . SELECT -OPTIONS : s_age for znametable1-age . |
选择屏幕帮助
1
2
3
4
|
at SELECTION-SCREEN on VALUE-REQUEST FOR s_name-low . PERFORM f_Create_username . at SELECTION-SCREEN on VALUE-REQUEST FOR s_name-high . PERFORM f_Create_username . |
获取数据及调用函数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
FORM f_get_username . SELECT NAME AGE INTO CORRESPONDING FIELDS OF TABLE gt_Data FROM znametable1 . ENDFORM. *& ---------------------------------------------------------------------* *& Form f_Create_username *& ---------------------------------------------------------------------* *& text *& ---------------------------------------------------------------------* *& --> p1 text *& < -- p2 text *& ---------------------------------------------------------------------* FORM f_Create_username . CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' EXPORTING * DDIC_STRUCTURE = ' ' retfield = 'NAME' * PVALKEY = ' ' DYNPPROG = SY-REPID DYNPNR = SY-DYNNR DYNPROFIELD = 's_name-low' * STEPL = 0 * WINDOW_TITLE = * VALUE = ' ' VALUE_ORG = 'S' * MULTIPLE_CHOICE = ' ' * DISPLAY = ' ' * CALLBACK_PROGRAM = ' ' * CALLBACK_FORM = ' ' * CALLBACK_METHOD = * MARK_TAB = * IMPORTING " USER_RESET = 'S' tables value_tab = gt_Data * FIELD_TAB = * RETURN_TAB = * DYNPFLD_MAPPING = EXCEPTIONS PARAMETER_ERROR = 1 NO_VALUES_FOUND = 2 OTHERS = 3 . IF sy-subrc <> 0. * Implement suitable error handling here ENDIF. ENDFORM. |
结果
如图,在选择屏幕界面,我们自定义的选择帮助内容即可展示出来,对应的配置字段为内表数据,而接受数据为对应 retfield
的字段 ,本案例为 NAME 接受的字段 .
技术总结
本篇文章讲述的自定义选择帮助内容,常用的场景为ALV选择帮助自定义报表,更多关于SAP修改搜索帮助为自定数据集的资料请关注服务器之家其它相关文章!
原文链接:https://juejin.cn/post/7171453148723970078