Select operator with offset in ABAP

I am trying to use this SELECT statement in ABAP:

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

but i can't use offset for dbtab column. How can I solve this problem?

I am trying to avoid a loop like

  SELECT DISTINCT * FROM  dbtab
     WHERE  field2        IN s_field2.
       IF field1+7(16)  IN s_field1
           ...
       endif.
  endselect.
+4
source share
2 answers

You cannot use offset in OPEN SQL.

I would recommend making SELECT into the internal table and iterate over it like that.

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.

On the other hand, I would also define the internal table as SORTED or HASHED, or if you prefer to use SORT itab in the field that you do for comparison. Field characters can also be an alternative.

Hope this helps.

+5
source

, , EXECUTE_SQL, , Oracle, SQL OPEN SQL. , , . , .

LIKE, , , %: WHERE field 1 LIKE '%search_partial%' OR field1 LIKE ...

, , , - .

+1

Source: https://habr.com/ru/post/1624470/


All Articles