Вы находитесь на странице: 1из 2

tables : ZYMY_COPY.

DATA : lt_tab type STANDARD TABLE OF ZYMY_COPY, " Internal Table


WA_TAB LIKE LINE OF LT_TAB,
lr_alv type REF TO cl_salv_table, " Salv Table
lv_rep like sy-repid. " Current Program variable

DATA: GR_EVENTS TYPE REF TO CL_SALV_EVENTS_TABLE.

*CLASS LCL_HANDLE_EVENTS DEFINITION.


* PUBLIC SECTION.
* METHODS: ON_CLICK FOR EVENT ADDED_FUNCTION OF CL_SALV_EVENTS.
*ENDCLASS. "lcl_handle_events DEFINITION

Class lcl_handle_events definition.


public section.
methods: on_user_command for event added_function
of cl_salv_events
importing e_salv_function.

Endclass. "lcl_handle_events DEFINITION

DATA: EVENT_HANDLER TYPE REF TO LCL_HANDLE_EVENTS.

class lcl_handle_events implementation.


method on_user_command .
case e_salv_function.
when 'DEL'. "You new button's Function Code
PERFORM HANDLE_USER_COMMAND USING E_SALV_FUNCTION.
ENDCASE.
endmethod. "on_user_command
Endclass. "lcl_handle_events IMPLEMENTATION

START-OF-SELECTION.
lv_rep = SY-REPID.

select * from ZYMY_COPY into TABLE lt_tab.

* TRY.
CALL METHOD CL_SALV_TABLE=>FACTORY
* EXPORTING
* LIST_DISPLAY = IF_SALV_C_BOOL_SAP=>FALSE
* R_CONTAINER =
* CONTAINER_NAME =
IMPORTING
R_SALV_TABLE = lr_alv
CHANGING
T_TABLE = lt_tab.

CALL METHOD LR_ALV->SET_SCREEN_STATUS


EXPORTING
REPORT = lv_rep
PFSTATUS = 'STANDARD'
SET_FUNCTIONS = LR_ALV->C_FUNCTIONS_ALL.

GR_EVENTS = lr_alv->GET_EVENT( ).
CREATE OBJECT EVENT_HANDLER.
SET HANDLER EVENT_HANDLER->ON_USER_COMMAND FOR GR_EVENTS.
CALL METHOD LR_ALV->DISPLAY.

FORM HANDLE_USER_COMMAND USING E_SALV_FUNCTION.

data: lr_selections type ref to cl_salv_selections,


lt_rows type salv_t_row,
LWA_ROWS like LINE OF LT_ROWS,
LV_INDEX TYPE I.

data :lt_del_rows type TABLE OF zymy_copy,


lwa_del_rows like line of lt_del_rows.

lr_selections = lr_alv->get_selections( ).
lt_rows = lr_selections->get_selected_rows( ).

CALL METHOD lr_selections->set_selection_mode


EXPORTING
value = if_salv_c_selection_mode=>multiple.

*------- Use either field symbols or Declare Internal Tables and Work Areas--------
* FIELD-SYMBOLS: <fs_row_index> LIKE LINE OF lt_rows,
* <fs_selected_row> LIKE LINE OF lt_tab.

LOOP AT LT_ROWS INTO LWA_ROWS.


READ TABLE LT_tab into lwa_del_rows INDEX Lwa_rows.
APPEND lwa_del_rows TO LT_del_ROWS.
CLEAR lwa_rows.
ENDLOOP.

( OR )
* Get the record to delete
* LOOP AT lt_rows ASSIGNING <fs_row_index>.
* READ TABLE lt_tab ASSIGNING <fs_selected_row> INDEX <fs_row_index>.
* CHECK sy-subrc = 0.
* APPEND <fs_selected_row> TO lt_del_rows.
* ENDLOOP.

* Delete record from the table


LOOP AT lt_del_rows into lwa_del_rows.
DELETE zymy_copy from lwa_del_rows.
ENDLOOP.

( OR )
** Delete record from the table
* LOOP AT lt_del_rows ASSIGNING <fs_selected_row>.
* DELETE zymy_copy from TABLE lt_del_rows.
* ENDLOOP.

if sy-subrc eq 0.
MESSAGE 'Records Deleted From Table' type 'S'.
endif.

LR_ALV->refresh( refresh_mode = if_salv_c_refresh=>full ).


ENDFORM. " HANDLE_USER_COMMAND

Вам также может понравиться