zoukankan      html  css  js  c++  java
  • ABAP 7.55 新特性 (二) ABAP SQL部分

    上一篇文章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

     
     
     
     
  • 相关阅读:
    Web 前端开发中一些兼容性问题及其解决办法 (持续更)
    沈逸的IT专栏---shenyisyn
    程序员该做的事
    职场需要切忌的几点——《程序员,你伤不起》
    百度天气API接口
    C#简单音乐播放器ListBox歌单列表
    CentOS7 安装java(jre 1.8)
    CentOS7 系统安装与设置
    这个可以有,记录下
    在centos 7中让网卡自启动
  • 原文地址:https://www.cnblogs.com/hhelibeb/p/13833653.html
Copyright © 2011-2022 走看看