Demo: Disable DELETE key on Keyboard

一个Function的alv demo,使用键盘上的delete直接删除表数据,可以多行删除。

效果:

Demo: Disable DELETE key on Keyboard
Demo: Disable DELETE key on Keyboard
具体删除可依据的内容
[En]

Specific deletion of what can be based on

er_data_changed->mt_deleted_rows

此时 alv内表内数据没删除,直接根据行号即可得到删除的数据,如果有后续操作可以记录下来

Demo: Disable DELETE key on Keyboard

code:

&———————————————————————
& Report ZLM_ALV_013
&
&———————————————————————
&
&
&———————————————————————

REPORT zlm_alv_014.

TYPE-POOLS: slis.

  • Data to be displayed
    DATA: gt_sflight TYPE TABLE OF sflight.

DATA: gt_sflight1 TYPE TABLE OF sflight,
gs_layout TYPE slis_layout_alv,
l_deleted TYPE flag.

DATA: gv_delte_number TYPE int4.

DATA: gs_delete TYPE sflight.

DATA: o_grid TYPE REF TO cl_gui_alv_grid.

*
———————————————————————-
* Event Handler class for ALV Events
———————————————————————-
CLASS lcl_event_handle DEFINITION.

PUBLIC SECTION.

METHODS handle_data_changed
FOR EVENT data_changed OF cl_gui_alv_grid
IMPORTING er_data_changed.

*
METHODS:
handle_changed_finished FOR EVENT data_changed_finished
OF cl_gui_alv_grid
IMPORTING e_modified
et_good_cells.

*
ENDCLASS. “lcl_event_handle DEFINITION
*
DATA: o_event_h TYPE REF TO lcl_event_handle.

*
START-OF-SELECTION.

———————————————————————
* Selection
SELECT * FROM sflight INTO CORRESPONDING FIELDS OF TABLE gt_sflight UP TO 10 ROWS.

*
* Edit
gs_layout-edit = ‘X’.

*
* Event for Top-of-page
DATA: lt_events TYPE slis_t_event.

DATA: la_events LIKE LINE OF lt_events.

*
la_events-name = ‘TOP_OF_PAGE’.

la_events-form = ‘TOP_OF_PAGE’.

APPEND la_events TO lt_events.

*
* Call ABAP List Viewer (ALV)
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program = sy-repid
i_callback_user_command = ‘USER_COMMAND’
i_structure_name = ‘SFLIGHT’
is_layout = gs_layout
it_events = lt_events
TABLES
t_outtab = gt_sflight.

*
&———————————————————————
* TOP-OF-PAGE. Also used to get the Object reference
———————————————————————-
FORM top_of_page.

*
DATA : lt_comment TYPE slis_t_listheader,
la_comment TYPE slis_listheader.

*
* Top of page
la_comment-typ = ‘H’.

la_comment-info = ‘Disabled Delete Key’.

APPEND la_comment TO lt_comment.

*
* Commenty write
CALL FUNCTION ‘REUSE_ALV_COMMENTARY_WRITE’
EXPORTING
it_list_commentary = lt_comment.

*
* Get the ALV object
CALL FUNCTION ‘GET_GLOBALS_FROM_SLVC_FULLSCR’
IMPORTING
e_grid = o_grid.

*
* Register the Modified event … Important
CALL METHOD o_grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.

*
* Set Event handler
CREATE OBJECT o_event_h.

SET HANDLER o_event_h->handle_data_changed FOR o_grid.

SET HANDLER o_event_h->handle_changed_finished FOR o_grid.

*
ENDFORM. “top_of_page
*
&———————————————————————
* User Command
———————————————————————-
FORM user_command USING r_ucomm TYPE sy-ucomm
rs_selfield TYPE slis_selfield.

IF r_ucomm = ‘&DATA_SAVE’.

MESSAGE ‘You pressed the save button’ TYPE ‘I’.

ENDIF.

ENDFORM. “user_command
*
———————————————————————-
* Event Handler Class implementation
———————————————————————-
CLASS lcl_event_handle IMPLEMENTATION.

*
METHOD handle_data_changed.

*
*
DATA: ls_deleted_rows LIKE LINE OF er_data_changed->mt_deleted_rows.

*
* data is deleted or not. If yes, than fill the temporary table
* to its copy
DESCRIBE TABLE er_data_changed->mt_deleted_rows LINES sy-index.”Gv_DELTE_NUMBER
IF sy-index IS NOT INITIAL.

l_deleted = ‘X’.

gv_delte_number = sy-index.

  • gt_sflight1[] = gt_sflight[].

  • CLEAR er_data_changed->mt_deleted_rows.

ENDIF.

*
*
ENDMETHOD. “handle_data_changed
*
METHOD handle_changed_finished.

*
* data has been deleted than set the temp data back to the main table
* and refresh the table display
IF l_deleted = ‘X’.

MESSAGE ‘YOU DELETE ‘ && ‘(‘ && gv_delte_number && ‘)’ && ‘LINES’ TYPE ‘S’.

  • gt_sflight[] = gt_sflight1[].

  • CLEAR: l_deleted, gt_sflight1.

ENDIF.

  • message
  • MESSAGE ‘You can not delete any record’ TYPE ‘I’.

  • refresh the list display
    CALL METHOD o_grid->refresh_table_display
    EXCEPTIONS
    finished = 1
    OTHERS = 2.

IF sy-subrc NE 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

*
ENDMETHOD. “handle_changed_finished
*
ENDCLASS. “lcl_event_handle IMPLEMENTATION

Demo: Disable DELETE key on Keyboard

Demo: Disable DELETE key on Keyboard

Original: https://blog.51cto.com/u_15680210/5578399
Author: sapLiuMeng
Title: Demo: Disable DELETE key on Keyboard

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/508471/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球