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

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


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

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


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

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