Текущее время: Пт, мар 29 2024, 14:21

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: Узнать номер строки
СообщениеДобавлено: Чт, сен 23 2004, 18:57 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1554
Откуда: Москва
Здрасьте всем. Давно здесь не бывал.
Вопрос конкретный и относящийся к конкретной задаче.

Существует ли какой-то способ узнать, какая строка исходного кода текущей программы выполняется в данный момент?

Поясню.
В программе требуется вставлять особые закладки (например, в виде макросов), которые обозначают какую-то критическую стадию выполнения программы и фиксируют... эээ... "прохождение" выполнения программы "через них". Но эта закладка должна где-то как-то обозначить свое местоположение. Очевидно, путем указания имени программы и номера строки, в котором она находится. Ручками указывать - выглядит нелепо. К тому же, исходный код иногда правится, и они будут "съезжать" с того места, на котором зафиксированы.

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

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, сен 24 2004, 09:27 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, авг 17 2004, 10:45
Сообщения: 550
Откуда: SAP_BASIS 640
А события Workflow здесь не подойдут?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, сен 25 2004, 11:41 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1554
Откуда: Москва
EGF написал(а):
А события Workflow здесь не подойдут?


Ээээ... вряд ли, но... это как? :shock:

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, сен 25 2004, 20:13 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, авг 17 2004, 10:45
Сообщения: 550
Откуда: SAP_BASIS 640
Я не специалист по Workflow, но примерно это так.
В программе генерится событие с помощью ФМ. Это событие запускает некий заранее созданный поток операций, а в нём можно запрограммировать всё что угодно. Ну или почти всё.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, сен 27 2004, 11:46 
Гость
EGF написал(а):
Я не специалист по Workflow, но примерно это так.
В программе генерится событие с помощью ФМ. Это событие запускает некий заранее созданный поток операций, а в нём можно запрограммировать всё что угодно. Ну или почти всё.


и?...
Мне надо не что угодно :-). Мне вполне конкретную вещь забацать нужно.
Что-то я не припомню, чтобы при реализации WorkFlow использовался какой-то особый АВАР :-). Видимо, я просто недостаточно ясно выразился.

Пишется заказной продукт. Его в дальнейшем придется суппортить.
Для того, чтобы облегчить жизнь суппорту, надо сделать такую приблуду, которая бы при возникновении каких-то ошибок при работе позволяла бы клиентам получить отчет, где была бы отражена последовательность вызовов (программ, подпрограмм, ФМ, экранов, и т.д.), с указанием координат, где эти вызовы произошли. Чтобы клиенты могли отправить этот отчет суппорту и суппорт мог бы разбирать ситуацию более предметно. Что-то вроде дампа, но несколько другого рода.

Впрочем, я вроде бы почти придумал уже (синтаксический анализ исходников с поиском в нем этих закладок). Хотя, надеюсь, что есть решение получше.


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, сен 27 2004, 11:48 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1554
Откуда: Москва
EGF написал(а):
Я не специалист по Workflow, но примерно это так.
В программе генерится событие с помощью ФМ. Это событие запускает некий заранее созданный поток операций, а в нём можно запрограммировать всё что угодно. Ну или почти всё.


и?...
Мне надо не что угодно :-). Мне вполне конкретную вещь забацать нужно.
Что-то я не припомню, чтобы при реализации WorkFlow использовался какой-то особый АВАР :-). Видимо, я просто недостаточно ясно выразился.

Пишется заказной продукт. Его в дальнейшем придется суппортить.
Для того, чтобы облегчить жизнь суппорту, надо сделать такую приблуду, которая бы при возникновении каких-то ошибок при работе позволяла бы клиентам получить отчет, где была бы отражена последовательность вызовов (программ, подпрограмм, ФМ, экранов, и т.д.), с указанием координат, где эти вызовы произошли. Чтобы клиенты могли отправить этот отчет суппорту и суппорт мог бы разбирать ситуацию более предметно. Что-то вроде дампа, но несколько другого рода.

Впрочем, я вроде бы почти придумал уже (синтаксический анализ исходников с поиском в нем этих закладок). Хотя, надеюсь, что есть решение получше.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, сен 27 2004, 12:10 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Может сделать проще, без всяких там самоанализов программы и прочегео искусственного интеллекта? В контрольных точках записывать состояние в лог (ФМ BAL_LOG*).
Ну и проверок аргументов/параметров с подробными сообщениями побольше.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, сен 27 2004, 12:24 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1554
Откуда: Москва
sy-uname написал(а):
Может сделать проще, без всяких там самоанализов программы и прочегео искусственного интеллекта? В контрольных точках записывать состояние в лог (ФМ BAL_LOG*).
Ну и проверок аргументов/параметров с подробными сообщениями побольше.


Дык, примерно так и будет. Только, в конечно, в лог не будет писаться все подряд. Будет фиксироваться прохождение каких-то этапов программы. Если все OK - хранить эту информацию долговременно нет необходимости (это ж сколько места займет! Если для каждого запуска хранить). Они понадобятся только в случае каких-то проблем.
Примерно это будет выглядеть следующим образом:
-----------------------------------
STAGE 'STAGE1' 'Прохождение критической точки 1' .

CALL FUNCTION ....
.....
STAGE 'SUBSTAGE1' "Прохождение критической точки 1.1"
CALL SCREEN '0100'.
.....
ENDSTAGE 'SUBSTAGE1' .

ENDSTAGE 'STAGE1'.
-----------------------------------
, где STAGE - это макрос, который и будет отмечать прохождение (с вызовом внутри него каких-то ФМ и т.п.). ENDSTAGE - соответственно, макрос, фиксирующий окончание прохождения критической стадии.

Но вот координаты этих точек... Их же много может быть. Всегда, конечно, можно сделать просто автоматический разбор исходников. Но, ИМХО, это не есть очень хорошо.

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, сен 27 2004, 18:05 
Гость
Можно попытаться взять идеи из ФМ AC_TRACE_CALLSTACK (взводит флаг трассировки), AC_CALL_METHOD (полезная работа+запись в стек), AC_FLUSH_CALL_INTERNAL( еще что-то+ вызов AC_WRITE_SNAP). Но только идеи :)


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 28 2004, 12:28 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1554
Откуда: Москва
Гость написал(а):
Можно попытаться взять идеи из ФМ AC_TRACE_CALLSTACK (взводит флаг трассировки), AC_CALL_METHOD (полезная работа+запись в стек), AC_FLUSH_CALL_INTERNAL( еще что-то+ вызов AC_WRITE_SNAP). Но только идеи :)


Спасибо, уже кое-что. Гляну.

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


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

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


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

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


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

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