在ABAP中选择带偏移量的语句

Dar*_*rko 4 sap abap select offset

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

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

但我不能使用offset作为dbtab列.我怎么解决这个问题?

我试图避免像循环一样

  SELECT DISTINCT * FROM  dbtab
     WHERE  field2        IN s_field2.
       IF field1+7(16)  IN s_field1
           ...
       endif.
  endselect.
Run Code Online (Sandbox Code Playgroud)

Nel*_*nda 5

您不能在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.
Run Code Online (Sandbox Code Playgroud)

另一方面,我还将内部表定义为SORTED或HASHED,或者如果您更喜欢尝试通过您进行比较的字段来排序itab.场符号也可以是另一种选择.

希望能帮助到你.