当一个表有text table时,search help的selection method选择这个表时,会根据用户登录语言自动选择相应的text。Maintenance view不应当作为search help的selection method。但是由于database view使用的都是inner join,有些情况下需要使用out join,这时你可以创建help view来实现。如果search help的selection method是client dependent的,那么相应的possible values也是client dependent的。
Search help的dialog type决定了是否在显示hit list之前显示一个对话框来限制数据。你可以定义作为参数显示在dialog box上的特性,可以使用selection method中的除client field之外的任何字段以及text table中的非key字段作为参数。你可以通过分配parameter position来决定那个字段显示在那个dialog box上。这样的话你可以在两个dialog box上分配不同的parameter。Search help的parameter必须通过data element来定义。在定义search help的parameter时,你需要定义它是IMPORT还是EXPORT。同fm一样IMPORT和EXPORT PARAMETER构成了search help的interface。可以定义参数既不显示在restricting dialog box上也不显示在hit list dialog box上,这在业务场景在需要更新的字段在search help 的dialog box上不出现。Search field是一个特例,search field parameter是一个import parameter。Search field的辅助信息不应当被定义为import parameter。Search help描述了input help的flow。只有search help被分配到屏幕字段上时search help才起作用。这被称作search help attachment to the field。Attaching a search help影响了屏幕字段的行为模式,所以它也被看作屏幕字段定义的一部分。Screen field的语义属性和技术属性通常并不在input template中直接定义,在screen painter中只是让它指向一个dictionary field。Screen field从abap dictionary中来的到这些属性。这个原理同样应用于screen field的input help。在search help attachment中,从input help中取数据或者为input help提供数据的screen fields都要分配给input help的相应参数。Search field必须被分配给input help的export parameter。这个参数也最好是import parameter。没有input help attachment的fields也可能有input help,比如这个field的domain有fixed values等。在ABAP DICTIONARY中有三种方式可以attaching a search help:
l A search help可以attach到structure或table的一个字段上
l 如果field有一个check table,那么就会自动提供input help,check table的key field就会被显示,如果check table有text table那么text table的第一个字符型的非key field也会被显示。如果对这个Input help并不满意,可以对check table attach一个search help。那么使用这个table作为check table的field都可以使用这个search help。在作attachment时search help的interface和check table的key field必须一一对应。
l Field的语义属性和possible values是通过data element定义的,可以给data element attach一个search help。Attach时你必须定义一个EXPORT parameter。
给check table attach search help可以提高复用性,但是不能给search help额外的参数传递值。SAP SYTEM中,有多种方式可以实现input help,当一个field有多种方式时,下面是他的优先顺序:
你可以在screen field上自定义search help,但是这样的话就不具备复用性。可以在screen的POV事件中通过编程实现input help,可以通过FM:F4IF_FIELD_VALUE_REQUEST,F4IF_INT_TABLE_VALUE_REQUEST来实现对标准input help的调整,不过在使用之前应当首先考虑是否可以通过SEARCH HELP EXIT来实现。可以在screen painter中attach search help,但是这样与在ABAP DICTIONARY中相比具有一定的局限性。在hit list中context menu中的technical info可以看出你是用什么方式实现的input help。
Search help的selection method的数量比较大时,可能会对系统的性能产生影响,尤其当selection method是view来自于多个数据库表时,更要注意其对性能的影响。通过添加筛选条件可以提高系统性能,如果为筛选条件的字段添加索引效果更好。如果input help的数据不是很多你可以考虑对其做buffer。一个field可以有多个search path组成一个search help,它被称为collective search help。同elementary search help一样,collective search help也有IMPORT EXPORT PARAMETERS作为interface。它也像elementary search help一样可以被attach到fields,tables和elements。一个collective search help可以被include到另外一个collective search help当中。Collective search help中elementary search help以tab pages的形式体现,最后使用的search help在下次使用是active的。4.6以后你可以在standard search help中append customer elementary search help而不需要modification。SAP standard collective search help包含多个elementary search help,有些情况下某些elementary search help可能根本不需要,这种情况下可以通过append search help然后设置hidden flag来实现。
Search help for table的菜单路径netweaver与4.6c不同,netweaver在extras中,4.6c在goto中。