ABAP data formating and control level processing

at events發生時,break field右邊的character field都會被初始化爲*numeric field都會被clear,如果有sum關鍵字,那麼就會按照現在的break level對所有的numeric fields進行彙總,在at events之後,所有的fields的值便會重新恢復到當前的loop pass。在進行control level處理的時候,在進行control level處理時,AT EVENT後面的break field要與內表中定義的fields的順序保持一致。Extract dataset用來做大量數據的處理,Internal tableapplication server memory的影響,而extract dataset是通過硬盤上的sequential file來處理的。創建extract dataset的主要步驟包括:

l         通過field group定義extract dataset,每個field group都必須定義header

l         通過INSERT…INTO…來爲field group指定內容,用來把變量或field symbol放到相應的field group中,field group中的data object必須是global的。通過在field groups中放field symbol你就可以動態指定field group中的內容了。如果filed symbol沒有被assigned時,其在field group中就會被忽略。INSERT不像DATATYPESdeclarative statement,所以其在START-OF-SELECTIONG事件中執行,一旦field group的第一個EXTRACT執行後,這個field group就不能再被擴展了。

l         FILL EXTRACT用來向field group中寫入內容,HEADER是必需的,並被放在field group的起始位置,可以用來排序。可以通過LOOP…ENDLOOP來處理filed group。不需要對HEADER field group進行extract,系統會在其它的field group之前自動處理。在其它field group之前向header field group中填充值時,如果fieldvalue爲空就會填充16進制的zero,這些zero可以作爲hierarchy keyzero越多說明你進的control level層次越深。

通過sort可以按照HEADER中的字段順序進行排序,通過BY <F1> <F2>可以控制排序的順序。通過LOOP…ENDLOOP,可以處理extract dataset中的內容,field group中的內容會被重新放回到相同名字的program field中。Control break只能適用於HEARD field group中的fields。可以通過AT <field group>來單獨處理extract dataset中的一條記錄。Extract中不像internal table那樣可以使用SUM,但是在extract dataset中有兩種特殊的方法可以實現相似功能,在AT END OF事件中,你可以計算當前control level的記錄數量,你可以對指定的字段進行SUM。可以對HEADER field group中的alphanumeric字段使用CNT關鍵字,而SUM關鍵字可以使用任何field group中的字段。語法如下:

WRITE: / CNT(<header_field_group_field>),

           SUM(<any_numeric_field_goup_field>).

SUMCNT只能在AT END OFAT LAST事件中使用。

AT <field_group_1> WITH <field_group_2fg_2>是當field group1後面有field group2時才處理,這在header/detail中,只有detail才顯示header的模式中非常有用。Extract datasetloop不能嵌套。

可以用field symbol來替代data object插入到field group中,可以在一個程序中產生不同格式的list。步驟也非常簡單:

l         聲明所需的field symbols

l         聲明HEADER field group和其他所需的field groups

l         定義radio button group來讓用戶選擇報表樣式

l         根據radio button的值將data object分配到field symbol

l         field symbol insert到相應的field group

Control level的順序要與sort的順序保持一致

Totals只能在control footer中處理

EXTRACT DATASETinternal table的比較

Internal table

Extract

一個程序中可以定義多個

一個程序中只能有一個

control header中也可以作total

只能在control footer中做total

Internal table可以做insert,modify,deleteappend

只能做append sortsequential processing

隨時可以修改internal table中的內容

sortloop之後不能進行extract

每一行的結構都是一樣的

每一行的結構可以不同

Line typestatic

Record typedynamic

Control level的順序是按照line type中字段的順序來執行的

Control level的順序是按照sort中字段的順序來執行的

Total的性能負擔較大

Total算法被優化

 

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