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

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


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

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


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

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