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

Сохранение комбинации точек прерывания и доступ к ней в любой момент времени
https://sapboard.ru/forum/viewtopic.php?f=13&t=96155
Страница 1 из 1

Автор:  Yozhhhhh [ Пн, мар 05 2018, 21:30 ]
Заголовок сообщения:  Сохранение комбинации точек прерывания и доступ к ней в любой момент времени

Друзья, я задумал одну вещь, но для этого мне нужно расставить точки прерывания, скажем, сразу в 100 функциональных модулях.
Далее я хотел бы сохранить их в некую комбинацию (как будто вариант экрана, только вариант точек прерывания) и получать доступ к этой комбинации в любой момент времени.
Из описания задачи понятно, что расставлять их каждый раз в таком количестве модулей - это 50 оттенков серого. Кроме того, в повседневной жизни они мне не нужны, только по моей команде. Итак, мог бы я сохранить свои 100 точек прерывания каким-то образом, а потом бесконечно пользоваться этим, когда мне захочется, включая и отключая их в произвольный момент времени? Мне кажется почему-то, что явно есть такая возможность. Спасибо!

Автор:  Кодер [ Пн, мар 05 2018, 21:31 ]
Заголовок сообщения:  Re: Сохранение комбинации точек прерывания и доступ к ней в любой момент времени

транзакция SAAB, не?

Автор:  Yozhhhhh [ Пн, мар 05 2018, 22:40 ]
Заголовок сообщения:  Re: Сохранение комбинации точек прерывания и доступ к ней в любой момент времени

Кодер, спасибо за ответ! Но не очень подошло, а, может, я просто не умею пользоваться, что тоже вероятно. Даже если бы я разобрался, как добавить в список объектов в вариант активации конкретный ФМ, что-то не очень понимаю, как установить точку прерывания на конкретной строке... Например, четко на 80-й строке одного ФМ и на 126 строке второго.

А задачу все-таки решил! Для этого я открывал последовательно объекты в транзакциях просмотра, например, SE37. Там искал нужные строки для точек. После этого запустил желаемый интерфейс, например, транзакцию FB01. Далее ушел в режим отладки, выбрал пункт меню Отладчик --> Отладчик - сеанс --> Сохранить. Задал имя, установил только галку "Точки прерывания", сохранил сеанс. Снял все точки. Убедился, что там, где точки стоят, нет прерывания. Снова запустил транзакцию, вошел в режим отладки, в том же пункте меню выбрал "Загрузить". Система сообщила, что точки расставлены, я ей не поверил, конечно. Но далее начали выстреливать все нужные мне точки ровно на тех строках, где я их ставил. После работы можно просто снова снять все точки.

А ведь термоядерная тема! Спасибо за предложенный вариант!

Автор:  Кодер [ Вт, мар 06 2018, 12:51 ]
Заголовок сообщения:  Re: Сохранение комбинации точек прерывания и доступ к ней в любой момент времени

А. Вам в чужой проге надо. SAAB это когда в своей, вот описание как его юзать

Автор:  Kengur [ Ср, мар 07 2018, 15:16 ]
Заголовок сообщения:  Re: Сохранение комбинации точек прерывания и доступ к ней в любой момент времени

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

Автор:  Yozhhhhh [ Ср, мар 07 2018, 16:51 ]
Заголовок сообщения:  Re: Сохранение комбинации точек прерывания и доступ к ней в любой момент времени

Kengur, ну задача стоит такая, чтобы восстановить свои точки за 1 секунду. Например, 1000 точек. Копипастить-то уже не тот возраст :D

Kengur написал(а):
если программа изменится, то они "магическим образом" уедут вверх-вниз.

Есть такое дело, но мои ФМ-ники не изменятся почти точно. Я расставил и сохранил точки в управляющих головных ФМ OPEN FI и OUTBOUND CALL (те самые, которые внутри лупят по таблице модулей на каждом из этих событий). Могу раскрыть и свое тайное мероприятие в связи с этим :D я сохранил себе вариант точек прерывания, где стоят точки на всех вовлеченных событиях (P/S), процессах, BADI (старые, новые) и user-exit. Запуская любую транзакцию, я смогу останавливаться и понимать, в каких местах я могу расширить систему и насколько сильно я могу ее в этих местах расколупать :D Я всегда думал, что прилично знаю open fi, но тут на досуге увлекся неизвестными мне ранее P/S и процессами и понял, что не все еще в данной компании легло под скальпель и поле так и не вспахано :D

Автор:  Kengur [ Ср, мар 07 2018, 17:41 ]
Заголовок сообщения:  Re: Сохранение комбинации точек прерывания и доступ к ней в любой момент времени

Монстру Франкенштейна решил пилить :mrgreen:

Автор:  Besa [ Вт, мар 13 2018, 11:48 ]
Заголовок сообщения:  Re: Сохранение комбинации точек прерывания и доступ к ней в любой момент времени

От себя добавлю, +1 к отладчику, там на мой взгляд удобно управлять ТП.

По существу Вашей задачи
Цитата:
и понимать, в каких местах я могу расширить систему и насколько сильно я могу ее в этих местах расколупать

Имхо, не благодарное дело, да еще и точки расставлять по конкретным ФМам/методам :)

Точки можно расставить общие, что то вроде
Экзиты - оператор call customer-function
Бади - get badi + класс там есть cl_exit*handler* вроде
опен фаи - там два ФМника общих которые вызываются BF_FUNCTIONS_READ/ PC_FUNCTIONS_READ
ну и так далее, еще есть SDшные экзиты, проверки/замещения, бобфовые штуки (determination/validation), энхансменты никто не отменял...
Так что, лучше по конкретной задачке смотреть на месте, расширить(и/или сломать) всегда можно :)

Автор:  Yozhhhhh [ Вт, мар 13 2018, 12:32 ]
Заголовок сообщения:  Re: Сохранение комбинации точек прерывания и доступ к ней в любой момент времени

<em>Besa</em> написал(а):
Имхо, не благодарное дело, да еще и точки расставлять по конкретным ФМам/методам

Согласен абсолютно, но все дело как раз в open fi.

<em>Besa</em> написал(а):
опен фаи - там два ФМника общих которые вызываются BF_FUNCTIONS_READ/ PC_FUNCTIONS_READ

К сожалению, как раз не так. Пример текста программы SAPMF05A, инклуд MF05AFF0_FCODE_BEARBEITUNG.
В нем четко видно, что запуск головного модуля (головными я называю ФМ типа open*номер*, внутри которых идет луп по модулям из FIBF) происходит сразу в основной программе. С другими точками точно также. Поэтому по моей задумке устанавливать точки придется во всех головных модулях. Я бы и сам был рад, если бы у open fi модулей был общий, но этого нет.

Изображение

*------ Open FI --------------------------------------------------------
CALL FUNCTION 'OPEN_FI_PERFORM_00001030_E'
EXPORTING
i_bkdf = bkdf
i_uf05a = uf05a
TABLES
t_ausz1 = xausz1
t_ausz2 = xausz2
t_ausz3 = xausz3
t_bkp1 = xbkp1
t_bkpf = xbkpf
t_bsec = xbsec
t_bsed = xbsed
t_bseg = xbseg
t_bset = xbset
t_bseu = xbseu
EXCEPTIONS
error_message = 9. " Note 428391

Автор:  Besa [ Вт, мар 13 2018, 13:02 ]
Заголовок сообщения:  Re: Сохранение комбинации точек прерывания и доступ к ней в любой момент времени

ну да :) , и внутри ее Фм FIND, а дальше READ, поставьте точку, посмотрите стэк.

Автор:  Yozhhhhh [ Вт, мар 13 2018, 13:15 ]
Заголовок сообщения:  Re: Сохранение комбинации точек прерывания и доступ к ней в любой момент времени

<em>Besa</em> написал(а):
ну да , и внутри ее Фм FIND, а дальше READ, поставьте точку, посмотрите стэк.


Ох ты ж, а ведь и верно, внутри этих модулей всегда идет повторяющаяся часть.

PC_FUNCTION_FIND
BF_FUNCTIONS_FIND

Еще вот такую нашел: BF_FUNCTION_CHOOSE (представлена в 1120E). Наверное, есть по логике и зеркальная PC_FUNCTION_CHOOSE.
Похоже, этими четырьмя дело и ограничивается.

ХитрО. Спасибо :D

Автор:  Kengur [ Вт, мар 13 2018, 13:36 ]
Заголовок сообщения:  Re: Сохранение комбинации точек прерывания и доступ к ней в любой момент времени

В общем случае достаточно поставить точку на оператор CALL и запастись терпением...

Автор:  Yozhhhhh [ Вт, мар 13 2018, 14:46 ]
Заголовок сообщения:  Re: Сохранение комбинации точек прерывания и доступ к ней в любой момент времени

Kengur написал(а):
В общем случае достаточно поставить точку на оператор CALL и запастись терпением...

Ага, интересно, что раньше случится в таком случае - проводка моего документа или рождение моих внуков. У второго события шансов больше :D
CALL ведь вызовет остановку на каждом ФМ, которые меня вообще не интересуют. А в проводке документа их могут быть сотни.

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