Текущее время: Пт, июл 18 2025, 11:01

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Обновление грида после события "DATA_CHANGED"
СообщениеДобавлено: Ср, янв 12 2011, 06:24 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
nickan, внимательно прочитайте тему. :wink:


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обновление грида после события "DATA_CHANGED"
СообщениеДобавлено: Ср, янв 12 2011, 08:26 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Чт, янв 14 2010, 13:26
Сообщения: 70
Откуда: Санкт-Петербург
Пол: Мужской
Если кому интересно - я решил эту проблему полным извратом, в связи с тем, что времени много нет...
После
Code:
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

Потом получаю объект этого алв
Code:
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
      E_GRID = L_GRID.


Code:
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,
        lt_fcat        TYPE LVC_T_FCAT,
        event_receiver TYPE REF TO lcl_event_receiver.

  itab[] = rr_data_changed->mt_mod_cells[].

  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
      E_GRID = L_GRID.

  LOOP AT itab INTO w_itab.
    ix = sy-tabix.

    CASE w_itab-fieldname.
      WHEN 'VIBOR'.
        READ TABLE IT_ztdocinfo INDEX w_itab-row_id.
        IF w_itab-value = 'X' AND
          ( ( IT_ztdocinfo-NALICHIE = icon_led_green AND p_create = 'X' ) OR
          ( IT_ztdocinfo-NALICHIE = icon_led_red AND p_change = 'X' ) ).
          IT_ztdocinfo-temp = 'X'.
          MODIFY IT_ztdocinfo INDEX w_itab-row_id.

        ENDIF.
    ENDCASE.
  ENDLOOP.

  IF event_receiver IS INITIAL.   "Такой изврат нужен чтобы отловить изменения редактируемых полей
    CREATE OBJECT event_receiver.
    SET HANDLER event_receiver->handle_data_changed_finished FOR L_GRID.
  ENDIF.

ENDFORM.                    "data_changed


Code:
CLASS lcl_event_receiver DEFINITION.

  PUBLIC SECTION.

    METHODS:
    handle_DATA_CHANGED_FINISHED
        FOR EVENT DATA_CHANGED_FINISHED OF cl_gui_alv_grid
            IMPORTING E_MODIFIED ET_GOOD_CELLS.

  PRIVATE SECTION.
    DATA: ls_stable TYPE lvc_s_stbl.
*&
ENDCLASS.                    "lcl_event_receiver DEFINITION

*----------------------------------------------------------------------*
*       CLASS lcl_event_receiver IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_event_receiver IMPLEMENTATION.
  method handle_DATA_CHANGED_FINISHED.
    DATA:
          IS_stable  TYPE LVC_S_STBL.

    LOOP AT IT_ztdocinfo INTO TEMP_ZT where temp = 'X'.
      TEMP_ZT-vibor = ''.
      MODIFY IT_ztdocinfo FROM TEMP_ZT.
    ENDLOOP.

    IS_stable-ROW = 'X'.
    IS_stable-COL = 'X'.
    CALL METHOD L_GRID->REFRESH_TABLE_DISPLAY( IS_STABLE = IS_stable ).
  endmethod.                    "handle_DATA_CHANGED_FINISHED

ENDCLASS.                    "lcl_event_receiver IMPLEMENTATION


Получился полный бред, зато работает... Все из-за того, что ALV лучше сразу лупить через классы, 'REUSE_ALV_GRID_DISPLAY' - прошлый век получается....


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу Пред.  1, 2

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


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

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


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

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