Текущее время: Пт, июл 28 2017, 08:55

Часовой пояс: 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
Сообщения: 2881
Откуда: Москва
Непонятно, зачем нужна такая странная отладка. :?
Можно запустить транзакцию SAT, установив только измерение изменения внутренних таблиц.
Но при этом значения изменений естественно не будут видны.

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


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

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

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


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

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

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


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

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

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


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

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


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

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

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

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

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


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

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

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

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

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

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


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

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


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

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

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

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


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

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


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

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


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

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


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

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