Текущее время: Пт, июл 18 2025, 23:17

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Название текущего INCLUDE
СообщениеДобавлено: Пт, сен 12 2014, 20:22 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 21 2006, 16:38
Сообщения: 304
Есть INCLUDE который подключается в разных программах. В INCLUDE определен класс и есть метод в котором необходимо знать дату изменения текущего INCLUDE.
При этом желательно чтобы при изменении названия INCLUDE (или просто его копировании) название текущего INCLUDE определялось правильно. sy-repid содержит текущую программу. А можно как-то получить название текущего INCLUDE?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Название текущего INCLUDE
СообщениеДобавлено: Пт, сен 12 2014, 21:22 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Ср, апр 12 2006, 12:43
Сообщения: 863
Откуда: СССР
Пол: Мужской
Навскидку:
Создать в коде TRY CATCH cx_root.
Принудительно сгнерировать ошибку.
cx_root в CATCH вернёт (во всяком случае должен): программу, инклюд, строку.
Сам подобной целью не задавался, но когда сам ловлю свои ошибки, cx_root возвращал мне искомое.

_________________
Никого не трогаю, примусы починяю.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Название текущего INCLUDE
СообщениеДобавлено: Пн, сен 15 2014, 08:46 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
ещё вариант:
вызвать ф/м SYSTEM_CALLSTACK,
в обновл. версии ф/м см. эксп. параметр CALLSTACK (тип ABAP_CALLSTACK),
в него добавили include и line


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Название текущего INCLUDE
СообщениеДобавлено: Пн, сен 15 2014, 09:13 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 21 2006, 16:38
Сообщения: 304
Судя по всему у меня система не поддерживает ни "TRY CATCH cx_root", ни обновленную версию SYSTEM_CALLSTACK.
SYSTEM_CALLSTACK я и так вызываю, но там нет никакой информации об INCLUDE, только программа.

Так что сделал просто константу с версией. При изменении буду её менять, чтобы динамические программы пересоздавались. Узнать время из INCLUDE не получилось. Как вариант, можно туда не версию, а имя INCLUDE писать.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Название текущего INCLUDE
СообщениеДобавлено: Пн, сен 15 2014, 21:10 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, май 12 2011, 16:06
Сообщения: 351
1) Использовать CALL 'ABAP_CALLSTACK'.
2) дату изменения текущего INCLUDE можно узнать из trdir.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Название текущего INCLUDE
СообщениеДобавлено: Вт, сен 16 2014, 08:42 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 21 2006, 16:38
Сообщения: 304
Сделал вот таким вот образом.
Code:
      "-- Стык вызовов
      TYPES:
        begin of abap_call_stack_entry,
          mainprogram  type sy-repid,
          include      type sy-repid,
          line         type i,
          eventtype    type abdbg-leventtype,
          event        type abdbg-levent,
          flag_system  type CHAR1,
        end of abap_call_stack_entry.
      DATA:
        it_stack type table of abap_call_stack_entry,
        wa_stack like line of it_stack
      .
      CALL 'ABAP_CALLSTACK' ID 'DEPTH' FIELD -1
                            ID 'CALLSTACK' FIELD it_stack.
Все работает. Но тут вот коллеги озвучили мнение что вроде не рекомендуют использовать такие прямые вызовы, так как они могут не поддерживаться в новых версиях. Насколько эта команда поддерживается в разных версиях SAP?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Название текущего INCLUDE
СообщениеДобавлено: Вт, сен 16 2014, 13:38 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
Валерка написал(а):
Сделал вот таким вот образом.
Code:
      "-- Стык вызовов
      TYPES:
        begin of abap_call_stack_entry,
          mainprogram  type sy-repid,
          include      type sy-repid,
          line         type i,
          eventtype    type abdbg-leventtype,
          event        type abdbg-levent,
          flag_system  type CHAR1,
        end of abap_call_stack_entry.
      DATA:
        it_stack type table of abap_call_stack_entry,
        wa_stack like line of it_stack
      .
      CALL 'ABAP_CALLSTACK' ID 'DEPTH' FIELD -1
                            ID 'CALLSTACK' FIELD it_stack.
Все работает. Но тут вот коллеги озвучили мнение что вроде не рекомендуют использовать такие прямые вызовы, так как они могут не поддерживаться в новых версиях. Насколько эта команда поддерживается в разных версиях SAP?

Работает:
SAP_BASIS 740 0006 SAPKB74006
SAP_ABA 740 0006 SAPKA74006

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Название текущего INCLUDE
СообщениеДобавлено: Вт, сен 16 2014, 19:48 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 21 2006, 16:38
Сообщения: 304
В двух системах протестировал - работает. Так что оставил такой вариант. Если что, тогда уж буду исправлять.

Всем спасибо за помощь.


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

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


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

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


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

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