介绍SAP预留函数创建搜索帮助

时间:2021-05-21 04:36:55

紧接上一节介绍的SAP预定义的出口函数F4IF_SHLP_EXIT_EXAMPLE创建搜索帮助,

该函数主要有两个部分:

Changing接口的参数属性如下:

SHLP:搜索帮助的基础描述,包括搜索帮助的名称、类型以及内部信息等。

以下:1)INTERFACE:会列出该搜索帮助中包含哪些字段及当前使用的是哪个字段。

        2)FIELDDESCR:会列出包含字段的具体属性,如字段名称、类型、长度等

        3)FIELDPROP:搜索帮助所定义字段的参数设置,如:EXP/IMP/SPos等

        4)SELOPT:当搜索帮助中有输入值时会在该表中显示

CALLCONTORL:包含当前帮助的结构信息,搜索帮助的时间点都由该结构中的字段CALLCONTORL-STEP来控制。在输入帮助处理期间,定义了许多时间点,每一个定义了一个重要的输入帮助处理操作的起始时间。所包含控制时间点具体参数如下:

1)SELONE:可在集合搜索帮助中使用在时间点。一个集合搜索往往包含多个基本搜索,改时间点发生在选择一个基本搜索帮助之前,此时的搜索帮助信息已经被存放在内表SHLP_TAB中,通过对内标SHLP_TAB数据的控制来限制该集合搜索中是否能使用其他的基本搜索帮助。

2)PRESEL1:选择一个基本搜索帮助后,在该时间上、该搜索帮助(类型SHLP_DESR_T)的定义内就不再将表INTERFACE复制到表SELOPT中了,这意味着在这里仍然可以影响搜索帮助到屏幕的附件(表INTERFACE包含关于如何将屏幕字段和搜索帮助变量关联上的信息)

3)PRESEL:该时间点可以用于实现搜索帮助输入条件中某些字段预定义的控制

4)SELECT:选值之前,如果不想使用默认选择,那么就应该用搜索帮助推出该时间点,将DISP设置成下一个时间点

5)DISP:该时间点用于控制搜索帮助的输出结果。例如,在输出搜索结果时对用户检查权限,删除搜索结果中未能授权的数据

6)RETURN:(一般作为下一个时间点的返回值)如果在一个搜索帮助退出中选择一个单独命中,那么就将RETURN时间点作为下一步返回。如果对事物处理序列的控制取决于以选中的值(典型例子:设置SET/GET参量),那么在该时间点上改变F4的流程就是有意义的。然后,应该注意到,该处理将取决于一个值是手工输入的还是用输入帮助的。

7)RETTOP:只有当输入帮助由集合搜索帮助控制时,才转到该时间点。它直接跟着时间点RETURN。然而,集合搜索帮助的搜索帮助推出是在时间点RETTOP上调用的。

8)EXIT(仅为了下一个时间点返回)

如果用户有机会在一个搜索帮助退出中终止对话,那么EXIT时间点应作为下一步返回

9)CREATE:仅当用户选择函数”创建新值“时候,才访问create时间点,且当赋予控制参数CALLCONTORL所对应的结构体的字段CUSTTAB为非空值时,该时间点才是有效的。正常情况下,在那里输入将要维护的表(定制)的名字,CREATE之后,返回的下一步应该是SELECT,这样才能选择新输入的值,并且随后显示。

10)APP1,APP2,APP3:如果带有函数模块F4UT_LIST_EXIT的命中列表包含了更深一层的按钮,那么也会介入这些时间点。当用户单击相应的按钮时候就能访问这些时间点。

注意:如果F4帮助是一个集合搜索帮助,那么就在时间点SELONE和RETTOP上调用集合搜索帮助的出口。(RETTOP仅当用户选择一个值)。在所有的其他时间点上,调用以选择的元素搜索帮助的出口。

如果F4帮助是一个基本搜索帮助,不执行RETTOP时间点,在时间点SELONE(当时)调用元素搜索帮助的出口,其他准备工作都在时间点PRESEL1上执行。

TABLES接口中的参数如下:

SHLP_TAB:替代基本搜索帮助的清单,与Changing接口中的SHLP_DESCR参数基本类似。

RECORD_TAB:列出搜索帮助的结果数据,结果会回执在操作搜索帮助的字段上。

参照F4IF_SHLP_EXIT_EXAMPLE的接口创建自定义函数。RFC中首先需要创建一个内表用于存储抓取的自定义数据,所定义的内标必须包含搜索帮助参数中EXP所定义的字段,最后通过函数F4UT_RESULTS_MAP回执查询结果,最后调用DISP时间点将查询的参数显示在列表中。

上节例中:仅需要调用SELECT这个时间点来进行数学的查询输出。具体代码见上小节