选择带有偏移量的语句?

标签 select abap opensql

我正在尝试在 ABAP 中使用这个 SELECT 语句:

  SELECT DISTINCT * FROM  dbtab
     INTO CORRESPONDING FIELDS OF TABLE itab
     WHERE  field1+7(16)  IN s_field1
     AND    field2        IN s_field2.

但我不能对 dbtab 列使用偏移量。
我怎么解决这个问题?

我试图避免循环
  SELECT DISTINCT * FROM  dbtab
     WHERE  field2        IN s_field2.
       IF field1+7(16)  IN s_field1
           ...
       endif.
  endselect.

最佳答案

您不能在 OPEN SQL 中使用偏移量。

我建议将 SELECT 放入一个内部表并像这样循环它。

SELECT DISTINCT * FROM dbtab
INTO CORRESPONDING FIELDS OF TABLE itab
WHERE field2 IN s_field2.

LOOP AT dbtab into wa_itab.
  IF wa_itab-field1+7(16) IN s_field1
    ...
  ENDIF.
ENDLOOP.

另一方面,我还会将内部表定义为 SORTED 或 HASHED,或者如果您更喜欢尝试按进行比较的字段对 itab 进行排序。字段符号也可以是一种替代方法。

希望能帮助到你。

关于选择带有偏移量的语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34815189/

相关文章:

mysql - 如何排除列出现在结果中?

php - array_unique 不适用于 PHP?

SQL "GROUP BY"问题

currency - 获取货币字段符号引用的货币符号

abap - 下载功能可以不显示对话框吗

JQuery ul li 选择列表

ABAP 对象 - 访问类的消息类?

abap - 手动设置 SELECT-OPTIONS?

abap - 如何访问用于 FOR ALL ENTRIES 语句的表中的数据?

subquery - FOR ALL ENTRIES 中的嵌套子查询