??????这篇文章给大家介绍一下SAP 中搜索帮助的几种实现方式,搜索帮助是我们SAP最常用的功能之一,我们系统有大量标准的,我们也可以为自开发程序创建独有的,搜索帮助在我们系统中的快捷键是F4,可以快速为我们选择条件填入数据。
????????搜索帮助呢是要依靠Data element来完成的,而Data element呢又是依靠Domain完成的,所以要实现搜索帮助我们在创建透明表参考字段的时候一定要创建Data element。
a.
当前情况???????????????????????1.透明表字段参考
????????????????????????????当前我系统中有这样一个透明表,可以看到我的所有参考字段都没有创建Data element,都是直接输入数据类型参考的,这样的做法是不太好的会导致SE16N查表的时候字段名不好分别,而且我们也不能对这些参考类型的属性进行修改因为这些都是SAP标准的。所以接下来我们调整这个透明表的部分参考类型要自己创建 Domain 和 Data element。
b.
创建 Domain???????????????????????1.SE11创建
????????????????????????????根据编号一步一步创建即可。
c.
创建 Data element???????????????????????1.SE11参考Domain创建
????????????????????????????记得创建的时候名称都必须Z或者Y开头。
d.
修改透明表字段的参考???????????????????????1.SE11修改
????????????????????????????将性别字段参考我们刚才创建的Data element
a.
Domain Value Range???????????????????????Domain Value Range 只适合一些固定值的使用,例如性别选择不是男就是女,它是很不灵活不能动态的实现搜索帮助,好处就是操作简便,易于实现。还有一点就是 PARAMETERS
声明的选择屏幕并且该 DOMAIN 具有值范围 Value Range
的设置,系统会自动应用该值范围。如果是 SELECT-OPTIONS
系统并不会自动应用,如果必须使用 SELECT-OPTIONS
那么就需要显式调用函数 F4IF_INT_TABLE_VALUE_REQUEST
文章后面会提到的。
???????????????????????1.生成选择屏幕
????????????????????????????我们参考刚才透明表的ZSEX
字段用代码生成一个选择框。现在我们点击这个搜索帮助是出不来数据的。
???????????????????????2.实现搜索帮助
????????????????????????????可以直接去修改 Domain 对应的 Data element 也可以在透明表参考的 Data element 双击再双击参考的 Domain 进入下图进行修改。
???????????????????????3.运行效果
????????????????????????????现在点击小方块后会出来搜索帮助,这就是使用Domain Value Range实现的搜索帮助。
b.
Check Table 外键???????????????????????1.表数据当前情况
????????????????????????????ZDIALOGSCHOOL
是学生表,ZSCHOOL1
是学校表,学生表的ZSCHOOL
字段是对应学校表的ZSH_ID
就能找到对应的学校名称,这是这两个表的关系也很简单。对应的字段要保持数据参考类型一致。
???????????????????????2.生成选择屏幕
????????????????????????????我们参考刚才学生表的ZSCHOOL
字段用代码生成一个选择框。现在我们点击这个输入框是没什么反应的。
???????????????????????3.SE11设置Check Table 外键
????????????????????????????设置关联外键的时候要把显示模式改为修改模式不然是没法设置关联外键的。
????????????????????????????外键参数设置的关联效果
???????????????????????4.运行效果
????????????????????????????如果设置外键的操作在用代码生成选择屏幕之后
,那么可能运行程序不起效果,我们可以先将生成选择屏幕这段代码注释再激活程序并运行,然后再将这段代码解除注释再激活就可以了,这可能是SAP系统的缓存没有及时更新过来。
c.
SE11创建Search Help???????????????????????Search Help 的目的是在数据库中的某一个字段上设置搜索帮助,比如物料这个字段MATNR在采购这块是这些物料编码,在销售那边还是这些物料编码。在财务上还是这些物料编码。但是这些物料字段是存在于不同数据表中但是搜索帮助内容结果是一样的,我们如果实现给不同表字段设置出返回相同结果的搜索帮助,这里就是使用Data element来实现的,SAP系统也是就是这样实现的,这些不同表中的物料字段MATNR都参考这个Data element,然后这些搜索帮助就能返回同样的数据了。但其实这样的效果最终也属于是静态的。我们后面还会讲到根据内表动态设置搜索帮助。
???????????????????????1.新增内容
????????????????????????????我给ZSCHOOL1增加了一个ADD字段,2个字段不够演示。并且把学生表 ZDIALOGSCHOOL 的 ZSCHOOL 字段的参考修改为Data element 像我们之前那样创建就行。这里不解释详细步骤。
????????????????????????????a.学校表增加ADD字段
????????????????????????????b.创建Domain
????????????????????????????c.创建Data element
????????????????????????????d.调整字段参考
???????????????????????2.创建 搜索帮助
????????????????????????????这里我们先创建单一型的,先根据下图编号描述进行创建,后续会详细解释某些参数作用。
???????????????????????3.关联 搜索帮助
????????????????????????????这里有一个点需要注意,搜索帮助的设置是有优先级的,外键设置的搜索帮助优先级大于我们创建关联的搜索帮助
,所以如果搜索帮助显示的是外键的效果就将这个外键搜索帮助删除了即可。
???????????????????????4.运行效果 以及代码生成的选择屏幕如何使用
????????????????????????????测试搜索帮助可以直接查表测试,如下图所示不用我们上面单独去生成选择屏幕。
????????????????????????????a.选择屏幕代码使用
????????????????????????????MATCHCODE OBJECT <搜索帮助名称>
????????????????????????????b.绘制控件使用关联使用
????????????????????????????在红框中输入我们 搜索帮助名称 即可
???????????????????????5.LPos参数作用
????????????????????????????LPos 参数是控制我们字段在弹框中排列的顺序的。
???????????????????????6.SPos参数作用
????????????????????????????SPos 参数是控制我们搜索帮助选择界面字段排列行顺序的。
???????????????????????7.EXP参数作用
????????????????????????????这个参数存在的意义是因为我们这一个搜索帮助可能会被多个 Data element 使用,如果是 ZSCHOOL 这个字段使用我就需要搜索帮助返回 ZSH_ID 值,如果是有一个叫 地址 的字段使用我就需要搜索帮助返回 ZSH_ADD 值。
???????????????????????8.SDis 与 Default value参数作用
????????????????????????????SDis这个参数是设置搜索帮助选择屏幕输入框是否可输入,Default value参数是设置默认值的。如果这两个都设置了那么搜索帮助就会返回固定条件的值了。设置默认值的时候数值都需要带上单引号。
????????????????????????????a.设置默认值
????????????????????????????这里需要注意 IMP 传入参数的优先级高于默认值的设置
,如果这两个同时设置可能会导致设置默认值失效。
????????????????????????????b.设置不可输入
???????????????????????9.IMP参数
????????????????????????????这里笔者也没太搞懂,只知道大概意思,后面彻底搞明白了我会补充回来,感谢理解。有知道的大姑可以评论一下。
d.
使用标准函数动态实现???????????????????????这里我们需要了解到Dialog程序中的另外一个事件PROCESS ON VALUE-REQUEST
它和PBO PAI 是相同级别的事件简称叫POV事件
也就是用来实现搜索帮助的。实现动态搜索帮助是通过标准函数F4IF_INT_TABLE_VALUE_REQUEST
来实现的,这个函数可以接收任意格式的内表。
???????????????????????1.绘制控件并设置事件
????????????????????????????我们简单绘制了一个输入框命名为ZSCHOOLFUN
并在屏幕逻辑流中加入 POV
事件。在此事件下使用 FIELD
关键字对我们刚才绘制的输入框进行监测并给出相应 MODULE
,z这样此时搜索帮助的按钮就已经有了。
????????????????????????????a.绘制输入框
????????????????????????????b.设置事件与侦测
????????????????????????????c.运行效果
????????????????????????????此时F4帮助的效果已经出来了但是点击之后是没有任何反应的,因为我们MODULE中没有写任何东西。
???????????????????????2.调用函数
????????????????????????????我们将此 F4help
这个 MODULE
创建在 I01
的包含程序中也就是 PAI
的一些事件中, gt_school01
这个内表已经在 PBO
层面取数过了。调用此函数要将红框中这些最基本参数设置,参数具体作用看注释即可。
???????????????????????3.运行效果
????????????????????????????双击后会返回 ZSCHOOL 列的值,如果需要返回其他字段值在函数中改 retfield
参数即可。
????????以上就是今天要讲的内容,本文仅仅简单介绍了SAP中搜索帮助的几种实现方式,感觉笔者讲的好对自己有帮助的还麻烦点个免费的赞赞制作不易谢谢谢谢!!!如果有说错或者不好的地方还望大家提出来见谅。感觉笔者写的好的别忘了关注点赞加评论哦,也欢迎大家一起来讨论。谢谢!