ABAP OpenSQL 中的文字?

Literals in ABAP OpenSQL?

in 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 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.

以上示例 return 来自 T001w 的 table 条目,其中 name1 字段值以 ST

从 ABAP 7.5* 开始,您可以使用 Host Variables 来实现您的要求。

请将lv_ilv_eq定义为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 的更新,

您也可以直接在 OPEN SQL 中使用常量。

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