Текущее время: Пн, июл 28 2025, 21:25

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


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

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


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

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