• 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

  • 相关阅读:
    linux下tomcat之too many open files
    oracle之Io异常: Got minus one from a read call
    oracle监听模块异常
    面向对象分析与面向结构分析
    jdbc连接oracle出现ORA-12505错误
    git命令行入门
    oracle之远程数据投毒漏洞(CVE-2012-1675)修复
    sql盲注
    springboot日志配置Logback
    Java 多线程 重入锁
  • 原文地址:https://www.cnblogs.com/shelwin/p/4726449.html
Copyright © 2020-2023  润新知