只有projection view或database view才可以用SQL去读取,所以Maintance view不可以用select来取数。可以使用VIEW_GET_DATA 这个function来实现对maintance view中数据的读取。
下面的例子说明了,怎么从Maintenace view中取数。
REPORT ztest05. DATA:wf_tab TYPE REF TO data, repid TYPE sy-repid. FIELD-SYMBOLS:<fs_tab> TYPE TABLE. PARAMETERS:pa_view TYPE dd02v-tabname OBLIGATORY. START-OF-SELECTION. create data wf_tab type table of (pa_view). IF wf_tab IS BOUND. ASSIGN wf_tab->* TO <fs_tab>. CHECK <fs_tab> IS ASSIGNED. ELSE. EXIT. ENDIF. CALL FUNCTION 'VIEW_GET_DATA' EXPORTING view_name = pa_view with_authority_check = 'X' TABLES data = <fs_tab> EXCEPTIONS no_viewmaint_tool = 1 no_authority = 2 no_auth_for_sel = 3 data_access_restricted = 4 OTHERS = 5. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. repid = sy-repid. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_structure_name = pa_view i_callback_program = repid TABLES t_outtab = <fs_tab> EXCEPTIONS program_error = 1 OTHERS = 2. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF.
程序运行效果:
选择屏幕上输入 v_503_all这个Maintenace View。
输出到ALV后的结果如下图所示: