效果:
本来应该定义一个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
*&
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT
*
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS
*
*
*
*
*
*
*
*
*
*
ENDCLASS .
*
CLASS
*
*
ENDCLASS .
*
*
START-OF-SELECTION .
*
*
*
*
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS
*
*
*
*.......................................................................
*
*
*
*...Get
*
*
*
*...Process
*
*
*
*
*
*
*
*
*
*
*display
*tool
*
*
*
*
ENDCLASS .
*
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS
*
*
*
*
*
*
ENDCLASS .