本文实例用的系统环境:
本文的主要内容:
- 什么是Smart Value Help
- Smart Value Help的过去和现在,现在指在Note 2366163 - Smart Value Help Enhancements之后
- 新的Smart Value Help的实现方法
- 针对“Description”这类Value Help毫无意义的字段,如果打开Last 5 Entries的功能。
本文的附赠内容:
- 高质量的Incident的内容
- Value Help的种类
- 如何让Smart Value Help按多列显示
- SVH相关的一些小贴士
做support的时候经常能遇到让我们举手夸赞的客户,报上来的incident质量非常高。比如最近这位客户,报上来的问题包括
- 重现问题的步骤,截屏
- 和没有这个问题的老系统的行为比较,程序比较
- Debug的细节,在debug里面manual改变程序走向之后的效果
- 指出是哪个note带来的程序变化引发的这个问题
遇到这样的问题,我们基本就可以收拾收拾行李走人了,严肃点说就是直接forward给开发。严谨点就是抱着崇敬的心情在内部系统重现一下,debug一下,学习一下,然后还是forward给开发。这次的这个问题,我也是这样的,怀着崇敬之情,在重现和debug之后转给了开发。然后倒了杯白开水静下心来,打算揪着这条藤摸一下瓜,学习一下。
客户发现的这个bug的罪魁祸首是
Note 2366163 - Smart Value Help Enhancements(放心这个bug已经有新
note 2620532修正了)。但是其实这个note引入了一个小小的很好的新功能,拓展了Smart Value Help的现状。Smart Value Help是什么?在一个input field里面敲字符的时候,下面会自动提示两种,一种是最近输入的五个值Last 5 Entries,另一种是根据输入的字符在可选项里面搜索返回符合的值SVH Search Result。
那么
Note 2366163 增加了什么功能呢?
首先让我们明确一个字段的Value Help,下面这个按钮
它包含两种情况:
- DDIC Search Help
- Advanced Search Help
举例,就拿创建Corporate Account企业客户为例,这里的Country字段使用的就是DDIC Search Help,后台是在V getter里面定义了check table或者search help。这里的Employee字段使用的是Advanced Search Help,后台在V getter里面定义了一个navigation,打开一个相对比较复杂的搜索页面。
在
Note 2366163以前呢,DDIC Search Help支持Last 5 Entries和SVH Search Result这两个功能,但是Advanced Search Help仅支持Last 5 Entries。而且没有这个Value Help按钮的字段这两个功能都不支持。
Note 2366163则为以上“但是”之后描述的现象提供了解决的可能性。
在
Note 2366163之前,V getter里面我们可以定义以下的descriptor:
- F4 Help descriptor
- 这个descriptor定义的就是DDIC Search Help,它可以告诉系统用哪个search help,或者用哪个字段里面的check table。还能定义输入和输出字段。
- Navigation Descriptor
- 这个descriptor定义的就是Advanced Search Help,它告诉系统用哪个outbound plug指向某个复杂的bsp搜索页面。
在
Note 2366163之后,V getter里面我们除了上述descriptor以外我们还能定义以下:
- Smart Value Help descriptor
- 这个descriptor仅仅定义在字段中敲字符引发的Search Result功能应该从哪个search help中搜索,它也成为在没有定义F4 Help descriptor的时候需要拥有Last 5 Entries的前提条件。
- Value help mixed descriptor
- 这个descriptor可以分别指定Smart Value Help的descriptor和Value Help也就是那个按钮的descriptor。然后前面提到的F4 Help descriptor和Navigation Descriptor都可以作为Value Help的descriptor。
描述太多容易看晕,上图
有了这个基础设施,只要增加V Getter的程序就可以让原先的Advance Search Value也能拥有SVH Search Result。也能让没有Value Help按钮的字段拥有Last 5 Entries和SVH Search Result功能。
Note 2366163的附件里面很清晰的列举了本note前和note后的不同的V Getter定义方法。
我尝试搜了一下,目前为止貌似还没有SAP的Application开发启用了这个单独的Smart Value Help descriptor。没准这个小功能对您自己的enhancement会是很有用的?
这是我enhance了创建Corporate Account企业客户页面上Employee这个字段的结果。请忽略我把Country的search help付给employee这件事情哦,这样或许可以更凸显这两个descriptor可以分开定义这个事实吧??
我也同时尝试enhance了Search Term这个没有value help的字段,请再次忽略盲目使用了Country的search help这件事情。
细心的读者可能会发现这两个Smart Value Help表现形式是不同的,那只是因为我拷贝了标准的search help,然后勾选了以下这两个选项。这个功能早在
Note 2366163之前就有了这里不再赘述了。
这里我用了Search Term作为例子,这个可能会引发一种需求。那就是针对类似于Search Term或者Description的字段,定义Value Help是毫无意义的。但是能不能仅仅使用Last 5 Entries功能呢?这个功能还是有用的。
使用以上的机制就能实现了,我想到的就是定义一个search help但是指向一个永远为空的表格,也就是搜索永远不会有返回。那么就能实现针对这类字段仅仅打开Last 5 Entries的功能了。 ?
另外还有几个小贴士:
- 如果您使用rapid application或者AET定义新的字段,并且直接在定义的界面上提供了check table或者search help,您不需要额外定义V Getter,系统会自动提供value help和SVH;
- SVH在页面元素render的时候就被内嵌到了html当中,在敲击字符的时候会有http request发往后台,使用HTTPWatch或者F12等工具能捕捉到;
- Render SVH的页面元素的程序在CL_THTMLB_INPUTFIELD IF_BSP_ELEMENT~DO_AT_BEGINNING当中;
- Trouble shooting的话可以有两个方向,一SVH页面元素是否成功生成;二SVH触发的http request是否被后台正确处理;