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

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: cl_gui_alv_grid и вывод протокола
СообщениеДобавлено: Пн, фев 21 2011, 07:46 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, авг 03 2009, 15:37
Сообщения: 292
Откуда: Алматы
Пол: Мужской
Здравствуйте господа...

Если позволите, у меня возник вопрос.
Вывожу данные через вышеуказанный класс.
Опишу ситуацию. При событии data_changed провожу проверку на дублирование по ключевым полям и выходит журнал ошибок как положено(ситуация когда я копирую или добавляю строчку). Потом я меняю строчку, чтобы не было дублирования, журнал не выходит - это правильно... Потом эту же строчку меняю на исходные значения, журнал выходит один раз при нажатии на какую-либо клавишу, а если нажать второй раз (хоть на Enter) журнал не выходит - это раз, программа не лезет в событие data_changed - это два, и третье - клавиши класса не отрабатывают.
В чем глюк, мне пока не совсем понятно. Может кто сталкивался, поделитесь как обошли?

_________________
Все в этом мире стоит под сомнением, над сомнением – только google...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: cl_gui_alv_grid и вывод протокола
СообщениеДобавлено: Пн, фев 21 2011, 12:20 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Да вроде как нет тут никаких глюков, за исключением "клавиши класса не отрабатывают", что за клавиши?

События
cl_gui_alv_grid=>mc_evt_modified
cl_gui_alv_grid=>MC_EVT_ENTER
не зарегистрированы?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: cl_gui_alv_grid и вывод протокола
СообщениеДобавлено: Пн, фев 21 2011, 14:59 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пт, июл 01 2005, 13:23
Сообщения: 303
Откуда: Питер
Пол: Мужской
А какой версии у вас Гуй? Попробуйте на других версиях гуя посмотреть, может там будет иначе... проходили что-то подобное...

_________________
Всему своё время...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: cl_gui_alv_grid и вывод протокола
СообщениеДобавлено: Пн, фев 21 2011, 15:54 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, авг 03 2009, 15:37
Сообщения: 292
Откуда: Алматы
Пол: Мужской
Besa написал:
Да вроде как нет тут никаких глюков, за исключением "клавиши класса не отрабатывают", что за клавиши?

События
cl_gui_alv_grid=>mc_evt_modified
cl_gui_alv_grid=>MC_EVT_ENTER
не зарегистрированы?


События зарегистрированы...

Под клавишами класса я имел ввиду свои клавиши(сорри, не правильно выразился), и обработкой их в событии USER_COMMAND...По сути до туда даже не дохожу , хотя лог тоже не выходил...
Ну ладно это не самое главное, хотел сделать красиво,
такая штука, ввожу новую строчку, если ошибка, в событии data_changed выходит журнал ошибок
CALL METHOD er_data_changed->display_protocol. Если не изменяя этой строчки нажать на Enter программа понимает это так как будто бы не было изменений и не проходит в событие изменений. Получается я могу данные к примеру сохранить, хотя ошибки есть... А хотелось бы выводить сообщение пока не исправят или удалять строку.

_________________
Все в этом мире стоит под сомнением, над сомнением – только google...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: cl_gui_alv_grid и вывод протокола
СообщениеДобавлено: Пн, фев 21 2011, 16:06 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пт, июл 01 2005, 13:23
Сообщения: 303
Откуда: Питер
Пол: Мужской
Делайте ещё раз проверки в data_changed_finished или в user_command... Вариантов у Вас похоже немного.

* Да-Да, вот чуть ниже всё верно про check_changed_data...

_________________
Всему своё время...


Последний раз редактировалось Preatos Пн, фев 21 2011, 16:17, всего редактировалось 2 раз(а).

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: cl_gui_alv_grid и вывод протокола
СообщениеДобавлено: Пн, фев 21 2011, 16:13 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Все правильно, имхо. Вы сделали какие то изменения, далее, по энтеру или по уходу с ячейки, система попадает в data_change и выдает лог. Далее, если Вы не делали изменений система не проходит в событие и лога нету, все правильно. Что же теперь система будет "долбать" пользователя пока он не исправит? Его проинформировали он пошел дальше. А при сохранении вызываете метод check_change_data, он Вам как раз таки "дернет" data_change + еще там должна быть кнопка на тулбаре соответствующая check_change_data.

На счет USER_COMMAND и Ваших кнопок я так и не понял, Вы там все правильно сделали? события зарегистрировали? статус создали? Гляньте пример BCALV_GRID_05.

Также хотел спросить, Вы в стандарте где-нибудь видели желаемое поведение грида?

И еще проверьте на всякий случай то о чем написал Preatos (про гуй).


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: cl_gui_alv_grid и вывод протокола
СообщениеДобавлено: Пн, фев 21 2011, 16:25 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пт, июл 01 2005, 13:23
Сообщения: 303
Откуда: Питер
Пол: Мужской
Besa написал:
А при сохранении вызываете метод check_change_data, он Вам как раз таки "дернет" data_change + еще там должна быть кнопка на тулбаре соответствующая check_change_data.


Хотя это не сработает похоже... Метод save_data у грида получает ствоство "IsModified" и если оно не "X" не дергает data_change... Придётся заставлять :)

_________________
Всему своё время...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: cl_gui_alv_grid и вывод протокола
СообщениеДобавлено: Пн, фев 21 2011, 16:52 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Preatos написал:
Besa написал:
А при сохранении вызываете метод check_change_data, он Вам как раз таки "дернет" data_change + еще там должна быть кнопка на тулбаре соответствующая check_change_data.


Хотя это не сработает похоже... Метод save_data у грида получает ствоство "IsModified" и если оно не "X" не дергает data_change... Придётся заставлять :)

Может я не правильно выразился, но я имел ввиду что должна быть своя кнопка "сохранить" и метод нужно вызывать вручную.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: cl_gui_alv_grid и вывод протокола
СообщениеДобавлено: Пн, фев 21 2011, 21:58 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, авг 03 2009, 15:37
Сообщения: 292
Откуда: Алматы
Пол: Мужской
Господа не совсем понял наверно.
Нарисовал в тулбаре кнопку "SAVE". Когда нажимаю кнопку вызываю метод SAVE_DATA, где вызывается метод
Code:
CALL METHOD go_algrid->check_changed_data
   IMPORTING E_VALID = l_valid

Проверил в отладчике в событие DATA_CHANGED не проваливаюсь, или я не так понял?

_________________
Все в этом мире стоит под сомнением, над сомнением – только google...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: cl_gui_alv_grid и вывод протокола
СообщениеДобавлено: Вт, фев 22 2011, 05:28 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Нет нет. Вызывайте сам метод check_changed_data, а не save_data.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: cl_gui_alv_grid и вывод протокола
СообщениеДобавлено: Вт, фев 22 2011, 06:42 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Пн, фев 14 2011, 07:26
Сообщения: 80
Откуда: Альфа Центавра
Пол: Мужской
У меня тоже всегда с протоколам траблы бывали. Поэтому в DATA_CHANGED стал заводить дополнительную глобальную переменную bValid (default ‘X’). В начале метода ставлю bValid = ABAP_TRUE. Если показываю протокол то скидываю в bValid = ABAP_FALSE. И постоянно ее анализирую.

А еще лучше наследовать от CL_GUI_ALV_GRID (завести bValid переменную на уровне класса) и переопределять базовый CHECK_CHANGED_DATA для пущей верности.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: cl_gui_alv_grid и вывод протокола
СообщениеДобавлено: Вт, фев 22 2011, 08:54 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, авг 03 2009, 15:37
Сообщения: 292
Откуда: Алматы
Пол: Мужской
Кажись я понял почему не выводился Журнал ошибок при втором нажатии на enter (выше):
Code:
        CALL METHOD ir_data_changed->add_protocol_entry
          EXPORTING
            i_msgid     = '0K'
            i_msgno     = '000'
            i_msgty     = 'E'
            i_msgv1     = 'Такая строка уже существует'
            i_fieldname = 'BUKRS'
            i_row_id    = ls_modi-row_id.

А если я исправил на не верное значение другое поле, не БЕ, при втором нажатии на enter лог не выйдет, а вот если править именно БЕ, хоть сто раз нажимай на enter Журнал ошибок будет выходить, та же ситуация с методом check_changed_data.
Отсюда возник вопрос, есть ли возможность выделить не ячейку (ir_data_changed->add_protocol_entry), а всю строку красным как ошибку?

_________________
Все в этом мире стоит под сомнением, над сомнением – только google...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: cl_gui_alv_grid и вывод протокола
СообщениеДобавлено: Вт, фев 22 2011, 09:22 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Пн, фев 14 2011, 07:26
Сообщения: 80
Откуда: Альфа Центавра
Пол: Мужской
loop по полям можно сделать


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: cl_gui_alv_grid и вывод протокола
СообщениеДобавлено: Вт, фев 22 2011, 09:53 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, авг 03 2009, 15:37
Сообщения: 292
Откуда: Алматы
Пол: Мужской
Конечно это вариант, но он выведет в логе одно и то же сообщение несколько раз. Не очень красиво получится...

_________________
Все в этом мире стоит под сомнением, над сомнением – только google...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: cl_gui_alv_grid и вывод протокола
СообщениеДобавлено: Вт, фев 22 2011, 11:29 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Пн, фев 14 2011, 07:26
Сообщения: 80
Откуда: Альфа Центавра
Пол: Мужской
Может это поможет

**********
Класс надстройка сетки
**********
Public Section.
data VALID type ABAP_BOOL value ABAP_TRUE.

methods check_changed_data redefinition .


method CHECK_CHANGED_DATA .
if C_REFRESH Is Supplied. "Если передали
SUPER->CHECK_CHANGED_DATA(
Importing
E_VALID = E_VALID
Changing
C_REFRESH = C_REFRESH ).
else. "Если не передадавли
SUPER->CHECK_CHANGED_DATA(
Importing
E_VALID = E_VALID ).
endIf.

* Если нормально
if E_VALID = ABAP_TRUE.
E_VALID = ME->VALID. “ <<< вот переменная
endIf.
endmethod.


**********
Метод листнер события
**********

method DATA_CHANGED.

* Все нормально
sender->VALID = ABAP_TRUE. “ <<< вот переменная

…..
if sender->VALID <> ABAP_TRUE.
er_data_changed->display_protocol( ).
Return.
endIf.
……

endmethod.



**********
Где-то в PAI
**********

* Данные в таблице не корректные
oGrid->check_changed_data( Importing e_valid = bValid ).
if bValid <> ABAP_TRUE.
Message ‘Исправьте табличные данные’ Type ‘E’.
endIf.


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

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


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

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


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

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