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