ALV 拖放事件

来源:互联网 发布:pycharm linux 安装 编辑:程序博客网 时间:2024/05/17 09:35

 *----------------------------------------------------------------------*
*       CLASS lcl_event_receiver DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
  CLASS lcl_event_receiver DEFINITION.
    PUBLIC SECTION.
*--ALV 拖事件
        handle_drag FOR EVENT ondrag OF cl_gui_alv_grid
                IMPORTING e_row e_column es_row_no e_dragdropobj ,
*--ALV 放事件
        handle_drop FOR EVENT ondrop OF cl_gui_alv_grid
                IMPORTING e_row e_column es_row_no e_dragdropobj .
  ENDCLASS.                    "LCL_EVENT_RECEIVER DEFINITION

 

*----------------------------------------------------------------------*
*       CLASS LCL_EVENT_RECEIVER IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
  CLASS lcl_event_receiver IMPLEMENTATION.
    METHOD handle_drag.
      PERFORM handle_drag USING e_row e_column es_row_no e_dragdropobj.
    ENDMETHOD.                    "handle_double_click
    METHOD handle_drop.
      PERFORM handle_drop USING e_row e_column es_row_no e_dragdropobj.
    ENDMETHOD.                    "handle_double_click
  ENDCLASS.                    "LCL_EVENT_RECEIVER IMPLEME

*&---------------------------------------------------------------------*
*&      Form  handle_drag
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_E_ROW  text
*      -->P_E_COLUMN  text
*      -->P_ES_ROW_NO  text
*      -->P_E_DRAGDROPOBJ  text
*----------------------------------------------------------------------*
  FORM handle_drag  USING   e_row TYPE lvc_s_row
                             e_column TYPE lvc_s_col
                             es_row_no TYPE lvc_s_roid
                             e_dragdropobj TYPE REF TO cl_dragdropobject.
    DATA: dataobj TYPE REF TO lcl_dragdropobj.

    IF e_row-index <> 0 .
      READ TABLE it_alv INDEX e_row-index .
      IF sy-subrc = 0 .

* 数据处理
          CREATE OBJECT dataobj.
          MOVE e_row-index TO dataobj->index.
          e_dragdropobj->object = dataobj.
      ENDIF.
    ENDIF.
  ENDFORM.                    " handle_drag
*&---------------------------------------------------------------------*
*&      Form  handle_drop
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_E_ROW  text
*      -->P_E_COLUMN  text
*      -->P_ES_ROW_NO  text
*      -->P_E_DRAGDROPOBJ  text
*----------------------------------------------------------------------*
  FORM handle_drop  USING    e_row TYPE lvc_s_row
                              e_column TYPE lvc_s_col
                              es_row_no TYPE lvc_s_roid
                              e_dragdropobj TYPE REF TO cl_dragdropobject.
    DATA: dataobj TYPE REF TO lcl_dragdropobj.

    CATCH SYSTEM-EXCEPTIONS move_cast_error = 1.

      dataobj ?= e_dragdropobj->object.

      IF e_row-index <> 0 .
        READ TABLE it_alv INDEX e_row-index .
        IF sy-subrc = 0 .
*          数据处理
        ENDIF.
      ENDIF.

    ENDCATCH.
    IF sy-subrc <> 0.
* If anything went wrong this is the clean way of aborting the
* drag and drop operation:
      CALL METHOD e_dragdropobj->abort.
    ENDIF.
  ENDFORM.                    " handle_drop

 

 

原创粉丝点击