【ABAP系列】SAP ABAP7.40新語法簡介第二篇


公眾號: matinal
本文作者: matinal
 

 

前言部分

大家可以關注我的公眾號,公眾號里的排版更好,閱讀更舒適。

正文部分

從7.40開始,SP08可以使用在INTO之后用7.40,SP02引入的聲明運算符DATA(...)來放置內聯聲明。

下面舉例說明比較清晰:

DATA id TYPE scarr-carrid.
cl_demo_input=>request( CHANGING field = id ).

SELECT SINGLE carrname AS name, carrid AS id
       FROM   scarr
       WHERE  carrid = @id
       INTO @DATA(result).

cl_demo_output=>display( result ).

​

看到語法不同了嗎,如果沒看到,請回到你現有的系統中對比

 

上面語法是INTO DATA里面的寫法,下面說一下INTO TABLE里的寫法

舉例說明:

SELECT carrname AS name, carrid AS id
       FROM   scarr
       INTO TABLE @DATA(result).


cl_demo_output=>display( result ).

​

看到語法不同了嗎

 

根據SELECT列表中定義的結果集,聲明基本數據對象,結構或內部表。 有關類型構造的詳細信息,請參閱官方文檔。

將7.40,SP05引入SELECT列表中的SQL表達式使用7.40,SP08進行了增強,如下所示:

1、可以在GROUP BY之后使用SQL表達式

2、可以與聚合一起使用SQL表達式

3、可以使用SQL表達式作為聚合的參數

4、可以使用除簡單CASE之外的已搜索CASE表達式

對上述的描述,下面舉例說明更清楚一點

SELECT num1, num2,

       CASE WHEN col1 <  50 AND col2 <  50 THEN @both_l

            WHEN col1 >= 50 AND col2 >= 50 THEN @both_gt

            ELSE @others

       END AS group

       FROM demo_expressions

       ORDER BY group

       INTO TABLE @DATA(results).

​

在SELECT列表中,可以使用語法data_source〜*從7.40,SP08開始指定數據源的所有列。 這在使用連接時很方便。

舉例說明:

SELECT scarr~carrname, spfli~*, scarr~url

       FROM scarr INNER JOIN spfli ON scarr~carrid = spfli~carrid

       INTO TABLE @DATA(result).

​

1、從7.40,SP08開始,INTO子句可以和應該(haha)在SELECT語句的其他子句之后使用。 那些不被視為子句的添加UP TO n ROWS,BYPASSING BUFFER和CONNECTION必須放在INTO子句之后。

 

2、此更改背后的原理是,INTO子句不是標准SQL的一部分,而是定義SQL和ABAP之間的數據接口。 為了實現Open SQL的SQL部分中的未來增強, UNION,必須從SQL部分中刪除INTO子句。

一些限制已刪除。 例如。 從7.40開始,SP08可以在SELECT列表中的算術表達式的運算符前面放一個減號,可以對聚合執行一個簡單的CASE,在ON之后可以在連接條件中使用LIKE和IN(...) 您可以動態地在WHERE之后指定子查詢。

但是,如果您使用此處列出的任何新功能(如SP05已有的),則將以嚴格模式執行Open SQL的語法檢查,其中應用更嚴格的語法規則。 例如。 您必須在主機變量前使用逗號分隔的列表和轉義符號@。 通過這種方式,至少在Open SQL ABAP中以向下兼容的方式實施一個依賴於發布的deprecation概念。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM