目录

SAP入门技术分享六搜索帮助

SAP入门技术分享六:搜索帮助

搜索帮助

1.概要

搜索帮助:又称输入帮助(Input Help),是在屏幕画面上为用户提供查询输入值的SAP标准功能。

(1)利用ABAP数据字典的搜索帮助

在SE11创建搜索帮助后分配给表字段,画面的结构字段参照表字段生成,即可以继承搜索帮助的功能。

若表字段中不存在搜索帮助,则Check Table的数据与域的固定值会连接到搜索帮助中。

DATS与TIMS类型称做静态搜索帮助,以日历和时间结构为基准。

(2)利用画面的搜索帮助

在屏幕制作器中,给个别字段直接分配输入帮助的值,或者在画面的PAI事件上限制可输入的值。

https://i-blog.csdnimg.cn/blog_migrate/0465824115d9232b38e6ae322c262b66.png

https://i-blog.csdnimg.cn/blog_migrate/47025948ed8634dba3cc1ad58b60dfe2.png

(3)Dialog程序中的搜索帮助

用户在画面字段上按F4时,在POV( PROCESS ON VALUE-REQUEST )事件中调用Dialog模块将输入帮助显示到画面上。输入帮助使用检索帮助对象。

(4)报表选择屏幕PARAMETERS的搜索帮助

使用MATCHCODE命令来给PARAMETERS追加搜索帮助,代码如下:

https://i-blog.csdnimg.cn/blog_migrate/5baeafda4b7c2076ea9214d1bf5b641c.png

https://i-blog.csdnimg.cn/blog_migrate/93cc41ee81cd8a3a9be07635f71547ae.png

(5)搜索帮助类型

搜索帮助分为以下两种类型:基本搜索帮助和集合搜索帮助。

基本搜索帮助:由一个Tab标签页构成利用选择方法( Selection Method )的数据。

集合搜索帮助:由多个Tab标签页构成由基本搜索帮助组成。

2.创建搜索帮助

(1)基本搜索帮助的属性

https://i-blog.csdnimg.cn/blog_migrate/35e1bb9b3a3546a6960450a0a3fc1dc2.png

(2)选择方法

搜索帮助是在执行时从数据库表中读取数据构成值列表。此时使用的数据库对象称为选择方法(Selection Method)。可以用数据库表与视图作为选择方法,但维护视图却不能。

当需要数据在一个表中存在时,在选择方法中选择相应表即可。

当需要数据在多个表中存在时,表数据要使用以外部键(Foreign Key)连接的视图。

https://i-blog.csdnimg.cn/blog_migrate/cf00beab7dc5eaf85d4ffa387f6c202f.png

(3)对话框类型

https://i-blog.csdnimg.cn/blog_migrate/1b80fad3138dffc68ad5e3f89023aa31.png

https://i-blog.csdnimg.cn/blog_migrate/38d41d8ef33047e1c81cff81bb256227.png

(4)创建搜索帮助名-创建

在SE11中输入搜索帮助名字后点创建。

https://i-blog.csdnimg.cn/blog_migrate/573b8bbd0a0800baf34513a1eaf4212c.png

(5)选择搜索帮助类型-创建

https://i-blog.csdnimg.cn/blog_migrate/d90d7e0710175d6cd84d07235e9c4034.png

https://i-blog.csdnimg.cn/blog_migrate/d8c7f828defa8aab6a6ff9cffce5be7c.png

(6)选择表或视图-创建

输入简短描述,然后在定义->数据收集->选择方法中选择表或视图。

https://i-blog.csdnimg.cn/blog_migrate/931c216f6ea8822df572be3ce9ef48c5.png

https://i-blog.csdnimg.cn/blog_migrate/80e6d67adc55ffcc78a2967f3864e4f7.png

(7)激活搜索帮助-创建

创建完参数后激活搜索帮助即可。

(8)执行搜索帮助–创建

测试搜索帮助,若要实际应用需要链接到画面字段上。由传入参数设置的字段(EMP_NO)称做Context字段。 https://i-blog.csdnimg.cn/blog_migrate/959f7c4a6d6023b2149707ddf44d38bb.png

https://i-blog.csdnimg.cn/blog_migrate/5c6079c522d4c1e3892e1960c51fa38b.png

(9)输入参数值

可以输入参数值进行测试。

https://i-blog.csdnimg.cn/blog_migrate/cd8634ce42091696e4d142e8311ca365.png

https://i-blog.csdnimg.cn/blog_migrate/e4b6a672299a1ad83ca14d12685ee21b.png

(10)显示结果

https://i-blog.csdnimg.cn/blog_migrate/86da1709b07f25a5616583ee334b360a.png

(11)输入和输出参数

输入参数:具有Input Template的流程所使用的Context信息的参数,作为限制数据的条件使用,输入参数也可以作为输出参数。

输出参数:选择相应行双击后,可以看到选择的输入参数显示在画面上,称为输出(传出)参数。

3.搜索帮助的应用

检索帮助可以用下列三种方法追加到字段上:

https://i-blog.csdnimg.cn/blog_migrate/a3695f3550250fa916d4de63425d1cb5.png

(1)在数据元素中追加搜索帮助

在数据元素中可追加搜索帮助,如下:

https://i-blog.csdnimg.cn/blog_migrate/68f5b5e908830473bb5d0b3b811eb4f3.png

https://i-blog.csdnimg.cn/blog_migrate/496bea9a82ee3c9319354bd51dd16a28.png

(2)表字段中追加搜索帮助

在表字段中追加搜索帮助,则参照此字段的所有画面字段上都连接到搜索帮助。将输入参数分配到表字段中,则会限制输入值;将输出参数分配到表字段中,则会赋到画面字段上。

https://i-blog.csdnimg.cn/blog_migrate/287d5202435dc1c621e080a2d8d1f0eb.png

https://i-blog.csdnimg.cn/blog_migrate/343d20fcd7a967b31ad38c5e299b428d.png

https://i-blog.csdnimg.cn/blog_migrate/60b47e46049a95d8ca16aff29b2d85be.png

https://i-blog.csdnimg.cn/blog_migrate/63945c149ce708896328117d1a4729db.png

(3)在画面字段上追加搜索帮助

利用屏幕制作器可以直接给画面字段分配搜索帮助。如果需要在多个画面上使用类似的搜索帮助,则需要在表字段中追加搜索帮助后画面字段参照表属性即可。

https://i-blog.csdnimg.cn/blog_migrate/9dc550f8d11e1713bd80c3b77b6dc369.png

多个方法同时存在的顺序:

第一个:追加到画面字段上的搜索帮助;

第二个:追加到表字段上的搜索帮助;

第三个:Check表的输入帮助功能;

第四个:追加到数据元素上的搜索帮助;

第五个:域中的固定值;

第六个:Time或者Calendar Help(例如,日期类型-DAT字段)。

4.搜索帮助扩展

搜索帮助扩展( Search Help Exit )中可以指定函数修改搜索帮助的查询条件和结果数据。

(1)新建函数

在Changing和Tables标签页输入参数,如下:

https://i-blog.csdnimg.cn/blog_migrate/eebb3c238e46cf9acd71aa98906a0bdb.png

(2)在源代码中追加相关代码

https://i-blog.csdnimg.cn/blog_migrate/52818495b3f211345f3148ba73973e27.png

Record_tab是以String形式存储搜索帮助的查询结果的内表。

Shlp_tab是存储搜索帮助查询条件的内表。

(3)为搜索帮助指定搜索帮助扩展函数

https://i-blog.csdnimg.cn/blog_migrate/f1806509edecd8dbf18ca1474ac3c7a3.png

https://i-blog.csdnimg.cn/blog_migrate/b50f266eead9d154520e432907af8960.png

5.集合搜索帮助

集合搜索帮助( Collection Search Help )由多个搜索帮助构成,用户可以利用集合搜索帮助的多个路径选择自己所需的数据。

https://i-blog.csdnimg.cn/blog_migrate/a9ddfe93e950529932489eb83f3eeb1f.png

下面的例子是为MM03设置的搜索帮助MAT1(标准):

https://i-blog.csdnimg.cn/blog_migrate/67800b77e80ebb0c899417de3640e13d.png

https://i-blog.csdnimg.cn/blog_migrate/08d71f42628ab5338313796b802f3e78.png

下面是如何创建集合搜索帮助:

https://i-blog.csdnimg.cn/blog_migrate/ae6d283d47f74499b82a9adc003f6b66.png

https://i-blog.csdnimg.cn/blog_migrate/20242c1c233b53df19f276987184d668.png

6.模块池程序中的搜索帮助

在模块池程序中利用函数构成搜索帮助,可以修改查询条件和查询结果数据,有两种方法可以建立搜索帮助。

https://i-blog.csdnimg.cn/blog_migrate/51caa21d3c691a4cd7f7bcce16771482.png

(1)利用ABAP数据字典表构成搜索帮助

利用F4IF_FIELD_VALUE_REQUEST函数构成搜索帮助,创建程序后在画面上追加PROCESS ON VALUE-REQUEST事件即可追加搜索帮助。

第一步:创建程序后,单击右键选择创建->屏幕

https://i-blog.csdnimg.cn/blog_migrate/db509b96f829d5631ae2f8265fb84ae8.png

https://i-blog.csdnimg.cn/blog_migrate/25aae24fbb7631fb1b56c350e4ee7811.png

第二步:输入屏幕编号然后确定

https://i-blog.csdnimg.cn/blog_migrate/7a22a4eb93b62b11cc873469986ebe25.png

第三步:输入描述生成新屏幕画面并单击格式按钮生成屏幕制作器

https://i-blog.csdnimg.cn/blog_migrate/2df9dbf919cd1211bc2e56c16f6d5d37.png

https://i-blog.csdnimg.cn/blog_migrate/4bab0567246a0a6e90008682a1540745.png

第四步:给屏幕画面追加字段,点击字典/程序字段窗口图标

https://i-blog.csdnimg.cn/blog_migrate/c24187747251a5bedc2f08b3d92bdfb4.png

第五步:输入数据字典表后选择从字典获取,则可以得到表字段列表进行选取

https://i-blog.csdnimg.cn/blog_migrate/cd75dc19906b88fd127b1b60a5ed127e.png

https://i-blog.csdnimg.cn/blog_migrate/7dfb31420cd7fc32988f5c2bd4bd142c.png

第六步:在画面的适当位置上设置字段,然后激活

https://i-blog.csdnimg.cn/blog_migrate/d3bddec9528a02cc371ebfb24ff72187.png

第七步:在逻辑流选项卡事件中追加当选择行政区划字段时调用搜索帮助的代码

https://i-blog.csdnimg.cn/blog_migrate/d1f9c9216b61de4e1461d46d44d05c4f.png

https://i-blog.csdnimg.cn/blog_migrate/066b26132cfad449428d780ed8931623.png

第八步:双击F4-ZGBADMINAREA创建模块

https://i-blog.csdnimg.cn/blog_migrate/40cb19382bc9c4f0c6934851ea09fc70.png

第九步:进行建立PAI模块的子例程选择

https://i-blog.csdnimg.cn/blog_migrate/44fc4a11f82925a283bd8819cdc10e57.png

第十步:调用函数F4IF_FIELD_VALUE_REQUEST

函数F4IF_FIELD_VALUE_REQUEST利用表数据创建搜索帮助,若不设置搜索帮助参数,则在tabname = ‘表名’语句中会显示表的fieldname参数对应的表的字段设置的搜索帮助;若不使用字段中默认的搜索帮助,则需要设置搜索帮助参数searchhelp;如果只是纯粹使用表中存在的字段数据构成输入帮助,则注释掉搜索帮助参数即可。

Dynpnr参数时返回画面的字段,sy-dynnr是存储现画面编号的系统变量。

搜索帮助的值列表存储在RETURN_TAB参数中。

https://i-blog.csdnimg.cn/blog_migrate/bca18ed0345b7bce863d8e5d0ff9ebd1.png

例子:给表ZHRT0027建一个搜索帮助Z_HR_027

https://i-blog.csdnimg.cn/blog_migrate/9885784a325e4824bae49c0d1ed91703.png

https://i-blog.csdnimg.cn/blog_migrate/3a819c369e52da00b9422350811e1c80.png

(2)利用内表构成搜索帮助

利用F4IF_FIELD_VALUE_REQUEST函数,把内表的内容追加到Possible Entry上。如下GT_DATA是Possible Entry中显示的内表,GT_RTNTAB是存储在搜索帮助中选择的行内表。

https://i-blog.csdnimg.cn/blog_migrate/c3fe04fec15264c91987aaa8b0318b42.png ![在这里插入图片描述](

https://i-blog.csdnimg.cn/blog_migrate/c43b66a6b069f0b5b24483f2e938f5f2.png

https://i-blog.csdnimg.cn/blog_migrate/7948bcc518d8f8e1d74a49bd9b419c1f.png