Текущее время: Пн, май 13 2024, 18:05

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Вызов DATA_CHANGED для смены цвета ячейки в гриде
СообщениеДобавлено: Ср, дек 21 2011, 12:28 
Начинающий
Начинающий

Зарегистрирован:
Сб, дек 03 2011, 11:51
Сообщения: 9
Информация выводится посредством REUSE_ALV_GRID_DISPLAY. На событие slis_ev_data_changed повешена процедура DATA_CHANGED, в которой изменяется цвет ячейки, если измененное количество больше количества в соседней ячейке.

Для того, чтобы поменялся цвет в конце DATA_CHANGED, я вызываю метод CALL METHOD l_grid->refresh_table_display. Отрабатывает все хорошо, если не делать предварительно сортировку.
А если сделать, то цвет поменяется в нужной ячейке, а вот количество - нет.

Пример:

Изменила количество в row_id=3
В DATA_CHANGED в строке row_id=3 изменился цвет.
Сделался refresh, и строка переместилась, к примеру, на 1-ую строчку.
Количество изменилось в той строчке, которая находится на 3-ей позиции, а не в той, которая изначально была на 3-ем месте.

Вопрос:
Можно ли где-то вызвать CALL METHOD l_grid->refresh_table_display, в другом месте (после изменения количества), и если да - то где?

Code:
REFRESH: events.
  events_line-name = slis_ev_data_changed.
  events_line-form = 'DATA_CHANGED'.
  APPEND events_line TO events.

  gset-edt_cll_cb = 'X'.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program       = l_mself
      it_fieldcat              = lt_fdcat      "i_callback_user_command = 'ALV_GRID_UCOMM'
      i_save                   = 'A'
      i_callback_pf_status_set = 'F_STAT_STANDARD'
      i_callback_user_command  = 'USER_COMMAND'
      is_layout                = x_layout
      i_grid_settings          = gset
      IT_EVENTs               = events[]

    TABLES
      t_outtab                 = gt_tab
    EXCEPTIONS
      program_error            = 1
      OTHERS                   = 2.
  IF sy-subrc IS NOT INITIAL.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

FORM data_changed USING
     rr_data_changed TYPE REF TO cl_alv_changed_data_protocol.

  DATA: w_itab TYPE LINE OF lvc_t_modi,
        itab TYPE lvc_t_modi,
        ix LIKE sy-tabix.

  itab[] = rr_data_changed->mt_mod_cells[].

  DATA: l_grid TYPE REF TO cl_gui_alv_grid.
  DATA: znum TYPE lips-lfimg.

  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
      e_grid = l_grid.

  FIELD-SYMBOLS <wa2> LIKE LINE OF gt_tab.
  LOOP AT itab INTO w_itab.
    ix = sy-tabix.

    CASE w_itab-fieldname.
      WHEN 'KMOV'.

        READ TABLE gt_tab ASSIGNING <wa2> INDEX w_itab-row_id.

        CALL FUNCTION 'MOVE_CHAR_TO_NUM'
          EXPORTING
            chr             = w_itab-value
          IMPORTING
            num             = znum
          EXCEPTIONS
            convt_no_number = 1
            convt_overflow  = 2
            OTHERS          = 3.
        IF sy-subrc <> 0.

        ENDIF.


        IF znum >  <wa2>-kulab.
          <wa2>-color = 'C612'.
        ELSE.
          <wa2>-color = ''.
        ENDIF.

        MODIFY gt_tab INDEX w_itab-row_id FROM <wa2>.
        w_itab-value = ''.
        MODIFY itab FROM w_itab.

    ENDCASE.



  ENDLOOP.

      CALL METHOD l_grid->refresh_table_display.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: DATA_CHANGED
СообщениеДобавлено: Ср, дек 21 2011, 12:46 
Специалист
Специалист

Зарегистрирован:
Вс, янв 11 2009, 11:05
Сообщения: 152
Пол: Мужской
А зачем перерисовывать весь грид если меняете значение в одной строке?
у CL_ALV_CHANGED_DATA_PROTOCOL есть метод MODIFY_CELL для изменения значения в конкретном поле строки
и MODIFY_STYLE для изменения стиля.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: DATA_CHANGED
СообщениеДобавлено: Ср, дек 21 2011, 14:29 
Начинающий
Начинающий

Зарегистрирован:
Сб, дек 03 2011, 11:51
Сообщения: 9
Мне нужно всю строку выделить красным, для этого я завела специальное поле COLOR, в котором я и меняю значение, в зависимости от условия.
modify_cell не меняет значение в поле COLOR, либо просто строка не перекрашивается(


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: DATA_CHANGED
СообщениеДобавлено: Ср, дек 21 2011, 21:26 
Специалист
Специалист

Зарегистрирован:
Вс, янв 11 2009, 11:05
Сообщения: 152
Пол: Мужской
MODIFY_CELL в поле цветов и стилей не меняет. это верно.
MODIFY_STYLE может и меняет цвета, правда не уверен. Надо будет завтра попробовать.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: DATA_CHANGED
СообщениеДобавлено: Пн, сен 02 2019, 12:02 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, ноя 08 2018, 14:09
Сообщения: 88
Откуда: Челябинск
Пол: Мужской
Modify_style цвета меняет, но нигде не нашел по какому принципу.


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

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


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

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


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

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