Текущее время: Чт, апр 19 2018, 21:44

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: отслеживание изменений ВНУТРЕННЕЙ таблицы в процессе выполнения проги
СообщениеДобавлено: Вс, апр 23 2017, 12:54 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, окт 14 2004, 19:02
Сообщения: 409
Откуда: из HR
Пол: Мужской
Коллеги, приветствую,

вопрос из разряда теории ABAP, обращаюсь за советом к коллективному ABAP-разуму :) Есть достаточно большая Z-программа с кучей инклюдов, в которой нужно логировать все изменения (изменение любого из полей) одной из внутренних таблиц в процессе работы программы. Логически я понимаю, что для этого нужно во всех местах где происходит запись/изменение данной внутренней таблицы, добавить обработчик с сохранением лога. Вот только не хочется этого делать, прога, как я уже писал, достаточно большая, и не хочется "медленно и печально" анализировать все вызовы и вносить изменения в код в куче инклюдов. И появилась мысль, а есть ли возможность в абап организовать нечто подобное в виде контроля за изменениями, объявив, например, ОДИН РАЗ ссылку на данную таблицу через фиелд-символ и на протяжении работы Z-программы все изменения данного фиелд-символа писать параллельно в некую третью лог-тиблицу (а ля инструкции "ON CHANGE OF").
Поделитесь, пожалуйста, мыслями относительно подобной идеи реализации.

С уважением,
Дмитрий


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: отслеживание изменений ВНУТРЕННЕЙ таблицы в процессе выполнения проги
СообщениеДобавлено: Вс, апр 23 2017, 18:19 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 17:44
Сообщения: 2920
Откуда: Москва
Непонятно, зачем нужна такая странная отладка. :?
Можно запустить транзакцию SAT, установив только измерение изменения внутренних таблиц.
Но при этом значения изменений естественно не будут видны.

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: отслеживание изменений ВНУТРЕННЕЙ таблицы в процессе выполнения проги
СообщениеДобавлено: Вс, апр 23 2017, 19:03 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, окт 14 2004, 19:02
Сообщения: 409
Откуда: из HR
Пол: Мужской
Коллега,

вопрос не про отладку, а про экономию времени на разработке, забудьте слово "логирование изменений", просто представьте, что есть большая и старая прога, которую нужно немного расширить и естественно не хочется копаться во всех нюансах кода, хотелось бы как-то оптимизировать свое время и появилась описанная выше идея. Скорее всего это не реализуемо, на своем уровне знания абапа я не вижу других вариантов, кроме описанного мною в первом посте, потому я задал вопрос сообществу, т.к. если всё же есть какой-то вариант, было бы интересно на него взглянуть :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: отслеживание изменений ВНУТРЕННЕЙ таблицы в процессе выполнения проги
СообщениеДобавлено: Вс, апр 23 2017, 22:28 
Модератор
Модератор

Зарегистрирован:
Пн, июн 27 2011, 09:25
Сообщения: 408
в CL_GUI_ALV_GRID есть event DATA_CHANGED
можете создать объект и отслеживать эти изменения.
он Вам даже номер ячейки скажет ...

но даже если все изменения будут идти через event, то это утяжелит программу.
лучше взять блок программы и там проверить таблицу до и после, и в другом блоке то же самое.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: отслеживание изменений ВНУТРЕННЕЙ таблицы в процессе выполнения проги
СообщениеДобавлено: Вс, апр 23 2017, 22:45 
Модератор
Модератор

Зарегистрирован:
Пн, июн 27 2011, 09:25
Сообщения: 408
хотя лучше так:
1) по поиску посмотреть где используется таблица
2) после каждого места написать вызов метода
lo_log->check_table( table_to_be_logged).

в lo_log сделать атрибут с предыдущим содержимым таблицы.
и отслеживать изменения через этот метод.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: отслеживание изменений ВНУТРЕННЕЙ таблицы в процессе выполнения проги
СообщениеДобавлено: Пн, апр 24 2017, 06:34 
Специалист
Специалист

Зарегистрирован:
Чт, мар 25 2010, 10:02
Сообщения: 204
Посмотрите сюда и сюда. Но я не уверен можно ли эту функциональность запустить не вызывая сам отладчик, может быть вы что-то найдете.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: отслеживание изменений ВНУТРЕННЕЙ таблицы в процессе выполнения проги
СообщениеДобавлено: Пн, апр 24 2017, 12:44 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, дек 20 2007, 19:21
Сообщения: 1044
Есть такая штука называется log-point. Но ее нужно писать руками

https://wiki.scn.sap.com/wiki/display/ABAP/Checkgroups

А вобще, в случае если не совсем понимаем, как работает большая и комплексная прога, а создатель уволился, то ее лучше выбрасывать и писать новую. Даже рефакторить не советую. Несколько раз такие сценарии проходил.

_________________
я твой сап эфай внедрял


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: отслеживание изменений ВНУТРЕННЕЙ таблицы в процессе выполнения проги
СообщениеДобавлено: Пн, апр 24 2017, 15:04 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 21:32
Сообщения: 2446
Пол: Мужской
Kengur написал(а):
Есть такая штука называется log-point. Но ее нужно писать руками
https://wiki.scn.sap.com/wiki/display/ABAP/Checkgroups

Может я не умею их готовить, ну у меня лог поинт запоминает последнее значение

Kengur написал(а):
А вобще, в случае если не совсем понимаем, как работает большая и комплексная прога, а создатель уволился, то ее лучше выбрасывать и писать новую. Даже рефакторить не советую. Несколько раз такие сценарии проходил.

Почему то такой подход не находит понимания у заказчика.

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: отслеживание изменений ВНУТРЕННЕЙ таблицы в процессе выполнения проги
СообщениеДобавлено: Пн, апр 24 2017, 18:16 
Специалист
Специалист

Зарегистрирован:
Чт, май 12 2011, 17:06
Сообщения: 247
Не понимаю, какие цели преследуются такой задачей (все-таки для "немножко расширить" такой анализ - как из пушки по воробьям). Но можно попробовать:
1. Создать reusable-код (в виде макроса или статик-метода или подпрограммы), выполняющий сравнение содержимого таблиц, анализа измененных строк и полей, запись результатов, куда надо, и сохранение текущей таблицы.
2. Заменить в редакторе (стандартная комбинация клавиш Ctrl+H) в программе и всех ее инклудах (где это имеет смысл) перевод строки на вызов этого кода и перевод строки
3. Выполнить проверку синтаксиса, убрать вызовы, где на них ругается компилятор, активировать


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: отслеживание изменений ВНУТРЕННЕЙ таблицы в процессе выполнения проги
СообщениеДобавлено: Пн, апр 24 2017, 21:32 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 17:44
Сообщения: 2920
Откуда: Москва
Дима написал:
..представьте, что есть большая и старая прога, которую нужно немного расширить и естественно не хочется копаться во всех нюансах кода

Прекрасно представляю. С помощью SAT пришлось перелопатить много старого кода. И небольшими изменениями естественно не обошлось :roll:

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: отслеживание изменений ВНУТРЕННЕЙ таблицы в процессе выполнения проги
СообщениеДобавлено: Пн, апр 24 2017, 23:56 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, окт 14 2004, 19:02
Сообщения: 409
Откуда: из HR
Пол: Мужской
Коллеги, большое спасибо за советы.


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

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


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

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


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

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