ABAP—COLLECT的用法



ABAP—COLLECT的用法  

ABAP中COLLECT的用法:
SAP中ABAP對內表插入數據的時候有3種:APPEND,COLLECT,INSERT。

要填充內表 ,既可逐行 添加數據, 也可複製另 一個表格的 內容。

要逐行填充 內表,可以 使用 APPEND、 COLLECT 或 INSERT 語句。

_ 要將內表 僅用於存儲 數據,出於 性能方面的 考慮,建議 使用 APPEND。 用 APPEND 也可以創建序列清單。

_ 要計算數 字字段之和 或要確保內 表中沒有出 現重複條目 ,請使用 COLLECT 語句,它根 據標準關鍵字處理行。

_ 要在內表 現有行之前 插入新行, 請使用 INSERT 語句。

要將內表內 容複製到另 一個內表中 ,請使用 APPEND、 INSERT 或 MOVE 語句的變式 。

_ 要將內表 行附加到另 一個內表中 ,請使用 APPEND 語句的變式 。

_ 要將內表 行插入另一 個內表中, 請使用 INSERT 語句的變式 。

_ 要將內表 條目內容復 制到另一個 內表中,並 且覆蓋該目 標表格,請 使用 MOVE 語句。

 


COLLECT的特性讓我看到了企業寫報表的曙光。有的時候我們需要對某個區域或者某個客戶年度營業額進行彙總,於是COLLECT就大派用場了,甚至可以不用跟QAD一樣判斷是否有存在這個記錄而進行彙總,SAP就已經幫你處理好這一切!

不過,默認COLLECT只是對非P和I進行彙總,所以有的時候這也帶來很多不方便。這個問題留下一篇博文解決吧!請看如下例子:

REPORT  Z_COLLECT.
DATA: BEGIN OF ITAB OCCURS 4,
  COLUMN1(3) TYPE C,
  COLUMN2(2) TYPE N,
  COLUMN3    TYPE I,
  COLUMN4(5) TYPE C,
END OF ITAB.
ITAB-COLUMN1 = 'abc'. ITAB-COLUMN2 = '12'. ITAB-COLUMN3 = 3. ITAB-COLUMN4 = 'xyz'.
COLLECT ITAB.
WRITE / SY-TABIX.
ITAB-COLUMN1 = 'def'. ITAB-COLUMN2 = '34'. ITAB-COLUMN3 = 5. ITAB-COLUMN4 = 'xyz'.
COLLECT ITAB.
WRITE / SY-TABIX.
ITAB-COLUMN1 = 'abc'. ITAB-COLUMN2 = '12'. ITAB-COLUMN3 = 15. ITAB-COLUMN4 = 'xyz'.
COLLECT ITAB.
WRITE / SY-TABIX.
LOOP AT ITAB.
  WRITE: / ITAB-COLUMN1, ITAB-COLUMN2, ITAB-COLUMN3, ITAB-COLUMN4.
ENDLOOP.

 


結果:

1

2

1

abc 12 18 xyz

def 34 5 xyz

 


總結:collect 就是將相同屬性字段的值放到一起但是不累加,然後將其餘的不相等屬性值相加成爲結果。

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