上一篇文章ABAP 7.55 新特性 (一)介紹了ABAP 7.55中除ABAP SQL外的更新內容,本篇是剩餘的ABAP SQL更新部分。html
ABAP SQL如今支持新的聚合函數ALLOW_PRECISION_LOSS
,它能夠和SUM
結合使用,以下降準確性爲代價,提高性能,sql
示例代碼,express
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( ).
可選窗口幀規範容許定義窗口內行的子集,該子集稱爲幀。 幀是根據當前行肯定的,這使得它能夠在窗口內移動。json
ABAP SQL如今在窗口表達式中支持如下新窗口函數:函數
如今,ABAP SQL支持如下新的日期/時間轉換函數:post
TSTMPL_TO_UTCL
和TSTMPL_FROM_UTCL
DATS_TO_DATN
和DATS_FROM_DATN
TIMS_TO_TIMN
和TIMS_FROM_TIMN
如今,ABAP SQL支持如下新的時間戳函數:性能
UTCL_CURRENT
, UTCL_ADD_SECONDS
和UTCL_SECONDS_BETWEEN
.如今,ABAP SQL支持如下新的日期函數:學習
DATN_DAYS_BETWEEN
, DATN_ADD_DAYS
和DATN_ADD_MONTHS
.如今,ABAP SQL支持如下新的日期函數ORDER BY子句後新的附加項:url
NULLS FIRST
和NULLS LAST
.如今,ABAP SQL支持如下新的聚合函數:spa
MEDIAN
, STDDEV
, VAR
, CORR
和CORR_SPEARMAN
.如今,ABAP SQL支持如下新的幾何變換函數:
as_geo_json
操做符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表達式目前能夠用在比較運算符的右側。
ABAP SQL如今在窗口表達式中支持如下新窗口函數:
在使用SELECT, INTO target
時,宿主變量能夠內聯聲明,即使FROM子句是動態的,只要全部SELECT清單是靜態的。之前,結果集的結構,包括SELECT列表、FROM子句和任何indicator都須要是靜態的。
ABAP SQL如今在窗口表達式中支持新的類型轉換函數to_clob
和to_blob
。
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).
如今能夠在SQL表達式中使用streaming和locators,好比TO_CLOB
, TO_BLOB
和AS_GEO_JSON
.
基本SQL表達式如今能夠支持字典類型STRING和RAWSTRING.
對於hierarchy生成器HIERARCHY
,如今能夠經過新的附加項LOAD BULK|INCREMENTAL|load_option
指定載入策略。
如今能夠在ABAP SQL中使用多種ABAP字典類型的指定類型的字面量。
語法:... dtype...
例如,
SELECT * FROM demo_ddic_types WHERE int8 = int8`32984723948723` INTO TABLE @DATA(result).
ABAP SQL如今支持一些新的正則處理函數,好比REPLACE_REGEXPR
, LIKE_REGEXPR
和 OCCURRENCES_REGEXPR
如今能夠在UPDATE FROM子句中經過set indicators指定更新列。
若是用到了上面列出的ABAPSQL中的任一新特性,語法檢查會以嚴格模式運行。
原始文檔連接:https://help.sap.com/doc/abapdocu_755_index_htm/7.55/en-US/index.htm?file=abennews-755-abap_sql.htm