我正在尝试从内部表中以alv形式显示表,在该表中添加行形成了存储在数据库中的表。没有where条件,我看到的行显示在alv中,但是select语句中有where条件,则不返回任何行。
代码如下:
REPORT ZSAM.
DATA: IT_1 TYPE STANDARD TABLE OF VBAK.
select vbeln audat netwr waerk vkorg vtweg
from VBAK
into corresponding fields of Table IT_1
where vbeln > 4500
and vbeln < 6000.
有什么想法为什么要使用where条件使其不返回任何行以及如何解决?
答案 0 :(得分:5)
vbeln是一个具有十个位置的字段,并使用ALPHA
转换例程(请参见数据元素后面的域)。这意味着该值将填充前导零(只要它仅包含数字)。由于这是字符类型字段,因此还必须使用撇号进行比较。因此,WHERE
条件必须是这样的:
WHERE vbeln GT '0000004500'
AND vbeln LT '0000006000'
答案 1 :(得分:-2)
您可以尝试使用范围;
首次使用;
数据:vbeln的r_vbeln类型范围。
数据:s_vbeln,就像r_vbeln的行。
s_vbeln-option ='BT'。
s_vbeln-sign ='I'。
s_vbeln-low ='0000004501'。
s_vbeln-high ='0000005999'。
将s_vbeln附加到r_vbeln。
选择条件; 在r_vbeln中的vbeln。
第二用法;
数据:vbeln的r_vbeln类型范围。
数据:s_vbeln,就像r_vbeln的行。
s_vbeln-option ='GT'。
s_vbeln-sign ='I'。
s_vbeln-low ='0000004500'。
将s_vbeln附加到r_vbeln。
s_vbeln-option ='LT'。
s_vbeln-sign ='I'。
s_vbeln-low ='0000006000'。
将s_vbeln附加到r_vbeln。
选择条件; 在r_vbeln中的vbeln。