Литералы в 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.