ALV demo:cl_salv_table&nbs…


效果:
ALV <wbr>demo:cl_salv_table <wbr>(check <wbr>box)

本来应该定义一个check box字段,懒得鼓捣了,就直接用client当check box用了,代码里自己注意一下

code:
*&---------------------------------------------------------------------*
*& Report  ZLM_ALV_006
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT zlm_alv_006 .
*
*----------------------------------------------------------------------*
      CLASS lcl_report DEFINITION
*----------------------------------------------------------------------*
CLASS lcl_report  DEFINITION .
*
    PUBLIC  SECTION .
*

        DATA : gt_spfli  TYPE  STANDARD  TABLE  OF spfli .
*
  ALV reference
        DATA : o_alv  TYPE  REF  TO cl_salv_table .
*
        METHODS :
    data selection
            get_data ,
*
    Generating output
            generate_output .
*
*
ENDCLASS .                     "lcl_report DEFINITION
*
CLASS lcl_event_handler  DEFINITION .
*
    PUBLIC  SECTION .
        METHODS :
            on_link_click  FOR  EVENT link_click  OF cl_salv_events_table
                IMPORTING row  column .
*
ENDCLASS .                     "lcl_event_handler DEFINITION
*
*
START-OF-SELECTION .
    DATA : lo_report  TYPE  REF  TO lcl_report .
*
    CREATE OBJECT  lo_report .
*
    lo_report ->get_data (  ) .
*
    lo_report ->generate_output (  ) .
*
*----------------------------------------------------------------------*
      CLASS lcl_report IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS lcl_report  IMPLEMENTATION .
*
    METHOD get_data .
  data selection
        SELECT  FROM spfli
                      INTO   TABLE gt_spfli .
    ENDMETHOD .                     "get_data
*
*.......................................................................
    METHOD generate_output .
*
exception class
        "display setting
        DATA : lr_display  TYPE  REF  TO cl_salv_display_settings .
        DATA : lx_msg  TYPE  REF  TO cx_salv_msg .
        TRY .
                cl_salv_table =>factory (
                    IMPORTING
                        r_salv_table  o_alv
                    CHANGING
                        t_table            gt_spfli  ) .
            CATCH cx_salv_msg  INTO lx_msg .
        ENDTRY .
*
*...Get all the Columns
        DATA : lo_cols  TYPE  REF  TO cl_salv_columns .
        lo_cols  o_alv ->get_columns (  ) .
*
  set the Column optimization
        lo_cols ->set_optimize (  'X'  ) .
*

*...Process individual columns
        DATA : lo_column  TYPE  REF  TO cl_salv_column_list .
*
  Change the properties of the Columns KUNNR
        TRY .
        lo_column ?= lo_cols->get_column( 'MANDT' ).
       lo_column ?= lo_cols->get_column( 'CHECK' ).

                lo_column ->set_cell_type ( if_salv_c_cell_type =>checkbox_hotspot  ) .
                lo_column ->set_output_length (  10  ) .
            CATCH cx_salv_not_found .                           "#EC NO_HANDLER
        ENDTRY .
*
  Get the event object
        DATA : lo_events  TYPE  REF  TO cl_salv_events_table .
        lo_events  o_alv ->get_event (  ) .
*
  Instantiate the event handler object
        DATA : lo_event_handler  TYPE  REF  TO lcl_event_handler .
        CREATE OBJECT  lo_event_handler .
*
  event handler
        SET  HANDLER lo_event_handler ->on_link_click  FOR lo_events .
*

*display setting ~title
        lr_display  o_alv ->get_display_settings (  ) .
        lr_display ->set_striped_pattern ( cl_salv_display_settings =>true  ) .
        lr_display ->set_list_header (  'Check box'  ) .

        "tool bar
        DATA : lr_functions  TYPE  REF  TO cl_salv_functions .

*tool bar
        lr_functions  o_alv ->get_functions (  ) .
        lr_functions ->set_all ( abap_true  ) .

  Displaying the ALV
  Here we will call the DISPLAY method to get the output on the screen
        o_alv ->display (  ) .
*
    ENDMETHOD .                     "generate_output
*
ENDCLASS .                     "lcl_report IMPLEMENTATION
*
*----------------------------------------------------------------------*
      CLASS lcl_event_handler IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS lcl_event_handler  IMPLEMENTATION .
*
    METHOD on_link_click .
*
  Get the value of the checkbox and set the value accordingly
  Refersh the table
    FIELD-SYMBOLS: 《lfa_data》 LIKE LINE OF lo_report->gt_spfli.
    READ TABLE lo_report->gt_spfli ASSIGNING  INDEX row.
    CHECK sy-subrc IS INITIAL.
   IF 《lfa_data》-mandt IS INITIAL.       “懒得用转换符了,用书名号代替,不然会被当成html解析
    IF 《lfa_data》-mandt sy-mandt.
       《lfa_data》-mandt 'X'.
    ELSE.
      CLEAR 《lfa_data》-mandt.
    ENDIF.
    lo_report->o_alv->refresh( ).

    ENDMETHOD .                     "on_link_click
*
ENDCLASS .                     "lcl_event_handler IMPLEMENTATION 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值