ABAP 7.4 及更高版本 [8]:Open SQL 增强第 3 部分

2021-11-07 20:12发布


          点击此处--->   EasySAP.com 群内免费提供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 获取建议)

赞赏支持