ALV demo:cl_salv_table(Ap…

效果: carrid 列的第二行 设置为热键, CONNID 第三行设置为button
ALV <wbr>demo:cl_salv_table(Apply <wbr>Styles <wbr>to <wbr>Cell)

code:
*&---------------------------------------------------------------------*
*& Report  ZLM_ALV_009
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT zlm_alv_009 .
*
CLASS lcl_report  DEFINITION .
*
    PUBLIC  SECTION .


        TYPES  BEGIN  OF spfli_struc .
                        INCLUDE    TYPE spfli .
        TYPES i_celltype  TYPE salv_t_int4_column ,
                        END  OF spfli_struc .


        DATA : gt_spfli  TYPE  STANDARD  TABLE  OF spfli_struc .

  ALV reference
        DATA : o_alv  TYPE  REF  TO cl_salv_table .

        METHODS :
            get_data ,            data selection
            generate_output .     Generating output
*
    PRIVATE  SECTION .
        METHODS :
            set_columns .         Set columns
ENDCLASS .                     "lcl_report 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 .
*
    METHOD get_data .
  data selection
        SELECT *
                      FROM spfli
                      INTO CORRESPONDING  FIELDS  OF  TABLE gt_spfli .


        FIELD-SYMBOLS : 《lfs_spfli》  LIKE  LINE  OF gt_spfli .
        DATA : lt_celltype  TYPE salv_t_int4_column .
        DATA : ls_celltype  LIKE  LINE  OF lt_celltype .
        LOOP  AT gt_spfli  ASSIGNING 《lfs_spfli》 .
            CLEAR : lt_celltype .
Only CARRID for 2nd record
            IF sy -tabix  2 .
                ls_celltype -columnname  'CARRID' .
                ls_celltype - value      if_salv_c_cell_type => hotspot .
                APPEND ls_celltype  TO lt_celltype .
Only CONNID for 3rd record
            ELSEIF sy -tabix  3 .
                ls_celltype -columnname  'CONNID' .
                ls_celltype - value      if_salv_c_cell_type =>button .
                APPEND ls_celltype  TO lt_celltype .
Entire 5th record
            ELSEIF sy -tabix  5 .
                ls_celltype -columnname  ".
                ls_celltype - value      if_salv_c_cell_type => hotspot .
                APPEND ls_celltype  TO lt_celltype .
            ENDIF .
            《lfs_spfli》 -i_celltype  lt_celltype .
        ENDLOOP .

    ENDMETHOD .                     "get_data
*
    METHOD generate_output .
New ALV instance
        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 .
*
Setting up the Columns
        me ->set_columns (  ) .

Displaying the ALV
        o_alv ->display (  ) .

    ENDMETHOD .                     "generate_output
*
    METHOD set_columns .
*
*...Get all the Columns
        DATA : lo_cols  TYPE  REF  TO cl_salv_columns_table .
        lo_cols  o_alv ->get_columns (  ) .
*
  set the Column optimization
        lo_cols ->set_optimize (  'X'  ) .

  Set the Cell Type
        TRY .
                lo_cols ->set_cell_type_column (  'I_CELLTYPE'  ) .
            CATCH cx_salv_data_error .                          "#EC NO_HANDLER
        ENDTRY .

    ENDMETHOD .                     "SET_COLUMNS

*
*
ENDCLASS .                     "lcl_report IMPLEMENTATION
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值