Текущее время: Чт, июл 24 2025, 02:39

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Как определить, в каком режиме работает abap-программа - в обычном или через портал?
СообщениеДобавлено: Вт, окт 19 2010, 10:06 
Начинающий
Начинающий

Зарегистрирован:
Пн, июл 02 2007, 10:31
Сообщения: 15
Добрый день. Вопрос в заголовке - в зависимости от режима запуска - в обычном или через портал, надо выполнять различный вывод результатов.
Как определить режим работы? Заранее спасибо.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как определить, в каком режиме работает abap-программа - в обычном или через портал?
СообщениеДобавлено: Вт, окт 19 2010, 11:29 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Ср, ноя 01 2006, 22:58
Сообщения: 794
Откуда: Заарбрюкен
Пол: Мужской
Code:
  DATA IO_COMP_API   TYPE REF TO IF_WD_COMPONENT.

  lo_wd_application = io_comp_api->get_application( ).
  lv_client_environment = lo_wd_application->get_client_environment( ).

  IF lv_client_environment NE if_wd_application=>co_client_environment-portal.
  ELSE.
  ENDIF.


Code:
  constants:
    begin of co_client_environment,
      unknown    type i value 0,
      standalone type i value 1,
      portal     type i value 2,
      sapgui     type i value 3,
      nwbc       type i value 4,
    end of co_client_environment .


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как определить, в каком режиме работает abap-программа - в обычном или через портал?
СообщениеДобавлено: Вт, окт 19 2010, 14:36 
Начинающий
Начинающий

Зарегистрирован:
Пн, июл 02 2007, 10:31
Сообщения: 15
Спасибо, но это логика из портала, а надо из abap-а.

Вроде нашёл простое решение:

sy-calld - в обычном режиме - 'X', в портальном - пустой.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как определить, в каком режиме работает abap-программа - в обычном или через портал?
СообщениеДобавлено: Вт, окт 19 2010, 16:05 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Ср, ноя 01 2006, 22:58
Сообщения: 794
Откуда: Заарбрюкен
Пол: Мужской
опасно...
Цитата:
SY-CALLD

X if the program was started using CALL TRANSACTION, CALL DIALOG, or SUBMIT … [AND RETURN]. Space if the program was started using LEAVE TO TRANSACTION or using a transaction code from a screen. SY-CALLD is always space when a batch input session is being processed.


Я привел пример не из портала, а из WebDynpro ABAP...
Вы тогда ужэ уточните: как, чего и откуда хотите запускать...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как определить, в каком режиме работает abap-программа - в обычном или через портал?
СообщениеДобавлено: Пт, окт 22 2010, 12:30 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, июн 02 2009, 22:28
Сообщения: 228
Откуда: MOW
Пол: Мужской
Вот как это делается в примере WebDynpro WDR_TEST_PORTAL_EVENT, касающемся навигации в портале:

Code:
method wddoinit .

  data l_current_controller type ref to if_wd_controller.
  data l_api_component       type ref to if_wd_component.
  data l_portal_manager      type ref to if_wd_portal_integration.
  data error_text            type string.

  l_current_controller ?= wd_this->wd_get_api( ).

  call method l_current_controller->get_message_manager
    receiving
      message_manager = wd_this->m_message_manager.

  l_api_component = wd_this->wd_get_api( ).
  l_portal_manager = l_api_component->get_portal_manager( ).

  if l_portal_manager->m_portal_version is initial.
    error_text = cl_wd_utilities=>get_otr_text_by_alias( alias = 'SWDP_TEST/WDR_TEST_PORTAL_MISSING_PORTAL_WARNING' ).
    wd_this->m_message_manager->report_warning( message_text = error_text ).
  endif.

endmethod.


Смысл - если приложение видит, что оно не в портале, то выводится Warning.

По сути пример похож на приведенный Konstantin Anikeev. Разве что, может, наличие этого кода в стандартном примере вас убедит, что примерно так и нужно проверять. Или мы все вас не понимаем.
На всякий случай - у меня базис/абап 7.01 SP6


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как определить, в каком режиме работает abap-программа - в обычном или через портал?
СообщениеДобавлено: Пт, ноя 05 2010, 01:03 
Ассистент
Ассистент

Зарегистрирован:
Чт, окт 05 2006, 16:13
Сообщения: 36
..как вариант - FM SYSTEM_CALLSTACK - получить системный стек вызовов в таблицу, а потом - посмотреть есть ли в таблице какая-нибудь характерная для портального варианта вызова запись (посмотрите в отладчике - что там характерного - '%_RFC_START' или 'REMOTE_FUNCTION_CALL' какой-нибудь).


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

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


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

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


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

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