zoukankan      html  css  js  c++  java
  • ABAP通过自定义类使用ALV(相应事件)的代码

    Class Definition

    *----------------------------------------------------------------------*
    *       CLASS lcl_alv DEFINITION
    *----------------------------------------------------------------------*
    *
    *----------------------------------------------------------------------*
    CLASS lcl_alv DEFINITION.
      PUBLIC SECTION.

        METHODS select_alv IMPORTING amount TYPE i.

        METHODS display_alv.

        METHODS on_link_click
                    FOR EVENT link_click OF cl_salv_events_table
                    IMPORTING row column.

      PROTECTED SECTION.

        DATA t_alv TYPE STANDARD TABLE OF alv_tab.

        DATA: o_table   TYPE REF TO cl_salv_table,
              o_columns TYPE REF TO cl_salv_columns_table,
              o_column  TYPE REF TO cl_salv_column_table,
              o_events  TYPE REF TO cl_salv_events_table.

    ENDCLASS.                    "lcl_alv DEFINITION

    Class Implementation

    *----------------------------------------------------------------------*
    *       CLASS lcl_alv IMPLEMENTATION
    *----------------------------------------------------------------------*
    *
    *----------------------------------------------------------------------*
    CLASS lcl_alv IMPLEMENTATION.

      METHOD select_alv.

        SELECT *
          FROM alv_tab
          INTO TABLE t_alv
              UP TO amount ROWS.

      ENDMETHOD.                    "SELECT_ALV

      METHOD display_alv.

        TRY.
            cl_salv_table=>factory(
              IMPORTING
                r_salv_table = o_table
              CHANGING
                t_table      = t_alv ).
          CATCH cx_salv_msg.                                "#EC NO_HANDLER
        ENDTRY.

        o_columns = o_table->get_columns( ).
        o_columns->set_optimize( abap_true ).

        TRY.
            o_column ?= o_columns->get_column( 'CARRID' ).
            o_column->set_cell_type( if_salv_c_cell_type=>hotspot ).
          CATCH cx_salv_not_found.
        ENDTRY.

        o_events = o_table->get_event( ).

        SET HANDLER me->on_link_click FOR o_events.

        o_table->display( ).

      ENDMETHOD.                    "display_alv

      METHOD on_link_click.

        DATA: l_row_string TYPE string,
              l_col_string TYPE string,
              l_row        TYPE char128.

        MESSAGE i000(0k) WITH 'You Clicked on Line'
                               row
                               'Of Column'
                               column.

      ENDMETHOD.                    "on_single_click
    ENDCLASS.                    "lcl_alv IMPLEMENTATION

    Defining Objects

    DATA o_alv TYPE REF TO lcl_alv.Instance Creation

    START-OF-SELECTION.

      CREATE OBJECT o_alv.

    Calling Methods

    o_alv->select_alv( 30 ).
    o_alv->display_alv( ).

  • 相关阅读:
    Redis作者谈Redis应用场景(转)
    程序员必读书籍及导读指南(转)
    Python迭代器包itertools(转)
    Flash 0day漏洞(CVE-2018-4878)复现
    第二届“强网杯”全国网络安全挑战赛来袭——线上赛
    网站漏洞——文件判断函数的安全风险(实战篇)
    Android逆向进阶——让你自由自在脱壳的热身运动(dex篇)
    【python入门】之教你编写自动获取金币脚本
    Python大法之从火车余票查询到打造抢Supreme神器
    读DEDECMS找后台目录有感
  • 原文地址:https://www.cnblogs.com/xiaomaohai/p/6157150.html
Copyright © 2011-2022 走看看