Текущее время: Ср, июл 23 2025, 22:59

Часовой пояс: 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 часа


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

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


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

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