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

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Необходимо запустить 2 процесса в одной программе
СообщениеДобавлено: Чт, окт 27 2011, 16:20 
Специалист
Специалист

Зарегистрирован:
Пн, июл 12 2010, 11:43
Сообщения: 186
Добрый день.
Может кто-то сталкивался с такой проблемой как у нас.
Необходимо запустить 2 процесса параллельно на одном экране.

Мы должны автоматически при запуске программы через определенное количество времени (например 10 секунд) принимать вес с весов и отображать этот вес на экране.
Вес, дата, время и еще некоторые параметры вносим в ALV.

Но также необходимо по каждому весу (строке ALV) печатать документы.

1)Сейчас реализовали через таймер. Запускаем таймер и через 10 секунд (по окончании действия таймера) забираем вес ФМом.
Остальные кнопки печати активные. Но есть проблема:
Когда документ успевает отпечататься в интервале времени когда работает таймер – все нормально.
А вот когда проблемы с печатью и долго формируется документ – т.е. время формирования и печати более 10 секунд – таймер перестает работать.
Очень надо чтобы и печаталось и вес принимался.

2)Пробовали
Code:
FORM f_call_rfc_wait.
  DATA lv_mssg(80).                       
  CALL FUNCTION 'RFC_PING_AND_WAIT' STARTING NEW TASK '001'
    PERFORMING f_task_end ON END OF TASK
    EXPORTING
      seconds               = 10
      busy_waiting          = space
    EXCEPTIONS
      RESOURCE_FAILURE      = 1
      communication_failure = 2  MESSAGE lv_mssg
      system_failure        = 3  MESSAGE lv_mssg
      OTHERS                = 4.
ENDFORM.                               

FORM f_task_end USING u_taskname.
  DATA lv_mssg(80).
  RECEIVE RESULTS FROM FUNCTION 'RFC_PING_AND_WAIT'
    EXCEPTIONS
      RESOURCE_FAILURE      = 1
      communication_failure = 2  MESSAGE lv_mssg
      system_failure        = 3  MESSAGE lv_mssg
      OTHERS                = 4.

  CHECK sy-subrc EQ 0.
  "SET USER-COMMAND 'B1'.             " Refresh

  CALL FUNCTION 'SAPGUI_SET_FUNCTIONCODE'
   EXPORTING
     FUNCTIONCODE                 = '=B1'
   EXCEPTIONS
     FUNCTION_NOT_SUPPORTED       = 1
     OTHERS                       = 2
            .
  IF sy-subrc <> 0.

Но что-то с этим кодом не смогли разобраться. Очень надеемся на помощь.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Необходимо запустить 2 процесса в одной программе
СообщениеДобавлено: Чт, окт 27 2011, 16:46 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Печатайте в другом процессе. Как самый простой вариант. Т.е. сделайте спец. ФМ для печати и зовите его через STARTING NEW TASK.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Необходимо запустить 2 процесса в одной программе
СообщениеДобавлено: Пт, окт 28 2011, 09:32 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, ноя 18 2008, 10:40
Сообщения: 342
Откуда: Пермь
Пол: Мужской
Можно еще попробовать сделать через класс Cl_Gui_Timer. Тогда дополнительные процессы не понадобятся. Вот пара примеров
http://www.sdn.sap.com/irj/scn/weblogs? ... b/wlg/2566
http://www.sdn.sap.com/irj/scn/weblogs? ... b/wlg/6685
если 10 сек. прошло, а ваша прога еще работает, попробуйте ставить больше таймеров - на 20 и на 30 сек например.

STARTING NEW TASK тоже вариант, но если уже открыто 6 режимов, STARTING NEW TASK не сработает


Последний раз редактировалось zsap Пт, окт 28 2011, 09:40, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Необходимо запустить 2 процесса в одной программе
СообщениеДобавлено: Пт, окт 28 2011, 09:39 
Специалист
Специалист

Зарегистрирован:
Пн, июл 12 2010, 11:43
Сообщения: 186
Цитата:
Можно еще попробовать сделать через класс Cl_Gui_Timer. Тогда дополнительные процессы не понадобятся. Вот пара примеров
http://www.sdn.sap.com/irj/scn/weblogs? ... b/wlg/2566
http://www.sdn.sap.com/irj/scn/weblogs? ... b/wlg/6685


В начале я писала, что сейчас это все реализовано через таймет ( ну естественно через класс Cl_Gui_Timer). С таймером и проблемы.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Необходимо запустить 2 процесса в одной программе
СообщениеДобавлено: Пт, окт 28 2011, 09:45 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, ноя 18 2008, 10:40
Сообщения: 342
Откуда: Пермь
Пол: Мужской
А в какой момент вы таймер запускаете? По окончанию процесса печати?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Необходимо запустить 2 процесса в одной программе
СообщениеДобавлено: Пт, окт 28 2011, 10:00 
Специалист
Специалист

Зарегистрирован:
Пн, июл 12 2010, 11:43
Сообщения: 186
А в какой момент вы таймер запускаете? По окончанию процесса печати?


Таймер запускаем на кнопке "Начать взвешивание" и он рабтает до тех пор пока не нажата кнопка "Закончить взвешивание". Может и час работать.
В этом промежутке времени необходимо по каждому весу и еще некоторым параметрам печатать документы.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Необходимо запустить 2 процесса в одной программе
СообщениеДобавлено: Пт, окт 28 2011, 10:09 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, ноя 18 2008, 10:40
Сообщения: 342
Откуда: Пермь
Пол: Мужской
Документы как я понял у вас по кнопке печатаются. Попробуйте после окончания печати в программе вызвать метод gui_timer->run


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Необходимо запустить 2 процесса в одной программе
СообщениеДобавлено: Пт, окт 28 2011, 11:24 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, июн 15 2007, 16:24
Сообщения: 98
Как вариант - результаты подсчета сбрасывать в очередь (просто табличку), а в соседнем режиме другой программой выбирать и печатать.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Необходимо запустить 2 процесса в одной программе
СообщениеДобавлено: Пт, окт 28 2011, 12:02 
Специалист
Специалист

Зарегистрирован:
Пн, июл 12 2010, 11:43
Сообщения: 186
Николай Рыжов написал(а):
Как вариант - результаты подсчета сбрасывать в очередь (просто табличку), а в соседнем режиме другой программой выбирать и печатать.


:) А в соседнем режиме? :) А какими методами (ли как??) выбирать данные в программе. Вес нужно принимать с интервалом ~ 10. Это тот же таймер, только данные получать не ФМ, а select-ом из таблички.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Необходимо запустить 2 процесса в одной программе
СообщениеДобавлено: Пт, окт 28 2011, 12:20 
Специалист
Специалист

Зарегистрирован:
Пн, июл 12 2010, 11:43
Сообщения: 186
Пономарев Артем написал:
Печатайте в другом процессе. Как самый простой вариант. Т.е. сделайте спец. ФМ для печати и зовите его через STARTING NEW TASK.


Обязательно попробуем.
Я так поняла, что в этой программе должен быть и таймер и мой ФМ с STARTING NEW TASK.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Необходимо запустить 2 процесса в одной программе
СообщениеДобавлено: Пт, окт 28 2011, 12:26 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
dev403k, я имел в виду следующее: таймер остается в основной программе. Для обновления веса. По нажатию кнопки "Печать" вызывается ФМ в новой сессии. Тогда пропадет проблема, которую вы описываете. Но сессий может и не хватить. Это минус.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Необходимо запустить 2 процесса в одной программе
СообщениеДобавлено: Пт, окт 28 2011, 13:24 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, июн 15 2007, 16:24
Сообщения: 98
dev403k написал(а):
Николай Рыжов написал(а):
Как вариант - результаты подсчета сбрасывать в очередь (просто табличку), а в соседнем режиме другой программой выбирать и печатать.


:) А в соседнем режиме? :) А какими методами (ли как??) выбирать данные в программе. Вес нужно принимать с интервалом ~ 10. Это тот же таймер, только данные получать не ФМ, а select-ом из таблички.


В соседнем режиме, естественно, тоже мониторить придется. Но там и WAIT пойдет. И проблем со временем форирования докуиентов не будет.

UP. Собственно, это практически то же самое, что Артем предлагает. Но проблема с кол-вом сессий снимается.


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

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


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

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


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

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