在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标准那样工作。有没有人有任何建议?
答案 0 :(得分:6)
从ABAP 7.5 *开始,您可以使用Host Variables来满足您的要求。
请将 lv_i 和 lv_eq 定义为字符类型。
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更新,
您也可以直接在OPEN SQL中使用常量。
select 'I', 'EQ', bukrs from t001 into table @lr_t_bukrs up to 10 rows.
答案 1 :(得分:-2)
在ABAP SQL中,可以通过以下方式在SELECT查询中使用字符串文字。
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 开头。