Иногда возникает необходимость необходимость получить доступ к таблице с данными в ALV Grid (класс CL_GUI_ALV_GRID). Ссылка на таблицу с данными лежит в атрибуте MT_OUTTAB. Спецификатор доступа Protected запрещает использование данного атрибута за пределами класса, но разрешает его использование потомкам. Чтобы получить значение данного атрибута, необходимо создать вспомогательный класс, наследованный от CL_GUI_ALV_GRID, и определить в нем статичный метод, извлекающий необходимые данные.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
*----------------------------------------------------------------------* * CLASS zcl_alv_grid_helper DEFINITION *----------------------------------------------------------------------* * *----------------------------------------------------------------------* CLASS zcl_alv_grid_helper DEFINITION INHERITING FROM cl_gui_alv_grid. PUBLIC SECTION. CLASS-METHODS get_outtab_ref IMPORTING i_alv_grid TYPE REF TO cl_gui_alv_grid RETURNING VALUE(e_outtab_ref) TYPE REF TO data. ENDCLASS. "zcl_alv_grid_helper DEFINITION *----------------------------------------------------------------------* * CLASS zcl_alv_grid_helper IMPLEMENTATION *----------------------------------------------------------------------* * *----------------------------------------------------------------------* CLASS zcl_alv_grid_helper IMPLEMENTATION. METHOD get_outtab_ref. e_outtab_ref = i_alv_grid->mt_outtab. ENDMETHOD. "get_outtab_ref ENDCLASS. "zcl_alv_grid_helper IMPLEMENTATION |
Пример использования
1 2 3 4 5 6 7 8 9 |
DATA lo_alv_grid TYPE REF TO cl_gui_alv_grid. DATA lo_outtab TYPE REF TO data. FIELD-SYMBOLS <lt_outtab> TYPE STANDARD TABLE. ... lo_outtab = zcl_alv_grid_helper=>get_outtab_ref( lo_alv_grid ). ASSIGN lo_outtab->* TO <lt_outtab>. |
Кривой форум — предпросмотра нет…
METHOD z_get_data_ref.
*Importing IV_NAME TYPE CHAR40 Поле длиной 40 знаков
*Returning value( ER_REF ) TYPE REF TO DATA
*Exception ZCX_R2RE464_CORE Exception class
FIELD-SYMBOLS <fs_ref> TYPE any.
ASSIGN (iv_name) TO <fs_ref>.
IF <fs_ref> IS ASSIGNED.
GET REFERENCE OF <fs_ref> INTO er_ref.
ELSE.
RAISE EXCEPTION TYPE zcx_r2re464_core
EXPORTING
textid = zcx_r2re464_core=>assign_error
gv_text = CONV string( iv_name ).
ENDIF.
ENDMETHOD.