code: *&-----------------------------------------------------..." />
当前位置: 代码迷 >> 综合 >> ALVnbsp;demo:cl_salv_table(Ap…
  详细解决方案

ALVnbsp;demo:cl_salv_table(Ap…

热度:96   发布时间:2024-01-18 13:39:34.0
效果: 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
  相关解决方案