介紹一個使用 cl_abap_corresponding 進行兩個內表不同名稱字段賦值的快捷方法

假設我們有兩個 ABAP 內表,每個內表分別包含 a, b 和 a’, b’ 字段。

我們希望把內表1 的 a 和 b 字段,分別賦給內表2 的 a’ 和 b’ 字段。因爲字段名稱不相同,所以無法使用 MOVE-CORRESPONDING.

傳統的做法,是寫一個 LOOP,在循環體內,手動把表1每一行的字段a,賦給表2每一行的字段a’:

其實有一種更簡單高效的方法。

使用 cl_abap_corresponding,創建一個映射表,這個映射表,指定如下規則:

  • 將內表的字段值 focus_language ,賦給另一個內表的 focus_area 字段。
  • 將內表的字段值 salary,賦給另一個內表的 salary_plus_bonous.

create 方法傳入這個映射表,返回一個執行器。調用該執行器的 execute 方法,指定需要進行字段賦值的源內表和目標內表,賦值操作就自動完成了,無需開發人員手動使用 LOOP 賦值。

Execute 方法是在 ABAP 內核中完成的,比在 ABAP 應用中使用 LOOP 要高效。

關於該類的更多細節,請參考我的文章:介紹一種在ABAP內核態進行內表高效拷貝的方法,和對應的Java和JavaScript版本的僞實現

更多Jerry的原創文章,盡在:“汪子熙”:

本文同步分享在 博客“汪子熙”(CSDN)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章