Текущее время: Ср, июл 23 2025, 00:35

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Выделение строк цветом в ALV
СообщениеДобавлено: Пн, окт 01 2012, 08:35 
Специалист
Специалист

Зарегистрирован:
Чт, май 06 2010, 18:14
Сообщения: 152
Здравствуйте. Возможно ли присоздании ALV с помощью cl_salv_table=>factory выделить отдельные строки цветом? В примерах нашла только окраску столбцов.
Заранее спасибо.

_________________
Я не волшебник, я только учусь.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Выделение строк цветом в ALV
СообщениеДобавлено: Пн, окт 01 2012, 12:44 
Ассистент
Ассистент

Зарегистрирован:
Пн, июн 27 2011, 15:21
Сообщения: 31
Хм.. если делать через ФМ 'REUSE_ALV_GRID_DISPLAY', то можно так:

Code:
TYPE-POOLS: slis.
INCLUDE <cl_alv_control>.

DATA: BEGIN OF tab,
  connid TYPE sflight-connid,
  carrid TYPE sflight-carrid,
  line_color(4) TYPE c,
END OF tab,
wa_tab LIKE TABLE OF tab WITH HEADER LINE.

DATA: gt_fieldcat_detail TYPE slis_t_fieldcat_alv.
DATA: gt_fieldcat_slis TYPE slis_t_fieldcat_alv.
DATA: g_repid TYPE sy-repid.
DATA: gs_layout_slis TYPE slis_layout_alv.
DATA: gs_print_slis TYPE slis_print_alv.
DATA: tabkey TYPE slis_t_fieldcat_alv WITH HEADER LINE.

START-OF-SELECTION.

  SELECT connid carrid FROM sflight UP TO 15 ROWS
    INTO CORRESPONDING FIELDS OF TABLE wa_tab.

  LOOP AT wa_tab.
    IF sy-tabix < 3.
      wa_tab-line_color = 'C510'.
      MODIFY wa_tab.
    ENDIF.
  ENDLOOP.

  PERFORM build_fieldcatalog.
  PERFORM alv.

END-OF-SELECTION.

*&---------------------------------------------------------------------*
*&      Form  alv
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM alv.
  g_repid = sy-repid.
  gs_layout_slis-info_fieldname    = 'LINE_COLOR'.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_buffer_active    = 'X'
      i_callback_program = g_repid
      is_layout          = gs_layout_slis
      it_fieldcat        = gt_fieldcat_slis
      i_save             = ' '
      is_print           = gs_print_slis
    TABLES
      t_outtab           = wa_tab
    EXCEPTIONS
      program_error      = 1
      OTHERS             = 2.

  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
ENDFORM.                    "alv

*&---------------------------------------------------------------------*
*&      Form  build_fieldcatalog
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM build_fieldcatalog.

  tabkey-fieldname = 'CONNID'.
  tabkey-tabname = 'wa_tab'.
  tabkey-seltext_l = 'Код авиасообщения'.
  APPEND tabkey.
  CLEAR tabkey.
  tabkey-fieldname = 'CARRID'.
  tabkey-tabname = 'wa_tab'.
  tabkey-seltext_l = 'Название авиакомпании'.
  APPEND tabkey.
  CLEAR tabkey.

  LOOP AT tabkey.
    tabkey-col_pos = sy-tabix.
    IF sy-tabix NE 1.
      tabkey-just = 'L'.
    ENDIF.
    APPEND tabkey TO gt_fieldcat_slis.
  ENDLOOP.

ENDFORM.                    "build_fieldcatalog


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Выделение строк цветом в ALV
СообщениеДобавлено: Пн, окт 01 2012, 12:48 
Ассистент
Ассистент

Зарегистрирован:
Пн, июн 27 2011, 15:21
Сообщения: 31
А в вашем случае по-моему нельзя полностью красить разом строку. Только по ячейкам. Через методы get_columns и set_color_column.

p.s. тут получше пример: http://www.kerum.pl/infodepot/00005

Code:
TYPE-POOLS: icon, col.

TYPES: BEGIN OF t_marc.
        INCLUDE STRUCTURE marc.
TYPES : it_colors TYPE lvc_t_scol,
END OF t_marc.

DATA: it_marc TYPE TABLE OF t_marc.
DATA: wa_marc LIKE LINE OF it_marc.
DATA: wa_colors LIKE LINE OF wa_marc-it_colors.

DATA: gr_alv TYPE REF TO cl_salv_table.
DATA: lr_columns TYPE REF TO cl_salv_columns_table.

SELECT-OPTIONS: s_mat FOR wa_marc-matnr MEMORY ID car.

START-OF-SELECTION.

  SELECT * FROM marc
    INTO CORRESPONDING FIELDS OF TABLE it_marc
  WHERE matnr IN s_mat.

  LOOP AT it_marc INTO wa_marc.

    IF wa_marc-werks = '300'.
      CLEAR wa_colors.
      wa_colors-fname = 'WERKS'.
      wa_colors-color-col = col_negative.
      wa_colors-color-int = 1.
      APPEND wa_colors TO wa_marc-it_colors.
    ENDIF.
    MODIFY it_marc FROM wa_marc TRANSPORTING it_colors.
  ENDLOOP.

  CALL METHOD cl_salv_table=>factory
    EXPORTING
      list_display = if_salv_c_bool_sap=>false
    IMPORTING
      r_salv_table = gr_alv
    CHANGING
      t_table      = it_marc.

  lr_columns = gr_alv->get_columns( ).

  lr_columns->set_color_column( value = 'IT_COLORS' ).

  gr_alv->display( ).


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Выделение строк цветом в ALV
СообщениеДобавлено: Пн, окт 01 2012, 13:47 
Специалист
Специалист

Зарегистрирован:
Чт, май 06 2010, 18:14
Сообщения: 152
Спасибо большое.

_________________
Я не волшебник, я только учусь.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB