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

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


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

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


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

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