在EBS中手电筒的运用是很平常的事了,但是在写代码的过程中有一句代码::parameter.G_query_find 很是让人朦胧。
其实参数:parameter.G_query_find的作用是决定查询范围的一个开关。
当:parameter.G_query_find:= 'TRUE'时,系统会根据我们在触发器 pre-query 中所定义的条件去查询。
当:parameter.G_query_find:= 'FALSE'时,系统就会跳过查询条件,进而查询出全部记录。
理解这个原理就明白手电筒使用过程中的触发器顺序和这个参数的作用。
操作 触发器 相关代码 备注 点击手电筒 QUERY_FIND app_find.query_find 弹出查找窗体 ('MAIN', 'QUERY_FIND', 'QUERY_FIND') 点击查找按钮 WHEN-BUTTON-PRESS (1):parameter.G_query_find := 'TRUE' (2)app_find.find('your blockname here') (3):parameter.G_query_find := 'FALSE'
主要的隐藏点就在于WHEN-BUTTON-PRCESS 触发器中的代码从(2)到(3)过程中它会调用pre-query触发器。
这下我们就比较清楚了,当点了查找按钮,正如(1)所示参数parameter.G_query_find 被设置为'TRUE',接着调用pre-query,在触发器pre-query中IF的满足条件是parameter.G_query_find='TRUE',所以系统会按查询条件进行查询结果。