上一篇文章ABAP 7.55 新特性 (一)介绍了ABAP 7.55中除ABAP SQL外的更新内容,本篇是剩余的ABAP SQL更新部分。

转载请注明
 
 

1. 新聚合函数ALLOW_PRECISION_LOSS

ABAP SQL现在支持新的聚合函数ALLOW_PRECISION_LOSS,它可以和SUM结合使用,以降低准确性为代价,提升性能,

示例代码,

REPORT demo_allow_precision_loss.

CLASS demo DEFINITION.
PUBLIC SECTION.
CLASS-METHODS main.
ENDCLASS. CLASS demo IMPLEMENTATION.
METHOD main. TYPES result_type TYPE p LENGTH 6 DECIMALS 2.
DATA: allow_precision_loss_result TYPE result_type,
normal_sum_result TYPE result_type. DELETE FROM demo_expressions.
INSERT demo_expressions FROM TABLE @(
VALUE #( ( id = 'X' dec2 = '2.119999' )
( id = 'Y' dec2 = '2.118888' )
( id = 'A' dec2 = '1.13999' )
( id = 'Z' dec2 = '2.668888' )
) ). SELECT SUM( CAST( dec2 AS DEC( 10,2 ) ) ) AS sum1
FROM demo_expressions INTO @normal_sum_result. SELECT allow_precision_loss( SUM( CAST( dec2 AS DEC( 10,2 ) ) ) )
AS sum1
FROM demo_expressions INTO @allow_precision_loss_result. cl_demo_output=>write_data( allow_precision_loss_result ).
cl_demo_output=>write_data( normal_sum_result ).
cl_demo_output=>display( ).
ENDMETHOD.
ENDCLASS. START-OF-SELECTION.
demo=>main( ).

2. 窗口函数中的可选窗口帧

可选窗口帧规范允许定义窗口内行的子集,该子集称为帧。 帧是根据当前行确定的,这使得它可以在窗口内移动。

3. 新窗口函数FIRST_VALUE和LAST_VALUE

ABAP SQL现在在窗口表达式中支持以下新窗口函数:

4. 新的日期/时间转换函数

现在,ABAP SQL支持以下新的日期/时间转换函数

  • TSTMPL_TO_UTCLTSTMPL_FROM_UTCL
  • DATS_TO_DATNDATS_FROM_DATN
  • TIMS_TO_TIMNTIMS_FROM_TIMN

5. 新的时间戳函数

现在,ABAP SQL支持以下新的时间戳函数

  • UTCL_CURRENT, UTCL_ADD_SECONDSUTCL_SECONDS_BETWEEN.

6. 新的日期函数

现在,ABAP SQL支持以下新的日期函数

  • DATN_DAYS_BETWEEN, DATN_ADD_DAYSDATN_ADD_MONTHS.

7. ORDER BY子句后新的附加项

现在,ABAP SQL支持以下新的日期函数ORDER BY子句后新的附加项

  • NULLS FIRSTNULLS LAST.

8. 新的聚合函数

现在,ABAP SQL支持以下新的聚合函数

  • MEDIAN, STDDEV, VAR, CORRCORR_SPEARMAN.

9. 新的几何变换函数

现在,ABAP SQL支持以下新的几何变换函数

  • as_geo_json

10. SQL条件修正

DATA cityfrom TYPE spfli-cityfrom VALUE 'Frankfurt'.
DATA cityto TYPE spfli-cityto VALUE 'New York'.
cl_demo_input=>new(
)->add_field( CHANGING field = cityfrom
)->add_field( CHANGING field = cityto
)->request( ).
cityfrom = to_upper( cityfrom ).
cityto = to_upper( cityto ). SELECT *
FROM spfli
WHERE ( carrid, cityfrom, cityto )
IN ( ( 'LH', @cityfrom, @cityto ),
( 'UA', @cityfrom, @cityto ) )
INTO TABLE @DATA(itab). cl_demo_output=>display( itab ).
  • SQL函数和cast表达式目前可以用在比较运算符的右侧。

11. 新的窗口函数NTILE

ABAP SQL现在在窗口表达式中支持以下新窗口函数:

12. SELECT, INTO target修改

在使用SELECT, INTO target时,宿主变量可以内联声明,即便FROM子句是动态的,只要所有SELECT清单是静态的。以前,结果集的结构,包括SELECT列表、FROM子句和任何indicator都需要是静态的。

13. 新的类型转换函数to_clob和to_blob

ABAP SQL现在在窗口表达式中支持新的类型转换函数to_clobto_blob

14. 新的货币转换函数currency_conversion

ABAP SQL现在支持新的货币转换函数currency_conversion

示例,

DATA currency TYPE c LENGTH 5 VALUE 'USD'.

...

SELECT FROM demo_prices
FIELDS id,
currency_conversion(
amount = amount,
source_currency = currency,
target_currency = @currency,
exchange_rate_date = @sy-datlo,
round = 'X',
on_error =
@sql_currency_conversion=>c_on_error-fail )
AS amount,
@currency AS currency
INTO TABLE @DATA(converted_prices_asql).

15. 现在可以在SQL表达式中使用streaming和locators

现在可以在SQL表达式中使用streaming和locators,比如TO_CLOB, TO_BLOBAS_GEO_JSON.

16. 基本SQL表达式支持更多类型

基本SQL表达式现在可以支持字典类型STRING和RAWSTRING.

17. Hierarchy载入选项

对于hierarchy生成器HIERARCHY,现在可以通过新的附加项LOAD BULK|INCREMENTAL|load_option指定载入策略。

18. 指定类型的字面量

现在可以在ABAP SQL中使用多种ABAP字典类型的指定类型的字面量

语法:... dtype...

例如,

SELECT *
FROM demo_ddic_types
WHERE int8 = int8`32984723948723`
INTO TABLE @DATA(result).

19. 新的字符函数

ABAP SQL现在支持一些新的正则处理函数,比如REPLACE_REGEXPR, LIKE_REGEXPROCCURRENCES_REGEXPR

20. 在UPDATE FROM中指定更新列

现在可以在UPDATE FROM子句中通过set indicators指定更新列。

21. 严格模式

如果用到了上面列出的ABAPSQL中的任一新特性,语法检查会以严格模式运行。

原始文档链接:https://help.sap.com/doc/abapdocu_755_index_htm/7.55/en-US/index.htm?file=abennews-755-abap_sql.htm

 
 
 
 

ABAP 7.55 新特性 (二) ABAP SQL部分的更多相关文章

  1. ABAP 7.55 新特性 (一)

    最近几天,SAP S4 2020对应的ABAP 7.55的新版文档已经出现.本文翻译了ABAP SQL之外的更新部分.ABAP SQL的更新比较长,会再之后单独成篇. 译者水平有限,如有错误,请评论指 ...

  2. ABAP 7.50 新特性 – Open SQL中的宿主表达式和其它表达式

    在长期的停滞后,Open SQL的发展终于从沉睡中醒来.从ABAP 7.40开始,SAP推进了某些关键的改变,以尽可能地包含SQL92中的特性,并提供与ABAP CDS中的DDL里面的SELECT一样 ...

  3. ABAP 7.50 新特性之另一个CORRESPONDING

    在ABAP中,存在着一条法则:同样的名称代表的不一定是同样的东西(具体可看最近的相关讨论). 但是如你们所知的,存在着一个很好的例外: 所有涉及到使用CORRESPONDING为结构赋值的关键字的语法 ...

  4. Atitit.数据库新特性战略规划 mssql sql server 2008 SQL2012 SQL2014

    Atitit.数据库新特性 mssql sql server 2008 SQL2012 SQL2014 1. Sql2012 新特性 1 1.1. 增加了Sequence对象. 1 1.2. 新的分页 ...

  5. HTML5 十大新特性(二)——表单新特性

    H5的表单新特性可以分为两大类. 一.10个input的type值 1.email:邮件输入域,在表单提交时提供简单的邮箱格式验证,并弹出一个提示窗口. 2.url:地址输入域,在表单提交时提供简单的 ...

  6. JAVA 8 主要新特性 ----------------(二)JDK1.8优点概括

    一.JDK1.8优点概括 1.速度更快 由于底层结构和JVM的改变,使得JDK1.8的速度提高. 2.代码更少(增加了新的语法 Lambda 表达式)          增加新特性Lambda表达式的 ...

  7. 深入理解java虚拟机---jdk8新特性(二)

    1.jdk8新特性 1.新特性 2.lambda函数表达式的作用 A: 替换内部类 B:对集合的操作并行化

  8. 类的加载、时机、反射、模板设计、jdk7/jdk8新特性(二十六)

    1.类的加载概述和加载时机 * A:类的加载概述 * 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化. * 加载 * 就是指将class文 ...

  9. JDK8新特性(二) 流式编程Stream

    流式编程是1.8中的新特性,基于常用的四种函数式接口以及Lambda表达式对集合类数据进行类似流水线一般的操作 流式编程分为大概三个步骤:获取流 → 操作流 → 返回操作结果 流的获取方式 这里先了解 ...

  10. 010-jdk1.8版本新特性二-Optional类,Stream流

    1.5.Optional类 1.定义 Optional 类是一个可以为null的容器对象.如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象. Optional 是个 ...

随机推荐

  1. go两种遍历chan

    go中对通道chan遍历有两种方式一种是用range另一种为for select. package main import ( "fmt" "strings" ...

  2. QT数据库学习笔记

    简介 QT通过模块化管理,对于某种模块需要添加对应的模块实现.QT SQL也是需要增加对应的模块来实现.QT数据库的层次关系为: 驱动层:数据库到SQL语言之间的桥梁 SQL API层: SQL语句的 ...

  3. verilog之readmemb

    verilog之readmemb 1.基本作用 用于读取存储器的值的系统函数.这里首先要知道什么是存储器.在verilog中,有一些比较大的数据是需要存储的,一般需要使用存储器,语法结构类似二维数组. ...

  4. 表名大小写混合时格式问题及sys_dump导出时的注意事项

    前言 前几天碰到同事咨询一个有关sys_dump导出时,表名为大小写混合情况的报错问题.因为sys_dump命令运行在linux操作系统上,所以这涉及到linux中shell的语法格式问题. 下面模拟 ...

  5. KingbaseESV8R6等待事件之LWLock buffer_mapping

    等待事件含义 当会话将数据块与共享缓冲池中的缓冲区关联时,会发生此等待事件. 类似Oracle cbc闩锁的是一种Kingbase的轻量级锁lwlock,这个锁的名字在不同数据库版本中可能有所不同,我 ...

  6. C++设计模式 - 适配器模式(Adapter)

    接口隔离模式 在组件构建过程中,某些接口之间直接的依赖常常会带来很多问题.甚至根本无法实现.采用添加一层间接(稳定)接口,来隔离本来互相紧密关联的接口是一种常见的解决方案. 典型模式 Facade P ...

  7. Lustre架构介绍的阅读笔记-NFS兼容性

    本文是在阅读Introduction to Lustre* Architecture的Traditional Network File Systems vs Lustre时的笔记. Lustre is ...

  8. 华为Push用户增长服务:精准触达,加速增长

    速戳了解华为Push用户增长服务:通过精细化运营,助力开发者高效实现用户增长,提升用户活跃度和粘性! 合作咨询请点此链接 了解更多详情>> 访问华为开发者联盟官网 获取开发指导文档 华为移 ...

  9. HarmonyOS如何高效上架原子化服务?这个平台帮你搞定!

    以往HarmonyOS应用和原子化服务都是在AGC(App Gallery Connect)上架,二者的上架流程一样.但应用的形态更加复杂庞大,上架时有很多必填字段,审核标准也相对复杂,而原子化服务的 ...

  10. 面试连环炮系列(二十六):什么情况下JVM频繁发生full GC

    1. 什么情况下JVM频繁发生full GC? full gc触发条件是老年代空间不足,具体原因有四个: 系统并发高.执行耗时长或者创建对象过多,导致 young gc频繁,且gc后存活对象太多,但是 ...