SAP事件 Event Flow(轉 感謝原創)
AT SELECTION-SCREEN
(1).其實就像一個FORM,所以在這個事件裡宣告的變數都是區域性變數。
(2).根據SY-UCOMM這個系統變數可以判斷使用者的命令
(3).在這個事件裡響應的是螢幕上選擇條件中的事件,例如CHECKBOX的選擇與否,RADIOBUTTON的選擇,LISTBOX的選擇等等。
所以分為以下幾個方面:
1. ... ON field :在PARAMETER變化時觸發的事件,對於選擇螢幕某欄位輸入的PAI事件,當該欄位的值被傳遞給程式時被觸發,可以應用於改欄位本身的正確性檢查,如可系統提示錯誤,則可以在該欄位中重新輸入,此時其他元素呈灰色,不接受輸入
2. ... ON END OF sel :SELECT-OPTION觸發的事件,用於整個選擇表輸入結束後各行的檢查
3. ... ON VALUE-REQUEST FOR psel_low_high :當游標位於某螢幕欄位時,選擇的幫助(F4)
4. ... ON HELP-REQUEST FOR psel_low_high :當游標位於某螢幕欄位時,選擇的幫助(F1)
5. ... ON RADIOBUTTON GROUP radi :單選按鈕事件,必須進行整體輸入檢查
6. ... ON BLOCK block :框架的觸發事件
7. ... OUTPUT :響應螢幕上的事件,修改選擇螢幕的唯一方法
例項:
Event in ABAP report determine process flow of a program. The events are triggered depended on the way the output is generated. They begin after event keyword and end when the next event reached.
Event keyword:
INITIALIZATION.
Occurs when report initialized.
We can use it to check user authorization or prepare output for selection screen.
AT SELECTION-SCREEN OUTPUT :
Occurs each time selection screen about to generated.
We can use it to modify selection screen, for example hide / unhide parameter.
AT SELECTION-SCREEN.
Occurs each user command in selection screen. we can use it to perform checking on user input.
START-OF-SELECTION
Occurs after the standard selection screen has been processed.,
data is read in this event.
END-OF-SELECTION
Occurs after start-of-selection.
TOP-OF-PAGE
Occurs when a new page starts.
Use it for write report header.
END-OF-PAGE
Occurs when a page ends.
Use it for write report footer.
AT LINE-SELECTION
Occurs when the user double-click on report.
AT USER-COMMAND
Occurs when the user push toolbar button.
This is program to demonstrate how to use event properly.
REPORT ZAALGAL0008
LINE-COUNT 10(1).
*http://abap-gallery.blogspot.com
TABLES: sflight.
DATA: BEGIN OF t_report OCCURS 3,
carrid LIKE sflight-carrid,
connid LIKE sflight-connid,
END OF t_report.
*begin selection screen
PARAMETERS p_datum LIKE sy-datum.
PARAMETERS p_check AS CHECKBOX.
*end selection screen
INITIALIZATION.
*begin initialization
MOVE sy-datum TO p_datum.
*end initialization
AT SELECTION-SCREEN.
*begin at selection-screen
MESSAGE I888(sabapdocu) WITH 'At selection-screen'.
IF p_check = 'X'.
MESSAGE E888(sabapdocu) WITH 'Clear checkbox'.
ENDIF.
*end at selection-screen
AT SELECTION-SCREEN OUTPUT.
*begin at selection-screen output
MESSAGE I888(sabapdocu) WITH 'At selection-screen output'.
*end at selection-screen output
START-OF-SELECTION.
*begin start-of-selection.
MESSAGE I888(sabapdocu) WITH 'start-of-selection'.
SELECT * FROM sflight.
MOVE sflight-carrid TO t_report-carrid.
MOVE sflight-connid TO t_report-connid.
APPEND t_report.
ENDSELECT.
*end start-of-selection.
END-OF-SELECTION.
*begin end-of-selection.
MESSAGE I888(sabapdocu) WITH 'end-of-selection'.
FORMAT COLOR col_normal.
DO 30 TIMES.
LOOP AT t_report.
WRITE / t_report-carrid.
WRITE t_report-connid.
ENDLOOP.
ENDDO.
*end end-of-selection.
TOP-OF-PAGE.
FORMAT COLOR col_heading.
WRITE 'This is header'.
END-OF-PAGE.
FORMAT COLOR col_total.
WRITE 'This is footer'.
AT LINE-SELECTION.
WRITE: / 'Cursor Row:', sy-curow.
WRITE: / 'Cursor Col:', sy-cucol.