SAPфорум.RU
https://sapboard.ru/forum/

отслеживание изменений ВНУТРЕННЕЙ таблицы в процессе выполнения проги
https://sapboard.ru/forum/viewtopic.php?f=13&t=94755
Страница 1 из 1

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

Коллеги, приветствую,

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

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

Автор:  Удав [ Вс, апр 23 2017, 17:19 ]
Заголовок сообщения:  Re: отслеживание изменений ВНУТРЕННЕЙ таблицы в процессе выполнения проги

Непонятно, зачем нужна такая странная отладка. :?
Можно запустить транзакцию SAT, установив только измерение изменения внутренних таблиц.
Но при этом значения изменений естественно не будут видны.

Автор:  Дима [ Вс, апр 23 2017, 18:03 ]
Заголовок сообщения:  Re: отслеживание изменений ВНУТРЕННЕЙ таблицы в процессе выполнения проги

Коллега,

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

Автор:  olegbash [ Вс, апр 23 2017, 21:28 ]
Заголовок сообщения:  Re: отслеживание изменений ВНУТРЕННЕЙ таблицы в процессе выполнения проги

в CL_GUI_ALV_GRID есть event DATA_CHANGED
можете создать объект и отслеживать эти изменения.
он Вам даже номер ячейки скажет ...

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

Автор:  olegbash [ Вс, апр 23 2017, 21:45 ]
Заголовок сообщения:  Re: отслеживание изменений ВНУТРЕННЕЙ таблицы в процессе выполнения проги

хотя лучше так:
1) по поиску посмотреть где используется таблица
2) после каждого места написать вызов метода
lo_log->check_table( table_to_be_logged).

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

Автор:  AFH [ Пн, апр 24 2017, 05:34 ]
Заголовок сообщения:  Re: отслеживание изменений ВНУТРЕННЕЙ таблицы в процессе выполнения проги

Посмотрите сюда и сюда. Но я не уверен можно ли эту функциональность запустить не вызывая сам отладчик, может быть вы что-то найдете.

Автор:  Kengur [ Пн, апр 24 2017, 11:44 ]
Заголовок сообщения:  Re: отслеживание изменений ВНУТРЕННЕЙ таблицы в процессе выполнения проги

Есть такая штука называется log-point. Но ее нужно писать руками

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

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

Автор:  ArmAnn [ Пн, апр 24 2017, 14:04 ]
Заголовок сообщения:  Re: отслеживание изменений ВНУТРЕННЕЙ таблицы в процессе выполнения проги

Kengur написал(а):
Есть такая штука называется log-point. Но ее нужно писать руками
https://wiki.scn.sap.com/wiki/display/ABAP/Checkgroups

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

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

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

Автор:  LAT [ Пн, апр 24 2017, 17:16 ]
Заголовок сообщения:  Re: отслеживание изменений ВНУТРЕННЕЙ таблицы в процессе выполнения проги

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

Автор:  Удав [ Пн, апр 24 2017, 20:32 ]
Заголовок сообщения:  Re: отслеживание изменений ВНУТРЕННЕЙ таблицы в процессе выполнения проги

Дима написал:
..представьте, что есть большая и старая прога, которую нужно немного расширить и естественно не хочется копаться во всех нюансах кода

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

Автор:  Дима [ Пн, апр 24 2017, 22:56 ]
Заголовок сообщения:  Re: отслеживание изменений ВНУТРЕННЕЙ таблицы в процессе выполнения проги

Коллеги, большое спасибо за советы.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/