Текущее время: Пт, июл 25 2025, 16:07

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Определить, что программа исполняется в фоновом режиме
СообщениеДобавлено: Вт, окт 28 2008, 12:26 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, авг 08 2005, 15:50
Сообщения: 505
Откуда: München
Пол: Мужской
Коллеги, прошу помощи. Сразу скажу, речь идёт о программе замещений FI, выкидывающей диалоговый popup (знаю, не очень красиво, но всё же). В фоновом режиме, естественно, необходимо вместо popup'а выкинуть ошибку.
Столкнулся с тем, что не могу с гарантией определить, что программа исполняется в фоне.
Скажем, если проводки формируются в режиме пакетного ввода с I_MODE = 'N', то диалоговое взаимодействие полностью исключается, т.е. режим аналогичен фоновому. При этом SY-BATCH и SY-BINPT могут быть пустыми (они совершенно отдельно рулятся, см. параметры запуска в SHDB).
Как определить фоновый режим?

_________________
Le chevalier du SAP


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

Зарегистрирован:
Пн, ноя 01 2004, 12:17
Сообщения: 298
Пол: Мужской
SY-CALLD


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, окт 28 2008, 14:13 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
SY-CALLD тоже не поможет.

Ну как предположение: вызвать что-нибудь гуевое из CL_GUI_FRONTEND_SERVICES и отловить эксепшн. Если гуя недоступна - мы 100% не в диалоговом процессе :)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, окт 28 2008, 14:18 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, ноя 01 2004, 12:17
Сообщения: 298
Пол: Мужской
А это?
Code:
   ************************************************************************
    * Find out whether a process runs in background
    ************************************************************************
    METHOD background_process.
    * Include with constants
      INCLUDE tskhincl.
      DATA:
        l_state      TYPE sm04dic-counter,
        l_State_x    like th_bitvalue4,
        l_task_x     like th_bitvalue4.
    * Get task state
      CALL FUNCTION 'TH_USER_INFO'
        IMPORTING
      task_state = l_state.
* Convert to X-fields to make O-compare possible.
  l_State_x = l_state.
* I check for bit TASK_ONLINE.
* It is set if the current process has access to a GUI.
  l_task_x  = task_online.
  IF l_State_x O l_task_x.
    r_background = space.
  ELSE.
    r_background = 'X'.
  ENDIF.
ENDMETHOD.


или

Code:

* check if there is a GUI
  CALL FUNCTION 'GUI_IS_AVAILABLE'
       IMPORTING
            RETURN = GUI_IS_RUNNING.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, окт 28 2008, 15:48 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, авг 08 2005, 15:50
Сообщения: 505
Откуда: München
Пол: Мужской
RA написал:
А это?
Code:

* check if there is a GUI
  CALL FUNCTION 'GUI_IS_AVAILABLE'
       IMPORTING
            RETURN = GUI_IS_RUNNING.

СПАСИБО! Буду пробовать...

_________________
Le chevalier du SAP


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, окт 28 2008, 22:02 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
http://sapboard.ru/forum/viewtopic.php?t=24313


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, окт 28 2008, 23:21 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, авг 08 2005, 15:50
Сообщения: 505
Откуда: München
Пол: Мужской
Вышеперечисленные способы, к сожалению, не позволяют "отловить" запуск в режиме пакетного ввода с MODE = 'N' или 'P'. :cry:
Пока сделал так:
Code:
IF sy-batch EQ 'X' OR sy-uname EQ 'WF-BATCH'.

sibrin написал:
http://sapboard.ru/forum/viewtopic.php?t=24313

Почётный гуру. Этим всё сказано.

_________________
Le chevalier du SAP


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, окт 30 2008, 10:31 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
sokov написал:
Вышеперечисленные способы, к сожалению, не позволяют "отловить" запуск в режиме пакетного ввода с MODE = 'N' или 'P'. :cry:
Пока сделал так:
Code:
IF sy-batch EQ 'X' OR sy-uname EQ 'WF-BATCH'.

sibrin написал:
http://sapboard.ru/forum/viewtopic.php?t=24313

Почётный гуру. Этим всё сказано.


Опции вызова транзакции вам вернёт ф.м. BDC_RUNNING. Вот только P от N он не отличает.

PS. Надо правильно называть темы и задавать вопросы, тогда каждый почётный гуру сразу ответит правильно. :)
И Артём, и RA тоже имели в виду фоновый режим, а не batch в режиме N в диалоговом режиме.


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

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


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

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


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

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