当 VBELN 查询时,SELECT 没有 return 行

SELECT does not return rows when queried by VBELN

我正在尝试从内部 table 在 alv 中显示 table,其中行是从存储在数据库中的 table 添加的。如果没有 where 条件,我会在 alv 中看到行,但在 select 语句中有 where 条件时,没有行被 returned.

代码如下:

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 条件使得它没有 return 任何行吗?如何解决?

vbeln 是一个有十个位置的字段,并使用 ALPHA 转换例程(请参阅数据元素后面的域)。这意味着该值用前导零填充(只要它只包含数字)。由于这是一个字符类型字段,您还必须使用撇号进行比较。所以,WHERE 条件必须是这样的:

WHERE vbeln GT '0000004500'
  AND vbeln LT '0000006000'

你可以尝试使用范围;

首次使用;

数据:r_vbeln vbeln 的类型范围。

数据:s_vbeln LIKE 行 r_vbeln.

s_vbeln-选项='BT'.

s_vbeln-符号='I'.

s_vbeln-low = '0000004501'.

s_vbeln-high = '0000005999'.

将 s_vbeln 附加到 r_vbeln。

SELECT条件; vbeln 在 r_vbeln.

第二次使用;

数据:r_vbeln vbeln 的类型范围。

数据:s_vbeln LIKE 行 r_vbeln.

s_vbeln-选项='GT'.

s_vbeln-符号='I'.

s_vbeln-low = '0000004500'.

将 s_vbeln 附加到 r_vbeln。

s_vbeln-选项='LT'.

s_vbeln-符号='I'.

s_vbeln-low = '0000006000'.

将 s_vbeln 附加到 r_vbeln。

SELECT条件; vbeln 在 r_vbeln.