Текущее время: Вт, июл 22 2025, 23:24

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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