在SQL中通常可以在Select语句中使用文字,例如像这样
SELECT 'I', 'EQ', table.alev_uuid
FROM table
是否有机会在ABAP SQL查询中执行此操作?
我到目前为止尝试的是:
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标准那样工作。有人有任何建议吗?
从ABAP 7.5*开始,您可以使用主机变量来满足您的要求。
请定义 lv_i 和 lv_eq as char type。
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> st 开始。