1. 程式人生 > >ABAP 報表求和統計功能實現方法

ABAP 報表求和統計功能實現方法

在寫abap 的過程中,可能需要統計,求和等

那麼如何實現呢?

其實在loop ... endloop 中間,有個AT ,<…>,ENDAT迴圈. 其中的包括: FRIST, LAST, NEW , END OF.這些可以用來進行內表中按某個欄位進行分組統計.

FIRST 內 表的第一行

LAST 內 表的最後一 行NEW 行組 的開頭,與 欄位 和 剩餘欄位中 的內容相同

END Of 行組 的結尾,與 欄位 和 剩餘欄位中 的內容相同

AT - ENDAT 塊中的語句 塊使用這些 行條件代表 預定義的控 制結構。用 戶可以使用 它們處理內 表中的控制 斷點,而不 必使用 程式設計分支和迴圈 中所述的控 制語句自己 程式設計。在 AT - ENDAT 語句塊中, 工作區域沒 有用當前表 格行進行填 充。初始化 所有不是標 準關鍵字部 件的欄位( 參見 標識表格行 )。對於行 條件 FIRST 和 LAST, 系統用星號 (*) 改寫所有標 準關鍵欄位 。對於行條 件 NEW 和 END OF ,系 統用星號 (*) 改寫所有出 現在工作區 域中指定字 段 右邊的標準 關鍵欄位。 使用者可根據 自己的需求 在 AT - ENDAT 語句塊中填 充工作區域 。

DATA: BEGIN OF LINE,

COL1 TYPE C,

COL2 TYPE I,

COL3 TYPE I,

END OF LINE.

DATA ITAB LIKE LINE OCCURS 10.

LINE-COL1 = 'A'.

DO 3 TIMES.

LINE-COL2 = SY-INDEX.

LINE-COL3 = SY-INDEX ** 2.

APPEND LINE TO ITAB.

ENDDO.

LINE-COL1 = 'B'.

DO 3 TIMES.

LINE-COL2 = 2 * SY-INDEX.

LINE-COL3 = ( 2 * SY-INDEX ) ** 2.

APPEND LINE TO ITAB.

ENDDO.

LOOP AT ITAB INTO LINE.

WRITE: / LINE-COL1, LINE-COL2, LINE-COL3.

AT END OF COL1.

SUM."按Col1 求和.

ULINE.

WRITE: / LINE-COL1, LINE-COL2, LINE-COL3.

SKIP.

ENDAT.

AT LAST.

SUM."總求和.

ULINE.

WRITE: / LINE-COL1, LINE-COL2, LINE-COL3.

ENDAT.

ENDLOOP.

其輸出為:

A 1 1

A 2 4

A 3 9

________________________________

A 6 14

B 2 4

B 4 16

B 6 36

________________________________

B 12 56

________________________________

* 18 70