zoukankan      html  css  js  c++  java
  • CL_GUI_ALV_GRID 触发PAI事件(Application event)

    *&---------------------------------------------------------------------*
    *& Report  Z_BARRY_ALV_GRID_EVENT
    *&
    *&---------------------------------------------------------------------*
    *&
    *&
    *&---------------------------------------------------------------------*
    
    REPORT  z_barry_alv_grid_event.
    
    DATA: itab TYPE TABLE OF sflight .
    DATA: ok_code LIKE sy-ucomm .
    DATA: go_grid             TYPE REF TO cl_gui_alv_grid,
          go_custom_container TYPE REF TO cl_gui_custom_container.
    
    CLASS lcl_event_receiver DEFINITION DEFERRED .
    DATA: event_receiver TYPE REF TO lcl_event_receiver.
    
    *---------------------------------------------------------------------*
    *       CLASS lcl_event_receiver DEFINITION
    *---------------------------------------------------------------------*
    CLASS lcl_event_receiver DEFINITION.
      PUBLIC SECTION.
        METHODS catch_doubleclick
        FOR EVENT double_click OF cl_gui_alv_grid
        IMPORTING e_row
                  e_column
                  es_row_no .
    ENDCLASS.                    "lcl_event_receiver DEFINITION
    
    *---------------------------------------------------------------------*
    *       CLASS lcl_event_receiver IMPLEMENTATION
    *---------------------------------------------------------------------*
    CLASS lcl_event_receiver IMPLEMENTATION.
      METHOD catch_doubleclick.
        CALL METHOD cl_gui_cfw=>set_new_ok_code
          EXPORTING
            new_code = 'BACK'.
        CALL METHOD cl_gui_cfw=>flush.
      ENDMETHOD.                    "catch_doubleclick
    ENDCLASS.                    "lcl_event_receiver IMPLEMENTATION
    
    START-OF-SELECTION.
      CALL SCREEN 0100 .
    
    *&---------------------------------------------------------------------*
    *&      Module  STATUS_0100  OUTPUT
    *&---------------------------------------------------------------------*
    MODULE status_0100 OUTPUT.
      SET PF-STATUS 'MAIN100'.
      IF go_grid IS INITIAL.
        CREATE OBJECT go_grid
          EXPORTING
            i_parent = cl_gui_container=>screen0.
    
        CREATE OBJECT event_receiver.
        SET HANDLER event_receiver->catch_doubleclick FOR go_grid.
    
        SELECT * FROM sflight INTO TABLE itab UP TO 10 ROWS.
    
        CALL METHOD go_grid->set_table_for_first_display
          EXPORTING
            i_structure_name = 'SFLIGHT'
          CHANGING
            it_outtab        = itab.
      ENDIF.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    
    *&---------------------------------------------------------------------*
    *&      Module  USER_COMMAND_0100  INPUT
    *&---------------------------------------------------------------------*
    MODULE user_command_0100 INPUT.
      CASE ok_code.
        WHEN 'BACK'.
          LEAVE PROGRAM.
      ENDCASE.
      CLEAR ok_code .
    ENDMODULE.                 " USER_COMMAND_0100  INPUT

    另注:CL_GUI_ALV_GRID的SET_REGISTERED_EVENTS方法系统没有实现,不让使用

    文章转载自:http://blog.chinaunix.net/uid-8527621-id-2029831.html

  • 相关阅读:
    深圳和上海
    肖舸的“畅销门”和“卓越门”
    一件小事引发的辞职——团队里的Y君
    同洲、宇龙手机源代码之争
    《过得去》
    评肖舸之《0bug一书给谁带来了奶酪?》
    《观止》点滴
    webgame 地图加载(论坛摘录)
    分块加载(转)
    45度游戏的另类深度排序(copyPixels)
  • 原文地址:https://www.cnblogs.com/shelwin/p/4726449.html
Copyright © 2011-2022 走看看