Литералы в ABAP OpenSQL?

в SQL обычно можно использовать литералы в инструкции select, например, как это

SELECT 'I', 'EQ', table.alev_uuid
  FROM table

есть ли шанс сделать это в SQL-запросе ABAP?

то что я попытался это:

DATA lt_aldf TYPE RANGE OF cam_pw_stat-alev_uuid .

DATA lv_i type string value 'I'.
DATA lv_eq type string value 'EQ'.


    SELECT lv_i lv_eq alev~alev_uuid
      FROM cam_tool AS tool INNER JOIN
           cam_alev AS alev ON tool~tool_uuid = alev~tool_uuid
      INTO TABLE lt_aldf
      WHERE tool_access = /a1sspc/if_cam_tool=>gc_tool_definition-hdb-class AND
            tool~active = abap_true AND
            alev~active = abap_true.

но он не работает, как в обычном стандарте SQL. У кого-нибудь есть советы?

2 ответов


начиная с ABAP 7.5*, вы можете использовать Хост-Переменных для достижения ваших требований.

пожалуйста, определить lv_i и lv_eq as Char тип.

data lv_i type char1 value 'I'.
data lv_eq type char2 value 'EQ'.

Я попытался с моим собственным, выбрав из T001. Он работает идеально.

data:
  lr_t_bukrs type range of bukrs.

select @lv_i, @lv_eq, bukrs from t001 into table @lr_t_bukrs up to 10 rows.

обновление от @Jagger,

вы также можете использовать константы в открытом SQL напрямую.

select 'I', 'EQ', bukrs from t001 into table @lr_t_bukrs up to 10 rows.

в ABAP SQL можно использовать строковые литералы в SELECT query следующим образом.

DATA : li_t001w TYPE STANDARD TABLE OF t001w.
DATA : lv_name TYPE name1 VALUE 'ST%'.

SELECT *
FROM t001w
INTO TABLE li_t001w
WHERE  name1 like lv_name.

выше пример вернет записи таблицы из T001w здесь name1 значение поля начинается с ST.