SAP : SALV 例子
利用控制器的模式
利用控制器的SALV方法與實際業務中最常用的利用GRID顯示ALV的方法其步驟一樣。
為了在畫面上顯示ALV事例,必須要存在連線畫面和ALV GRID控制元件的SAP容器控制元件。
SAP控制器為了充當 LINKER將SAP控制元件包含於自己的領域。SAP控制元件包含SAP Tree、
SAP PICTURE、SAP TEXTEDIT、 SAP SPLITTER控制元件等。
3
4、主程式:
*&---------------------------------------------------------------------* *& Report Z17_04 *& *&---------------------------------------------------------------------* *& 全屏Classic List模式 *& LIST_DISPLAY : 用SALV顯示與傳統式REUSE_ALV_LIST_DISPLAY函式輸出ALV *& 一樣效果的報表。 *&---------------------------------------------------------------------* REPORT Z17_04. DATA: gt_itab type table of sflight. DATA: gr_table TYPE REF TO CL_SALV_TABLE. DATA: gr_function type ref to cl_salv_functions_list." 應用工具欄 DATA: gr_container type ref to cl_gui_custom_container. DATA: OK_CODE type syucomm. SELECT * FROM SFLIGHT INTO CORRESPONDING FIELDS OF TABLE gt_itab up to 25 rows. *& #REGION: 用 螢幕100代替 *cl_salv_table=>factory( * EXPORTING * list_display = abap_true * IMPORTING * r_salv_table = gr_table * CHANGING * t_table = gt_itab * ). * **& #region: 應用工具欄 *gr_function = gr_table->get_functions( ). *gr_function->set_default( ). **& #endregion: 應用工具欄 * *gr_table->display( ). *& #ENDREGION: 用 螢幕100代替 *& 呼叫自定義的螢幕100 CALL SCREEN 0100. *& 螢幕輸出後事件 子程式 INCLUDE z17_04_pbo. *& 螢幕的輸入前事件 子程式 INCLUDE z17_04_pai.
4.1 子程式 Z17_04_PAI
*----------------------------------------------------------------------* ***INCLUDE Z17_04_PAI. *----------------------------------------------------------------------* *&---------------------------------------------------------------------* *& Module 0100_PAI INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE 0100_PAI INPUT. CASE OK_CODE. WHEN 'BACK' OR 'EXIT' OR 'CANC'. SET SCREEN 0. LEAVE SCREEN. ENDCASE. ENDMODULE. " 0100_PAI INPUT
4.2 子程式 Z17_04_PBO
*----------------------------------------------------------------------* ***INCLUDE Z17_04_PBO. *----------------------------------------------------------------------* *&---------------------------------------------------------------------* *& Module 0100_PBO OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE 0100_PBO OUTPUT. SET PF-STATUS '0100'. IF gr_container is not bound. *& 1. Create Container CREATE OBJECT gr_container exporting container_name = 'CONTAINER'. *& 2. CREATE ALV cl_salv_table=>factory( exporting r_container = gr_container container_name = 'CONTAINER' IMPORTING r_salv_table = gr_table CHANGING t_table = gt_itab ). *& 3. SET ALV BUTTON gr_function = gr_table->get_functions( ). gr_function->set_all( abap_true ). " 追加ALV所有功能 *& 4. Call alv gr_table->display( ). ENDIF. ENDMODULE. " 0100_PBO OUTPUT
4.3 執行效果圖