Текущее время: Вт, июл 29 2025, 13:38

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Как переприсвоить значение в ALV_GRID
СообщениеДобавлено: Чт, мар 04 2010, 15:59 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, фев 05 2009, 14:12
Сообщения: 64
Пол: Мужской
Не могу переприсвоить значение.
Ситуация такая:
Делаю проверку если значение такое в базе есть в событии handle_data_changed
то обратно присвоить на прежнее значение.
Но на экран выдается то значение которое я прописал.
Не знаю уже все перерыл не могу найти событие которое смогло дать возможность присвоить прежнее значение.
Причем делаю refresh вручную в таблице сидит значение которое я прописал.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как переприсвоить значение в ALV_GRID
СообщениеДобавлено: Чт, мар 04 2010, 16:06 
Почетный гуру
Почетный гуру

Зарегистрирован:
Пт, дек 04 2009, 12:52
Сообщения: 219
Ранее обсуждалось http://www.sapboard.ru/forum/viewtopic.php?f=13&t=56473&p=356813#p356813


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как переприсвоить значение в ALV_GRID
СообщениеДобавлено: Чт, мар 04 2010, 16:07 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Nurzhan написал:
Не могу переприсвоить значение.
Ситуация такая:
Делаю проверку если значение такое в базе есть в событии handle_data_changed
то обратно присвоить на прежнее значение.
Но на экран выдается то значение которое я прописал.
Не знаю уже все перерыл не могу найти событие которое смогло дать возможность присвоить прежнее значение.
Причем делаю refresh вручную в таблице сидит значение которое я прописал.

Попробуйте событие data_changed_finished.
Вообще, я думаю, правильнее было бы закинуть ошибку в лог алв-редактора в событие check_changed_data.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как переприсвоить значение в ALV_GRID
СообщениеДобавлено: Чт, мар 04 2010, 16:10 
Почетный гуру
Почетный гуру

Зарегистрирован:
Пт, дек 04 2009, 12:52
Сообщения: 219
Зачем в data_finished?
по той ссылке, что я дал, есть готовые примеры.
Прямо в data_changed пишем:
Code:
          CALL METHOD er_data_changed->modify_cell
            EXPORTING
              i_row_id    = ls_good_cell-row_id
              i_tabix     = space
              i_fieldname = 'ZZPERNR_TXT'
              i_value     = l_zzpernr_txt.



Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как переприсвоить значение в ALV_GRID
СообщениеДобавлено: Чт, мар 04 2010, 16:34 
Гость
Не знаю наверняка, может не до конца поняла, но было похожее.


Тут несколько этапов обработки.

1) data_changed
Code:
  METHOD data_changed.

* надо иметь в виду что здесь новой записи ещё нет в нашей внутренней таблице
    LOOP AT pr_data_changed->mt_mod_cells INTO ls_good.     
* проверим:
          CLEAR l_priznak.
          PERFORM check USING ls_outtab          " тут ваша проверка
                                CHANGING l_priznak.
          IF l_priznak = 'X'.
            " нельзя редактировать эти поля
            MESSAGE i000(0k) WITH text-m06 text-m07.               " сообщение - нельзя менять, возвращаем прежнее значение
            PERFORM data_changed_lock_nak USING  pr_data_changed.
            error_in_data = 'X'.
            EXIT. "
          ENDIF.      " l_priznak = 'X'
  ENDMETHOD. 

FORM data_changed_lock_nak USING  er_data_changed TYPE REF TO
                                         cl_alv_changed_data_protocol.

  DATA:
            gs_mod_lock_nak    LIKE LINE OF gt_mod_lock_nak,
            ls_mod_row     TYPE lvc_s_modi,
            l_row TYPE i.


  LOOP AT er_data_changed->mt_good_cells INTO  ls_mod_row .

    READ TABLE gt_naklad INTO gs_mod_lock_nak INDEX ls_mod_row-row_id.
    IF sy-subrc = 0.
      MOVE-CORRESPONDING   gs_mod_lock_nak TO gt_mod_lock_nak.
      READ TABLE gt_mod_lock_nak WITH KEY idn = gs_mod_lock_nak-idn
                                          god = gs_mod_lock_nak-god.
      IF sy-subrc <> 0.
        APPEND gt_mod_lock_nak.
      ENDIF.
    ENDIF.

  ENDLOOP.


2 часть:
data_changed_finished

Code:
  FIELD-SYMBOLS:
                   <l_fname_otch>     TYPE ANY
                 , <l_field_otch>     TYPE ANY
                 , <l_field_lock>     TYPE ANY
                 .

  LOOP AT ret_good_cells INTO ls_modi.
    READ TABLE gt_naklad INDEX ls_modi-row_id.     
    CHECK sy-subrc = 0.
    READ TABLE gt_mod_lock_nak INTO ls_sf_lock.
    IF sy-subrc <> 0.
......
    ELSE.
      " возвращаем прежнее значение в ячейку?
      ASSIGN ls_modi-fieldname TO <l_fname_otch>.
      CHECK sy-subrc EQ 0.
      ASSIGN COMPONENT <l_fname_otch>
                       OF STRUCTURE gt_naklad TO <l_field_otch>.        " новые значения..
      CHECK sy-subrc EQ 0.
      ASSIGN COMPONENT <l_fname_otch>
                       OF STRUCTURE ls_sf_lock TO <l_field_lock>.        " из прежней строки
      CHECK sy-subrc EQ 0.
      <l_field_otch> = <l_field_lock>.
*        l_stable = 'X'.
    ENDIF.      "      READ TABLE gt_mod_lock
ENDLOOP.
  REFRESH: gt_mod_lock_nak .



Обратите внимание, что в data_changed используется табличка mt_mod_cells (то есть все изменённые ячейки), а в data_changed_finished используется табличка et_good_cells, то есть те, которые проверены и 'хорошие'.


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения: Re: Как переприсвоить значение в ALV_GRID  Тема решена
СообщениеДобавлено: Чт, мар 04 2010, 16:43 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, фев 05 2009, 14:12
Сообщения: 64
Пол: Мужской
Спасибо, всем!
Получилось используя событие modify_cell.


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

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


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

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


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

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