Окрашивание ячеек сетки ALV динамически (CL_SALV_TABLE) - PullRequest
0 голосов
/ 25 сентября 2019

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

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

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

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

1 Ответ

3 голосов
/ 25 сентября 2019

Добавьте еще один столбец 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( ).
...