ABAP 7.55 新特性 (一)

氫氦發表於2020-10-17

最近幾天,SAP S4 2020對應的ABAP 7.55的新版文件已經出現。本文翻譯了ABAP SQL之外的更新部分。ABAP SQL的更新比較長,會再之後單獨成篇。

譯者水平有限,如有錯誤,請評論指出,謝謝。

 

本文連結:https://www.cnblogs.com/hhelibeb/p/13830356.html

轉載請註明

 

Data Types

1. Indicator structures

TYPES語句有了新的附加選項[INDICATORS],可以為給定的結構型別定義一個indicator structure子結構。indicator structure可以在ABAP SQL讀寫語句中用作ABAP SQL indicator

  • 示例程式碼,注意<wa>-ind-price指定了需要更新的欄位。這類似於BAPI中的DATAX欄位。

    TYPES wa TYPE sflight WITH INDICATORS ind.
    
    DATA itab TYPE TABLE OF wa WITH EMPTY KEY.
    
    SELECT carrid, connid, fldate, price
           FROM sflight
           WHERE carrid = char`LH` AND
                 connid = numc`0400` AND
                 fldate = @sy-datum
           INTO CORRESPONDING FIELDS OF TABLE @itab.
    
    IF sy-subrc  = 0.
    
      LOOP AT itab ASSIGNING FIELD-SYMBOL(<wa>).
        <wa>-price *= '0.8'.
        <wa>-ind-price = '01'.
      ENDLOOP.
    
      UPDATE sflight FROM TABLE @itab INDICATORS SET STRUCTURE ind.
    
    ENDIF.

     

原始連結:https://help.sap.com/doc/abapdocu_755_index_htm/7.55/en-US/index.htm?file=abennews-755-types.htm 

資料字典

1. Name Table的內部處理

name table (nametab)用於儲存有著資料字典型別的執行期物件。name table會持久化儲存在native資料庫表DDNTT和DDNTF中。

在新版本中,它的內部處理髮生了變化。

  • 結果是:
    • 不能再使用ABAP內部語句EXPORT NAMETAB,使用它會導致執行期錯誤。
    • 考慮到向下相容性,IMPORT NAMETAB依然得到了部分支援。訪問DDIC Table型別會導致執行期錯誤。其它訪問會導致ATC錯誤。
    • 先前用於儲存欄位描述的的native資料庫表DDNTF會被刪除,不再得到支援。

 

原始連結:https://help.sap.com/doc/abapdocu_755_index_htm/7.55/en-US/index.htm?file=abennews-755-ddic.htm

ABAP CDS

1. 在projection檢視中定義association

現在可以在projection檢視中定義到外部資料來源的association了。

2. CDS view entities

新的CDS檢視型別:CDS view entities

CDS view entities是CDS DDIC-based views (DEFINE VIEW)的增強,它們服務於相同的目的,有同樣的結構,但是提供不同的優點。

計劃在未來使用CDS view entities代替CDS DDIC-based views。使用DEFINE VIEW ENTITY定義CDS view entities。

原始連結:https://help.sap.com/doc/abapdocu_755_index_htm/7.55/en-US/index.htm?file=abennews-755-abap_cds.htm

Sessions

1. ABAP sessions的數量

配置檔案引數rdisp/max_alt_modes決定了每個使用者的最大ABAP sessions數量。它的預設值已經從6增大為16,16也是系統允許設定的最大值。

 

原始連結:https://help.sap.com/doc/abapdocu_755_index_htm/7.55/en-US/index.htm?file=abennews-755-abap_sessions.htm


表示式和函式

1. 構造運算子REDUCE中的計算賦值

在建構函式運算子REDUCE的加法NEXT後面的賦值中,現在可以使用計算賦值運算子=、=、*=、/或&&=,並且適用各自的規則。

 

原始連結:https://help.sap.com/doc/abapdocu_755_index_htm/7.55/en-US/index.htm?file=abennews-755-expressions.htm

字元處理

1. 支援Perl相容正則

除了現有的對POSIX正則的支援,現在ABAP支援PCRE正則,通過PCRE2庫進行處理,這是在ABAP Kernel實現的。可以通過和使用POSIX正則一樣的方式使用PCRE正則。

  • 區分方式是:

相比POSIX正則,PCRE正則更加強大,也有著更好的效能。更多資訊,參考Regular Expressions.

2. 逐字替換

REPLACE語句的新附加項VERBATIM可以使替換字串的所有字元按字面使用。通過此附加項,正規表示式字串將不會有特殊意義。

  • 例子,其中2與3有同樣的效果,但VERBATIM的效能更好。
    DATA(text1) = `123XXX456`.
    DATA(text2) = text1.
    DATA(text3) = text1.
    
    DATA(regex) =  `(\d*)(\D*)(\d*)`.
    
    REPLACE PCRE regex IN text1 WITH `$1___$3`.
    REPLACE PCRE regex IN text2 WITH `$1___$3` VERBATIM.
    REPLACE PCRE regex IN text3 WITH `\$1___\$3`.
    
    cl_demo_output=>display( |{ text1 }\n{ text2 }\n{ text3 }| ).

     

3. 新的可捕捉異常CX_SY_STRING_SIZE_TOO_LARGE

過去,導致string超過最大長度的操作總是會導致執行期錯誤STRING_SIZE_TOO_LARGE。現在,會觸發可以處理的異常CX_SY_STRING_SIZE_TOO_LARGE

在條件滿足的情況下,對於語句CALL TRANSFORMATION,也可以處理該異常。

4. 用於decimal floating point number的金額格式化選項

現在,

  • WRITE TOWRITE語句的CURRENCY附加項
  • 在string template中的格式化選項CURRENCY

也可以用於decimal floating point number

 

原始連結:https://help.sap.com/doc/abapdocu_755_index_htm/7.55/en-US/index.htm?file=abennews-755-strings.htm

ABAP CDS訪問控制

待施工

原始連結:https://help.sap.com/doc/abapdocu_755_index_htm/7.55/en-US/index.htm?file=abennews-755-cds_access_control.htm

異常處理

1. 宣告CX_NO_CHECK異常

CX_NO_CHECK類別的異常現在總是在介面中被隱式地宣告,並且總是被傳播。

現在也可以在程式介面中通過RASING宣告CX_NO_CHECK異常。比如對於methods。這樣就可以記錄可能出現的這種異常,以及將現有異常的類別更改為CX_NO_CHECK,而不導致介面的語法錯誤。

原始連結:https://help.sap.com/doc/abapdocu_755_index_htm/7.55/en-US/index.htm?file=abennews-755-exceptions.htm

 

 

 
 
 
 
 
 
 
 

相關文章