27 апреля 2011 г.

ABAP: стили ячеек в ALV GRID.

Список возможных значений стилей можно или даже нужно брать из инклуда <CL_ALV_CONTROL>.

Вариант 1:
Стиль для столбца можно указать в филд-каталоге (LVC_T_FCAT) в полях:
    STYLE
    STYLE2
    STYLE3
    STYLE4

Пример:
  ls_fcat-style = ALV_STYLE_COLOR_INT_BACKGROUND + ALV_STYLE_ALIGN_CENTER_CENTER.

Вариант 2:
Если необходимо чтобы разные стили были у разных произвольных ячеек, то в стуктуру вашей внутренней таблицы для ALV придется ввести поле типа LVC_T_STYL. В нем будет заполняться таблица стилей для каждой ячейки выбранной строки.

Структура этой таблицы выглядит так:
    FIELDNAME TYPE LVC_FNAME,
    STYLE     TYPE LVC_STYLE,
    STYLE2    TYPE LVC_STYLE,
    STYLE3    TYPE LVC_STYLE,
    STYLE4    TYPE LVC_STYLE,
    MAXLEN    TYPE INT4.

И собственно заполняется так же как и в филд-каталоге, только для каждой ячейки каждой строки вашей внутренней таблицы для ALV. Важно, таблица стилей должна заполняться так, чтобы в результате получилась таблица отсортированная по FIELDNAME.

Ну и в конце концов необходимо указать имя поля с таблицей стилей в лэйаут ALV (LVC_S_LAYO).

Пример:
  tcalend_g_layo-sel_mode = 'A'.
  tcalend_g_layo-stylefname = 'CELLTAB'.

5 комментариев:

  1. Дописал бы ещё:
    - какие ALV_STYLE_* существуют и где их смотреть.
    - почему 4 поля STYLE*, чем они отличаются?
    - если надо выделить всю строку - обязательно все ячейки упоминать в LVC_T_STYL?

    ОтветитьУдалить
  2. Ответы на первые 2 вопроса лежат в инклуде CL_ALV_CONTROL, там указаны все константы и разделены на блоки для каждой переменной, надо просто заглянуть в инклуд.
    На второй вопрос, видимо да, если надо что-то именно в стиле поменять для всей строки, а не только цвет, то надо будет заполнять для всех ячеек.
    Если надо выделить только цветом, то можно сделать по другому, проще.

    ОтветитьУдалить
  3. Это в какой версии SAP имеется такой инклуд CL_ALV_CONTROL интересно??
    Константы лежат в самом классе CL_GUI_ALV_GRID.

    MC_STYLE4_LINK
    MC_STYLE4_LINK_NO
    MC_STYLE_BUTTON
    MC_STYLE_DISABLED
    MC_STYLE_ENABLED
    MC_STYLE_F4
    MC_STYLE_F4_NO
    MC_STYLE_HOTSPOT
    MC_STYLE_HOTSPOT_NO
    MC_STYLE_NO_DELETE_ROW

    ОтветитьУдалить
  4. Этот комментарий был удален автором.

    ОтветитьУдалить
  5. "Это в какой версии SAP имеется такой инклуд CL_ALV_CONTROL" - обрезались символы открытия закрытия тега

    ОтветитьУдалить