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_UTCL和- TSTMPL_FROM_UTCL
- DATS_TO_DATN和- DATS_FROM_DATN
- TIMS_TO_TIMN和- TIMS_FROM_TIMN
5. 新的时间戳函数
现在,ABAP SQL支持以下新的时间戳函数:
- UTCL_CURRENT,- UTCL_ADD_SECONDS和- UTCL_SECONDS_BETWEEN.
6. 新的日期函数
现在,ABAP SQL支持以下新的日期函数:
- DATN_DAYS_BETWEEN,- DATN_ADD_DAYS和- DATN_ADD_MONTHS.
7. ORDER BY子句后新的附加项
现在,ABAP SQL支持以下新的日期函数ORDER BY子句后新的附加项:
- NULLS FIRST和- NULLS LAST.
8. 新的聚合函数
现在,ABAP SQL支持以下新的聚合函数:
- MEDIAN,- STDDEV,- VAR,- CORR和- CORR_SPEARMAN.
9. 新的几何变换函数
现在,ABAP SQL支持以下新的几何变换函数:
- as_geo_json
10. SQL条件修正
- 
操作符IN现在可以用于返回值元组的子查询。 
 示例代码
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_clob和to_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_BLOB和AS_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_REGEXPR和 OCCURRENCES_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 
 
 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号