- 全屏模式生成SALV的方式:http://t.csdnimg.cn/CzNLz
- 本文講解生成可控模式的SALV,該方式需要依賴自己創建屏幕的自定義控件區域(Custom Control)
- 實現步驟:需要注意的點是SALV的實例對象和dispaly方法一定是在屏幕PBO事件里的
- 在程序中創建一個屏幕,并在布局中定義控件區域(Custom Control)
- 通過cl_salv_table=>factory方法傳入參數container_name生成SALV實例對象,最后調用SALV實例對象的display方法展示
CLASS lcl_model DEFINITION.PUBLIC SECTION.TYPES:BEGIN OF TY_dATA,vbeln TYPE vbak-vbeln,erdat TYPE erdat,erzet TYPE erzet,ernam TYPE ernam,auart TYPE auart.TYPES:END OF ty_data.DATA mt_data TYPE TABLE OF ty_data.DATA mo_salv TYPE REF TO cl_salv_table."獲取數據的方法METHODS get_data."展示SALV的方法METHODS alv_show. ENDCLASS.CLASS lcl_model IMPLEMENTATION.METHOD get_data.SELECT vbeln erdat erzet ernam auartINTO TABLE mt_dataFROM vbakUP TO 20 ROWS.ENDMETHOD.METHOD alv_show."1.創建SALV實例對象TRY. " SALV以控制器方式顯示cl_salv_table=>factory(EXPORTINGcontainer_name = 'CONTAINER'IMPORTINGr_salv_table = mo_salvCHANGINGt_table = mt_data ).CATCH cx_salv_msg INTO DATA(msg).MESSAGE msg TYPE 'S' DISPLAY LIKE 'E'.ENDTRY."2.調用SALV展示方法mo_salv->display( ).ENDMETHOD. ENDCLASS.START-OF-SELECTION."一定要調用屏幕CALL SCREEN 0100.MODULE salv_show OUTPUT.DATA(lo_model) = NEW lcl_model( ).lo_model->get_data( ).lo_model->alv_show( ). ENDMODULE.
顯示效果如下圖所示: