天天看点

改变ALV单元格属性

 我们可以设置ALV单元格的属性,比如:设置颜色,改变单元格的属性(选择框,按钮,超链接,下拉菜单)等,在这里,仅仅对设置颜色进行代码描述,如果有其他要求,可以与我联系,[email protected]

1.定义相关属性

* type for internal table

TYPES: BEGIN OF t_sflight.

        INCLUDE STRUCTURE sflight.

* internal table for cell color information

it_colors TYPE lvc_t_scol,

END OF t_sflight.

* Internal table

DATA: it_sflight TYPE TABLE OF t_sflight.

* Workarea for data fetch

DATA: wa_sflight LIKE LINE OF it_sflight.

* Switch for list display yes / no

DATA: list_display TYPE sap_bool.

* Reference for container control

DATA: gr_cont TYPE REF TO cl_gui_custom_container.

* Reference for ALV instance

DATA: gr_alv TYPE REF TO cl_salv_table.

* Reference for error situations

DATA: gr_error TYPE REF TO cx_salv_error.

* user-command from dynpro

DATA: ok_code LIKE sy-ucomm.

2.选择数据,处理数据

  SELECT *

  FROM sflight

  INTO CORRESPONDING FIELDS OF TABLE it_sflight

  WHERE carrid IN so_car

  AND connid IN so_con.

* fill additional data fields

  LOOP AT it_sflight INTO wa_sflight.

* cell colors

* single cell if planetype is 747-400

    IF wa_sflight-planetype = '747-400'.

      CLEAR wa_colors.

      wa_colors-fname = 'PLANETYPE'.

      wa_colors-color-col = '6'.

      wa_colors-color-int = 0.

      APPEND wa_colors TO wa_sflight-it_colors.

    ENDIF.

    MODIFY it_sflight FROM wa_sflight TRANSPORTING it_colors .

  ENDLOOP.

3.显示ALV

* create container control

* and link it to the dynpro

    CREATE OBJECT gr_cont

    EXPORTING

    container_name = 'MY_CONTAINER'

    EXCEPTIONS

    OTHERS = 1

    .

    IF sy-subrc <> 0.

      MESSAGE a015(bc405).

* Error when creating the container object.

    ENDIF.

* create ALV and

* link it to the container control

    TRY.

        cl_salv_table=>factory(

        EXPORTING

* LIST_DISPLAY = IF_SALV_C_BOOL_SAP=>FALSE

        r_container = gr_cont

* CONTAINER_NAME =

        IMPORTING

        r_salv_table = gr_alv

        CHANGING

        t_table = it_sflight

        ).

      CATCH cx_salv_msg INTO gr_error.

    ENDTRY.

    PERFORM define_settings USING gr_alv.

* display alv

    gr_alv->display( ).

form define_settings  using    p_alv.

  * set count column

  lr_columns->set_count_column(

  value = 'LINE_COUNTER' ).

* set cell colors / line colors column

  lr_columns->set_color_column(

  value = 'IT_COLORS' ).

endform.