- 全屏模式生成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.
显示效果如下图所示: