Текущее время: Пт, июл 25 2025, 05:48

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Получение информации о коде во время выполнения.
СообщениеДобавлено: Вт, фев 14 2012, 15:12 
Начинающий
Начинающий

Зарегистрирован:
Чт, мар 17 2011, 17:05
Сообщения: 17
Добрый день. Очень хотелось бы получить номер строки исходного кода, которая сейчас выполняется, еще было бы неплохо имя метода/фма/формы и т.п. В С++ например есть макрос __LINE__. Погуглил ничего - не нашел... Есть подозрение, что нельзя. :(


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Получение информации о коде во время выполнения.
СообщениеДобавлено: Вт, фев 14 2012, 15:24 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Сб, июн 23 2007, 14:56
Сообщения: 203
Транзакция SM51.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Получение информации о коде во время выполнения.
СообщениеДобавлено: Вт, фев 14 2012, 16:28 
Начинающий
Начинающий

Зарегистрирован:
Чт, мар 17 2011, 17:05
Сообщения: 17
nymbos написал(а):
Транзакция SM51.

А чем мне поможет эта транзакция? Она вроде показывает какие процессы сейчас запущены в системе показывает. Или я что-то упускаю и она может показывать что-то еще и мне нужно копать ее исходники.
В общем мне нужно сделать что-то типа дампа, но для логических ошибок и чтобы программа не падала (message x не подходит и не всегда можно определить сразу - есть ли ошибка).


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Получение информации о коде во время выполнения.
СообщениеДобавлено: Вт, фев 14 2012, 16:47 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Сб, июн 23 2007, 14:56
Сообщения: 203
v2k написал(а):
А чем мне поможет эта транзакция?

Можно перейти в режим отладки.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Получение информации о коде во время выполнения.  Тема решена
СообщениеДобавлено: Вт, фев 14 2012, 16:48 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
nymbos, не об том речь.

v2k, как вариант:
Code:
REPORT  ztk_stack_local.

TYPES:
  BEGIN OF t_callstack_entry,
    mainprogram TYPE dbgsrepid,
    include     TYPE dbgsrepid,
    line        TYPE dbglinno,
    eventtype   TYPE dbglevtype,
    event       TYPE dbglevent,
    flag_system TYPE c LENGTH 1,
END OF t_callstack_entry .

START-OF-SELECTION.
  PERFORM test_stack.

*&---------------------------------------------------------------------*
*&      Form  test_Stack
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM test_stack.
* declaration----------------------------------------------------------
  DATA:
    l_abap_callstack TYPE TABLE OF t_callstack_entry,
    l_lineno         TYPE string,
    l_include        TYPE string.

  FIELD-SYMBOLS
    <fs_caller> LIKE LINE OF l_abap_callstack.
* -----------------------------------------------------------------------

  CALL 'ABAP_CALLSTACK' ID 'DEPTH'     FIELD -1
                        ID 'CALLSTACK' FIELD l_abap_callstack.
  LOOP AT l_abap_callstack ASSIGNING <fs_caller>.
    WRITE:/ <fs_caller>-mainprogram, <fs_caller>-include, <fs_caller>-line, <fs_caller>-eventtype, <fs_caller>-event, <fs_caller>-flag_system.
  ENDLOOP.
ENDFORM.                    "test_Stack


Самая верхняя строчка - место вызова CALL 'ABAP_CALLSTACK'.
А вам для чего, если не секрет?

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Получение информации о коде во время выполнения.
СообщениеДобавлено: Вт, фев 14 2012, 16:51 
Ассистент
Ассистент

Зарегистрирован:
Чт, май 17 2007, 16:31
Сообщения: 40
Откуда: Санкт-Петербург
Например попытаться воспользоваться методом GET_SOURCE_POSITION класса CX_ROOT.
Code:
DATA: oref         TYPE REF TO cx_root,
      program_name TYPE syrepid,
      include_name TYPE syrepid,
      source_line  TYPE i.
TRY.
    source_line = 1 / 0.
  CATCH cx_root INTO oref.
    CALL METHOD oref->get_source_position
      IMPORTING
        program_name = program_name
        include_name = include_name
        source_line  = source_line.
ENDTRY.

P.S. Вокруг 'ABAP_CALLSTACK' есть оболочка ФМ SYSTEM_CALLSTACK


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Получение информации о коде во время выполнения.
СообщениеДобавлено: Вт, фев 14 2012, 19:57 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
v2k написал(а):
В общем мне нужно сделать что-то типа дампа, но для логических ошибок и чтобы программа не падала (message x не подходит и не всегда можно определить сразу - есть ли ошибка).

Здесь многократно обсуждался журнал приложений. Он как раз для таких целей и предназначен.

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Получение информации о коде во время выполнения.
СообщениеДобавлено: Чт, фев 16 2012, 16:29 
Начинающий
Начинающий

Зарегистрирован:
Чт, мар 17 2011, 17:05
Сообщения: 17
Всем ответившим спасибо, сейчас нет времени на эксперименты, поэтому реализацию придется отложить.
Про журнал приложений не знал - бегло просмотрел группу функций SBAL, показалось что он сохраняет в лог просто message'ы, а мне хотелось бы более расширенной информации, например время выполнения куска кода, значение некоторых переменных, стэк вызовов, причем у меня идея выводить это все прямо во время выполнения в отдельное немодальное окно. Сомневаюсь что журнал мне поможет - но познакомиться со стандартным инструментом все же надо - нет ли статьи про его использование, можно на английском.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Получение информации о коде во время выполнения.
СообщениеДобавлено: Чт, фев 16 2012, 17:00 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
v2k написал(а):
Всем ответившим спасибо, сейчас нет времени на эксперименты, поэтому реализацию придется отложить.
Про журнал приложений не знал - бегло просмотрел группу функций SBAL, показалось что он сохраняет в лог просто message'ы, а мне хотелось бы более расширенной информации, например время выполнения куска кода, значение некоторых переменных, стэк вызовов, причем у меня идея выводить это все прямо во время выполнения в отдельное немодальное окно. Сомневаюсь что журнал мне поможет - но познакомиться со стандартным инструментом все же надо - нет ли статьи про его использование, можно на английском.

Вам шашечки или ехать???
Зачем пользователю при проводке документа(например) знать про стек вызова и кусок и пр???

И в как Вы себе представляете себе "вывод в отдельное не модальное окно"??? С точки зрения архитектуры классических dynpro-приложений???

Зачем изобретать непонятно что??? Когда есть тр. SLG1? А кроме того куча программ SBAL_DEMO_*
А есть ещё транзакция SAAB и операторы ASSERT, LOG-POINT???

_________________
"После" - не значит "вследствие"


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Получение информации о коде во время выполнения.
СообщениеДобавлено: Чт, фев 16 2012, 18:06 
Специалист
Специалист

Зарегистрирован:
Чт, фев 12 2009, 12:47
Сообщения: 117
Откуда: Kiev
Пол: Мужской
v2k написал(а):
... Сомневаюсь что журнал мне поможет - но познакомиться со стандартным инструментом все же надо - нет ли статьи про его использование, можно на английском.


Есть SAPHELP - http://help.sap.com/saphelp_nw73/helpdata/en/3a/c8263712c79958e10000009b38f936/frameset.htm
Примеры тоже можно нагуглить...

_________________
SAP macht frei


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Получение информации о коде во время выполнения.
СообщениеДобавлено: Чт, фев 16 2012, 18:33 
Начинающий
Начинающий

Зарегистрирован:
Чт, мар 17 2011, 17:05
Сообщения: 17
sy-uname написал(а):
Вам шашечки или ехать???
Зачем пользователю при проводке документа(например) знать про стек вызова и кусок и пр???

А не собираюсь показывать это пользователю, я это собираюсь только сам смотреть.

sy-uname написал(а):
И в как Вы себе представляете себе "вывод в отдельное не модальное окно"??? С точки зрения архитектуры классических dynpro-приложений???

CL_GUI_DIALOGBOX_CONTAINER, внутри html viewer. Не вижу проблемы... Ткните - буду признателен.

sy-uname написал(а):
Зачем изобретать непонятно что??? Когда есть тр. SLG1? А кроме того куча программ SBAL_DEMO_*
А есть ещё транзакция SAAB и операторы ASSERT, LOG-POINT???

Для начала я познакомлюсь с вышеозвученными средствами, потом Вам отвечу и возможно не захочу изобретать велосипед. Вообще предлагаемая стратегия обработки ошибок в 4.6C мне как-то не нравится, я думаю выработать свою с шахматами и поэтессами - думая будет похоже на таковую Win32 API т.к. исключений все равно нет.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Получение информации о коде во время выполнения.
СообщениеДобавлено: Пт, фев 17 2012, 11:36 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
v2k написал(а):
Для начала я познакомлюсь с вышеозвученными средствами, потом Вам отвечу и возможно не захочу изобретать велосипед. Вообще предлагаемая стратегия обработки ошибок в 4.6C мне как-то не нравится, я думаю выработать свою с шахматами и поэтессами - думая будет похоже на таковую Win32 API т.к. исключений все равно нет.

Ясно, раз заняться нечем, система древняя, то да - почему бы не позаниматься чистым программированием ради программирования.

_________________
"После" - не значит "вследствие"


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Получение информации о коде во время выполнения.
СообщениеДобавлено: Пт, фев 17 2012, 13:24 
Начинающий
Начинающий

Зарегистрирован:
Чт, мар 17 2011, 17:05
Сообщения: 17
sy-uname написал(а):
Ясно, раз заняться нечем, система древняя, то да - почему бы не позаниматься чистым программированием ради программирования.

Нечем заняться - понятие растяжимое, не согласен, что это программирование ради программирование, это программирования ради более быстрого решения бизнес-задач (которые абапер в основном и решает). А то так можно договориться, что надо писать в лучшем случае на ассемблере и ничего нового не придумывать.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Получение информации о коде во время выполнения.
СообщениеДобавлено: Пт, фев 17 2012, 17:09 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Так если самих бизнес-задач нет, то получается программирование ради программирования.
При поиске ошибок в реальных бизнес-задачах в большинстве случаев достаточно знания инструмента отладки.
В сложных случаях можно добавить логгирование с помощью журнала приложений.
В самых сложных случаях поможет message TYPE 'X' для критических ошибок.

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Получение информации о коде во время выполнения.
СообщениеДобавлено: Пт, фев 17 2012, 20:03 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, май 12 2011, 16:06
Сообщения: 351
Цитата:
Так если самих бизнес-задач нет, то получается программирование ради программирования.
Можно еще программирование ради программирования сочетать с программированием ради разработки удобных инструментов или библиотек. Бывает, это дает и опыт, и впоследствии значительную экономию времени и сил при решении бизнес-задач.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.

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


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

Сейчас этот форум просматривают: Yandex [Bot]


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

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