Текущее время: Пт, май 24 2024, 01:50

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


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

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


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

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