select语句中between和in的区别
如有转载请注明出处:http://blog.csdn.net/donkey2004112103/archive/2009/05/03/4146114.aspx abap中select语句里有几个需要注意的地方。如果要让选择的结果在某一个范围之内的话可以用between和in这两个关键字。大多数情况下二者的反映都是一样的,但是如果为空的情况就不一样了。如下: WHERE vbeln BETWEEN pa_vb_s AND pa_vb_e. 他们的定义如下: SELECT-OPTIONS pa_vb FOR vbrk-vbeln. PARAMETERS: pa_vb_s TYPE vbeln, 如果他们都为空的话,between会限制select语句让它一条记录都无法选出来,但是in的话则相反,这个限制条件不会起任何作用,会选择出所有的记录。这是二者最大的区别。 但是有一个小小的陷阱,ranges变量和select-options感觉上时相同的。但是在用select语句的时候表现会不同。代码如下: PARAMETERS: pa_vb_s TYPE vbeln, 此时如果用刚才的select语句用in去限制的话,也会一条都选不出来!这里起初不明白为什么会这样,跟踪程序发现就在append这句话。如果用selct-options这句,在选择框里什么都不填的话,那么select-options这个ragnes变量里面是空值,就是内表记录数是0!相当于没有append。但是我们自定义ragnes变量的时候会append空值,即使没有输入。这样就和between的功效一样了。要想和selct-options的作用一样这样写就可以了。 IF PA_VB_S IS NOT INITIAL or PA_VB_E IS NOT INITIAL. 全部测试代码如下: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |