1. 程式人生 > >ABAP 7.50 新特性之另一個CORRESPONDING

ABAP 7.50 新特性之另一個CORRESPONDING

select ont 操作 cnblogs 相同 法則 div -s style

在ABAP中,存在著一條法則:同樣的名稱代表的不一定是同樣的東西(具體可看最近的相關討論)。

但是如你們所知的,存在著一個很好的例外: 所有涉及到使用CORRESPONDING為結構賦值的關鍵字的語法形式(偶然地)有著相同的名字..

  • 在ABAP 7.40之前,主要有用MOVE-CORRESPONDING來復制結構組件、Open SQL的SELECT的CORRESPONDING附加字段,以及某些過時的計算語句等。
  • 在ABAP 7.40中,MOVE-CORRESPONDING可以用於操縱帶有結構的內表。並且7.40引入了一個新的構造器操作符CORRESPONDING,它允許顯式地將結構的組件映射到不同名字的組件上。

還缺了點什麽?答案是動態的映射!這個特性在ABAP 7.50中得到了引入。

新的系統類 CL_ABAP_CORRESPONDING 允許你適用動態指定的映射規則為結構或內表的組件賦值。

映射規則需要創建在一個映射表中,然後傳遞給映射對象。

例子如下:

DATA(mapper) =

  cl_abap_corresponding=>create(

    source      = struct1

    destination = struct2

    mapping     = VALUE cl_abap_corresponding=>mapping_table(

     ( level   
= 0 kind = cl_abap_corresponding=>mapping_component srcname = ‘…’ dstname = ‘…’ ) ( level = 0 kind = cl_abap_corresponding=>mapping_component srcname = ‘…’ dstname
= ‘…’ ) ( level = 0 kind = cl_abap_corresponding=>mapping_component srcname = ‘…’ dstname = ‘…’ ) ) ).

這是個簡單的例子,所有組件都在第0層,並且所有組件都得到了映射 (kind = cl_abap_coresponding=>mapping_component)。復雜點的形式會涉及到嵌套結構和排除項。通過srcname和dstname,組件名可以動態地指定。表的建立和CORRESPODING操作符的mapping子句類似。

創建映射對象後,你需要做的就是按如下方式執行賦值:

mapper->execute( EXPORTING source      = struct1

                 CHANGING  destination = struct2 ).

你可以一次又一次地為擁有相同類型的結構或者內表來進行這樣的操作。

沒別的了。更多細節請看:

CL_ABAP_CORRESPONDING – System Class.

遠景

到目前為止,只有CORRESPONDING操作符的基本形式被鏡像到了CL_ABAP_CORRESPONDING裏面。而適用lookup table的變體還在實現中..

本文鏈接: http://www.cnblogs.com/hhelibeb/p/7134317.html

原文標題:ABAP News for Release 7.50 – CORRESPONDING, again …

ABAP 7.50 新特性之另一個CORRESPONDING