- 選擇屏幕
(1)PARAMETERS對象及其屬性
PARAMETERS: p_id like dbtab-id,
p_checkbox AS CHECKBOX DEFAULT ‘X’,
p_radio RADIOBUTTON GROUP g1 DEFAULT ‘X’,
p_radio RADIOBUTTON GROUP g1,
p_radio RADIOBUTTON GROUP g1.
語法 |
說明 |
DEFAULT ‘A’ |
初始值 |
LENGTH N |
定義長度,只適用於C、N、X、P類型 |
DECIMALS des |
指定小數點位數 |
MEMORY ID pid |
指定SAP內存參數ID |
MATCHCODE OBJECT mobj |
設定使用的Search Help |
MODIF ID |
通過SCREEN-GROUP1為屏幕元素分組 |
NO-DISPLAY |
不顯示在畫面上 |
LOWER CASE |
區分大小寫(默認大寫) |
(2)SELECT-OPTIONS對象及其屬性
SELECT-OPTIONS: so_id FOR itab-id DEFAULT 1,
so_age FOR itab-age OBLIGATORY NO INTERVALS NO-EXTENSION.
語法 |
說明 |
DEFAULT ‘A’ |
初始值 |
DEFAULT g… OPTION op… SIGN s |
初始的option和sign |
DEFAULT g TO h |
初始的low值和high值,SIGN為‘BT’ |
DEFAULT ID pid |
指定SAP內存參數ID |
MATCHCODE OBJECT mobj |
設定使用的Search Help |
OBLIGATORY |
必輸項 |
VISIBLE LENGTH vlen |
顯示長度 |
NO-EXTENSION |
隱藏多指輸入按鈕 |
NO INTERVALS |
隱藏high輸入部分 |
(3)空行
SELECTION-SCREEN SKIP 2.
(4)分割線
SELECTION-SCREEN ULINE /1(30)
(5)屏幕框架
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE t-001.
……
SELECTION-SCREEN END OF BLOCK b1.
- 事件流
事件流 |
說明 |
INITIALZATION |
在屏幕未顯示前初始化 |
AT SELECTION-SCREEN OUTPUT |
用於對屏幕輸入值的校驗 |
AT SELECTION-SCREEN ON … |
屏幕輸入遇錯處理,檢查某個具體的輸入值 |
AT SELECTION-SCREEN ON VALUE REQUEST FOR { para|selcrit-low|selcrit-high } (F4) 用於實現屏幕輸入域的自定義F4搜索幫助 |
|
AT SELECTION-SCREEN ON HELP REQUEST FOR { para|selcrit-low|selcrit-high } (F1) 用於實現屏幕輸入域的自定義F1幫助 |
|
AT SELECTION-SCREEN ON { para|selcrit } 指定輸入域輸入值時觸發 |
|
AT SELECTION-SCREEN ON BLOCK (block) 用於管控框架中的屏幕輸入值 |
|
AT SELECTION-SCREEN ON RADIOBUTTON GROUP (radi) 用於管控單選框按鈕組輸入值 |
|
AT SELECTION-SCREEN ON END OF (selcrit) 用於SELECT-OPTIONS對象,在輸入域進行多行數據輸入時觸發 |
|
AT SELECTION-SCREEN |
用於屏幕輸入檢查 |
START-OF-SELECTION |
在執行程序時觸發 |
END-OF-SELECTION |
在START-OF-SELECTION執行后,輸出屏幕還未顯示前觸發 |
GET… |
從邏輯數據庫中得到數據 |
TOP-OF-PAGE |
設計輸出單的頁頭 |
END-OF-PAGE |
設計輸出單的頁腳 |
AT USER COMMAND |
|
AT LINE SELECTION |
|
(1)報表事件的終止命令
① STOP.
結束當前事件,直接轉向END-OF-SELECTION(只能用於AT SELECTION-SCREEN/START-OF-SELECTION/GET事件)
② EXIT.
離開過程塊,直接轉向列表輸出屏幕,不執行END-OF-SELECTION
③ RETURN.
離開過程塊,直接轉向列表輸出屏幕,不執行END-OF-SELECTION
④ CHECK <condition>.
當條件為假時,離開當前事件,並轉向下一個事件
2.ALV
(1)ALV通過函數方式實現
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = gv_repid
it_fieldcat_lvc = gt_fieldcat[]
is_layout_lvc = gs_layout
i_callback_pf_status_set = 'FRM_SET_PF_STATUS'
i_callback_user_command = 'FRM_USER_COMMAND'
i_save = 'A'
TABLES
t_outtab = gt_so
EXCEPTIONS
program_error = 1
OTHERS = 2.
(2)設置顯示列
常用屬性字段(LVC_S_FCAT)
gs_fieldcat-fieldname = &1.
gs_fieldcat-coltext =
gs_fieldcat-coltext_l =
gs_fieldcat-coltext_m =
gs_fieldcat-coltext_s =
gs_fieldcat-reptext = &2.
gs_fieldcat-key = &3.
gs_fieldcat-checkbox = &4.
gs_fieldcat-edit = &5.
gs_fieldcat-hotspot = &6.
gs_fieldcat-ref_table = &7.
gs_fieldcat-ref_field = &8.
gs_fieldcat-qfieldname =’REDDI’.
gs_fieldcat-no_zero = ‘X’.
APPEND gs_fieldcat TO gt_fieldcat.
在REUSE_ALV_GRID_DISPLAY_LVC函數中添加it_fieldcat_lvc = gt_fieldcat[]
字段 |
說明 |
FIELDNAME |
字段名稱 |
SXRTEXT_L/M/S |
列標題描述 |
KEY |
是否關鍵字,設置’X’,位置固定 |
CHECKBOX |
是否顯示復選框 |
EDIT |
是否可編輯 |
HOSTSPOT |
鼠標是否出現手型光標標識 |
REF_TABLE/REF_FIELD |
字段參考數據庫表和字段 |
DO_SUM |
是否顯示總計值 |
ICON |
是否顯示為圖標 |
(3)設置布局
常用屬性字段(LVC_S_LAYO)
gs_layout-cwidth_opt = abap_true.
gs_layout-zebra = abap_true.
gs_layout-box_fname = ‘LILI’
在REUSE_ALV_GRID_DISPLAY_LVC函數中添加is_layout_lvc = gs_layout
字段 |
說明 |
ZEBRA |
ALV是否深淺顏色間隔顯示 |
SMALLTITLE |
ALV小標題 |
CWIDTH_OPT |
列寬是否按照該列最長顯示字段自動調整寬度 |
NO_ROWMARK |
左側選擇按鈕是否顯示 |
BOX_FNAME |
左側選擇按鈕選中后對應的字段 |
EDIT |
ALV單元格是否可編輯 |
STYLEFNAME |
指定顏色 |
NO_TOOLBAR |
工具欄不顯示 |
NO_TOTLINE |
設置不輸出總計行 |
(4)設置排序參數
常用屬性字段(LVC_S_SORT)
gs_sort-spos = 1.
gs_sort-fieldname = ‘ID’.
gs_sort-down = ‘X’.
gs_sort-subtot = ‘X’.
APPEND gs_sort TO gt_sort.
在REUSE_ALV_GRID_DISPLAY_LVC函數中添加it_sort_lvc = gt_sort
字段 |
說明 |
SPOS |
指定排序字段的先后順序 |
FIELDNAME |
排序字段名稱 |
UP |
按升序排列輸出 |
DOWN |
按降序排序輸出 |
SUBTOT |
是否執行並輸出小計,此設置必須與列屬性的DO_SUM一同使用 |
(5)設置自定義工具欄
FORM frm_pf_status_prt USING u_extab TYPE slis_t_extab ##CALLED.
SET PF-STATUS 'PF_STATUS_PRT' EXCLUDING u_extab.
ENDFORM.
在REUSE_ALV_GRID_DISPLAY_LVC函數中添加i_callback_pf_status_set = ‘FRM_SET_PF_STATUS’
(6)用戶命令和響應
FORM frm_user_command USING uv_ucomm LIKE sy-ucomm
us_selfield TYPE slis_selfield.
CASE uv_ucomm.
WHEN 'ALL'.
PERFORM frm_sel_all.
WHEN 'SAVE'.
PERFORM frm_save_all.
ENDCASE.
ENDFORM.
在REUSE_ALV_GRID_DISPLAY_LVC函數中添加i_callback_user_command = ‘FRM_USER_COMMAND’