我正在尝试在 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/