点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
这篇文章是 Open SQL 增强系列的延续。之前的 2 个帖子如下 -
在这篇文章中,您将详细了解 ABAP 7.40 版本后引入的开放 SQL 增强功能。
这篇文章使用自定义表格 ZMMOVIE 来解释这些概念——下图是表格的样子。
Case Insensitive Search
之前,要搜索文本,您会将数据放入内部表中,遍历表,将要搜索的字段内容更改为大写,还将搜索字符串转换为大写,然后执行“CS” LIKE 操作。
现在,只需在像下面这样使用,
"Search string - this can be a parameter as well DATA(search_string) = 'IRon'. "Code to search using the search string DATA(str_for_db) = '%' && to_upper( search_string ) && '%'. SELECT movie FROM zmmovie WHERE upper( movie ) LIKE @str_for_db INTO TABLE @DATA(lt_movie).
结果如下。(这是在 Cloud ABAP 系统中写入控制台的输出)
Where clause
where 子句中的算术运算
where 子句中的字段之间允许进行加法、减法和乘法等操作。
SELECT movie FROM zmmovie WHERE ( grosscol - openingcol ) > 10000000 INTO TABLE @DATA(lt_movie).
请注意,此时允许在表字段的 where 子句中使用 +、- 和 * 操作。不允许除法 ( / )。
where 子句中的方法调用、选择列表和条件
一个函数方法 get_hulk_movie 返回一部以虚构角色“绿巨人”为特色的电影。这个返回值可以直接用在 where 子句中。
SELECT movie FROM zmmovie WHERE movie = @( get_hulk_movie( ) ) INTO TABLE @DATA(lt_movie).
WHERE 子句中的 IS INITIAL 或 IS NOT INITIAL
从 ABAP 1809 开始,您可以使用IS INITIAL
或 IS NOT INITIAL
in WHERE
子句。
"Select movies where gross collection data is available SELECT movie FROM zmmovie WHERE grosscol IS NOT INITIAL INTO TABLE @DATA(lt_movie).
Code Completion in Select Query
由于语法已得到增强,允许我们编写 SELECT FROM <tablename> FIELDS... ,当您输入字段时,您可以轻松使用代码完成。查看下面的示例以了解字段建议。(使用 Ctrl + Space 获取建议)