Динамическое окрашивание ячеек сетки ALV (CL_SALV_TABLE)

Мне нужно динамически раскрашивать ячейки сетки ALV. Я использую CL_SALV_TABLE.

Например. в моем случае я выбираю данные из таблицы данных в соответствии с параметром. Я хочу отобразить выбранные результаты в ALV-сетке. -> пока все работает как мне нужно.

Теперь я хочу покрасить в красный цвет ячейки сетки, которые имеют начальное или нулевое значение.

Это возможно? Если да, то как это сделать?


person D.Ge.    schedule 25.09.2019    source источник
comment
В Интернете есть много ответов, вы могли бы хотя бы попробовать их и вернуться, если потерпите неудачу, и зададите более точный вопрос, включая минимальный воспроизводимый пример.   -  person Sandra Rossi    schedule 25.09.2019
comment
Какую технологию ИВЛ вы используете? (REUSE_ALV_GRID_DISPLAY, CL_GUI_ALV_GRID, CL_SALV_TABLE, Web Dynpro, ...)   -  person Sandra Rossi    schedule 25.09.2019
comment
Я использую cl_salv_table!   -  person D.Ge.    schedule 25.09.2019


Ответы (1)


Добавьте еще один столбец type lvc_t_scol в свою окончательную таблицу вывода, заполните его и скажите ALV использовать его в качестве столбца цвета.

Вот сообщение в блоге , которое включает возможные цвета.

* declaration of output table with color column
TYPES: BEGIN OF lty_output,
         carrid   TYPE  scarr-carrid,
         carrname TYPE  scarr-carrname,
         color    TYPE  lvc_t_scol,
       END OF lty_output.

DATA gt_output TYPE STANDARD TABLE OF lty_output.

* filling color column of output table (e.g. based on condition during a LOOP)
DATA: ls_color TYPE lvc_s_scol,
      lt_color TYPE lvc_t_scol.

gt_output = VALUE #(
    ( carrid = 'AA' carrname = 'American Airlines' color = VALUE #(
        ( fname = 'CARRNAME' color = VALUE #( col = 6 int = 0 inv = 0 ) ) ) )
    ( carrid = 'AF' carrname = 'Air France' color = VALUE #(
        ( fname = 'CARRID'   color = VALUE #( col = 7 int = 0 inv = 0 ) )
        ( fname = 'CARRNAME' color = VALUE #( col = 5 int = 0 inv = 0 ) ) ) )
    ( carrid = 'LH' carrname = 'Lufthansa' color = VALUE #(
        ( fname = ''         color = VALUE #( col = 3 int = 0 inv = 0 ) ) ) ) ).

cl_salv_table=>factory(
    IMPORTING
        r_salv_table = DATA(go_alv)
    CHANGING
        t_table = gt_output ).

* setting color column
go_alv->get_columns( )->set_color_column( 'COLOR' ).

go_alv->display( ).
person Legxis    schedule 25.09.2019