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 пришлось перелопатить много старого кода. И небольшими изменениями естественно не обошлось |
Автор: | Дима [ Пн, апр 24 2017, 22:56 ] |
Заголовок сообщения: | Re: отслеживание изменений ВНУТРЕННЕЙ таблицы в процессе выполнения проги |
Коллеги, большое спасибо за советы. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |