Текущее время: Сб, июл 19 2025, 02:59

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


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

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


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

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