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

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


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

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


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

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