- 全屏模式生成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 auart INTO TABLE mt_data FROM vbak UP TO 20 ROWS. ENDMETHOD. METHOD alv_show. "1.创建SALV实例对象 TRY. " SALV以控制器方式显示 cl_salv_table=>factory( EXPORTING container_name = 'CONTAINER' IMPORTING r_salv_table = mo_salv CHANGING t_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.
显示效果如下图所示: