返回

ALV demo 08:cl_salv_table (check box)

发布时间:2022-10-18 11:18:17 343

效果:

ALV demo 08:cl_salv_table (check box)_微信

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

code:
*&---------------------------------------------------------------------*
*& Report ZLM_ALV005
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZLM_ALV007.

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: LIKE LINE OF LO_REPORT->GT_SPFLI.
READ TABLE LO_REPORT->GT_SPFLI ASSIGNING INDEX ROW.

CHECK SY-SUBRC IS INITIAL.

IF -MANDT = SY-MANDT.
-MANDT = 'X'.
ELSE.
CLEAR -MANDT.
ENDIF.
LO_REPORT->O_ALV->REFRESH( ).
ENDMETHOD. "on_link_click
*
ENDCLASS. "lcl_event_handler IMPLEMENTATION
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线