Текущее время: Пн, июл 28 2025, 14:55

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Выполнить др. транз. в фоновом режиме после текущей
СообщениеДобавлено: Пн, фев 04 2008, 16:03 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пн, сен 18 2006, 10:37
Сообщения: 177
Откуда: Беларусь
Пол: Мужской
Добрый день!

Такая ситуация. Выполняется транзакция (ABUMN), после ее окончания необходимо выполнить другую транзакцию (AS02) в фоновом режиме, незаметно для пользователя. Транзакцию записал, сформировал bdcdata.
Пишу свой код в расширении LAISA001 которое срабатывает ПЕРЕД окончанием abumn. Пытался выполнить call transaction 'as02' но не проходит потому что ОснСр блокировано мной же, т.к. текущая транзакция еще не завершилась и значит в as02 не пускает.

Можно сделать batch input - задание ставится в очередь, НО затем его еще нужно выполнить вручную в SM35.
Может можно как-то принудить сеанс BI выполниться сразу ПОСЛЕ текущей транзакции ? Когда выполнится сессия и выполнится ли вообще если ее НЕ запустить вручную в SM35?
Может выполнить Job_open ?

CALL FUNCTION 'JOB_OPEN'
SUBMIT rsbdcsub AND RETURN
USER sy-uname
VIA JOB jobname NUMBER jobcount
with queue_id = queue_id "сессия
WITH z_verarb = 'X'.
Я так понимаю номер сессии можно узнать в APQI-QID.
Я с ним не работал и не знаю как он выполнится - непосредственно сразу или после текущей транзакции ?

Заранее спасибо!

_________________
Regards


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

Зарегистрирован:
Пн, сен 18 2006, 10:37
Сообщения: 177
Откуда: Беларусь
Пол: Мужской
Кажется подошел бы вызов SUBMIT rsbdcsub.
Но возникла проблемка: сессия которая хорошо выполняется вручную, вываливается по ошибке в SUBMIT rsbdcsub при программном запуске сессии.
Ошибка: "Возникла динамическая обшика OBJECTS_OBJREF_NOT_ASSIGNED." и номер одного из экранов.
При выполнении сессии вручную ошибка не возникает...
Может кто подскажет из-за чего может быть такая ошибка ?

Программный запуск сессии:
Code:
CALL FUNCTION 'JOB_OPEN'
    EXPORTING
      jobname          = 'job1'
      jobgroup         = 'FIPI'
    IMPORTING
      jobcount         = jobcount.

SUBMIT rsbdcsub AND RETURN
   USER sy-uname
   VIA JOB 'job1' NUMBER jobcount
   with queue_id =  jobid-qid
*                  WITH z_verarb =  'X'
                  .
CALL FUNCTION 'JOB_CLOSE'
    EXPORTING
      jobname              = 'job1'
      jobcount             = jobcount
      strtimmed            = 'X'
      sdlstrtdt            = sy-datum "дата
      sdlstrttm            = ttime "время
    EXCEPTIONS
      OTHERS               = 99.

_________________
Regards


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, фев 04 2008, 17:18 
Директор
Директор

Зарегистрирован:
Пт, окт 07 2005, 09:10
Сообщения: 752
Откуда: 4.6C
Пол: Мужской
Code:
      CALL TRANSACTION 'ABUMN'  USING .... MODE .....
                                    UPDATE 'S'   <---
                                    MESSAGES INTO ......

Поможет синхронное обновление.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, фев 04 2008, 17:45 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пн, сен 18 2006, 10:37
Сообщения: 177
Откуда: Беларусь
Пол: Мужской
Я пытался вызывать CALL TRANSACTION 'AS02' ... MODE 'S', но в том и дело что ОснСр все еще блокировано в ABUMN и call transaction вываливается с сообщением об ошибке. Дело в том что в abumn я обрабатываю <ТОЖЕ САМОЕ> ОснСр что и должна обрабатывать вызываемая транзакция - поэтому следующая транзакция AS02 отработает только если abumn закончится и освободит ОснСр. Пробовал и все остальные режимы... Вы написали CALL TRANSACTION 'ABUMN' просто для примера? Потому что вообще я именно ИЗ ABUMN вызываю транзакцию AS02.

_________________
Regards


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, фев 04 2008, 18:55 
Директор
Директор

Зарегистрирован:
Пт, окт 07 2005, 09:10
Сообщения: 752
Откуда: 4.6C
Пол: Мужской
Данные транзакции надо выполнять не одна из другой, а друг за другом:
Code:
CALL TRANSACTION 'ABUMN'....
.....
CALL TRANSACTION 'AS02'....

Т.е. создать программу, в которой в начале будете задавать необходимые значения, а затем использовать их в транзакциях.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выполнить др. транз. в фоновом режиме после текущей
СообщениеДобавлено: Вт, фев 05 2008, 00:42 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
FoLKo написал:
Такая ситуация. Выполняется транзакция (ABUMN), после ее окончания необходимо выполнить другую транзакцию (AS02) в фоновом режиме, незаметно для пользователя.

Первый вариант решения - сделать небольшой Workflow. Вторая транзакция вызывалась бы из фоновой стандартной задачи. Но тут придется возиться с настройками WF.
В качестве второго варианта я бы попробовал создать функциональный модуль обновления, и поместить его вызов в LAISA001 (CALL FUNCTION IN UPDATE TASK). Модуль обновления объявить как V2, это будет означать, что он вызовется строго после успешного обновления всех таблиц транзакцией ABUMN и сброса блокировок. Из этого функционального модуля вызвать второй функциональный модуль с опцией STARTING NEW TASK, который бы вызывал вторую транзакцию оператором CALL TRANSACTION или через программный запуск сессии.

_________________
С уважением, Сергей Королев


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

Зарегистрирован:
Пн, сен 18 2006, 10:37
Сообщения: 177
Откуда: Беларусь
Пол: Мужской
Народ подскажите <я не знать русский языка>.
Пытался выполнить програмку, чтобы проверить вызов нескольких тразакция в одной своей програмке. Для проверки запускаю програмку:
Code:
REPORT  Z1.
call transaction 'ABUMN'.
write: / 'Ok.'.


наткнулся на такую проблему, что если в вызвавшейся транзакции abumn сразу нажать отмена или назад, то управление как и положено возвращается в мою програмку и пишется "Ok.". А если провести перемещение - управление назад НЕ передается... Система пишет что такой-то документ сформирован и остается в транзакции abumn. Если потом нажать назад или отмена, выпадаем в меню. :(

:?:

_________________
Regards


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

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
FoLKo написал:
Система пишет что такой-то документ сформирован и остается в транзакции abumn. Если потом нажать назад или отмена, выпадаем в меню. :(

Скорее всего там так здорово реализован выход - повторным вызовом той же транзакции. Такое встречается.

Вот в 4.6с в функц модуле AMDP_USER_COMMAND_PROCESS, который вызывается для обработки команды SAVE есть оператор:

Code:
*           Transaktion neu aufrufen
            CALL 'GET_PARAM_TCOD' ID 'PTCOD' FIELD SY-TCODE.
            LEAVE TO TRANSACTION SY-TCODE.


Скорее всего именно он и срабатывает.

_________________
С уважением, Сергей Королев


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, фев 06 2008, 10:22 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пн, сен 18 2006, 10:37
Сообщения: 177
Откуда: Беларусь
Пол: Мужской
4 Сергей Королев: а что значит V2? Попробовал создать вызов ФМ обновления.
Я создал первый ФМ - свойства Модуль обновления-Немедленный Запуск. Второй ФМ - стандартный ФМ.
Вызываю первый ФМ как:
Code:
call function 'ZFM1' IN UPDATE TASK
  exporting
    I_ANLA = my_anla.

В нем вызываю второй:
Code:
WAIT UP TO 3 SECONDS.
call function 'ZFM2' STARTING NEW TASK 'MYTASK'
  exporting
    I_ANLA = I_ANLA.

Имя задачи как я понял может быть любым.
abumn сначала выполняется но через секунду приходит системное письмо с ошибкой CALL_FUNCTION_REMOTE_ERROR, причем и Abumn откатывается назад. думал может вызвать из ФМ свой репорт который бы вызвал бы AS02 или сразу в первом ФМ пробовал вызвать call transaction 'as02' - но тогда возникает ошибка POSTING_ILLEGAL_STATEMENT - насколько я понял в модуле обновления нельзя вызывать call transaction или submit zrep.

_________________
Regards


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

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
FoLKo написал:
а что значит V2?

Там нужно отметить "Start delayed", по-русски наверное "Отложенный запуск".
FoLKo написал:
CALL_FUNCTION_REMOTE_ERROR
В свойствах ZFM2 нужно поставить "Remote enabled mdule".

Да, и WAIT уберите! Это совсем не к месту в модуле обновления.

_________________
С уважением, Сергей Королев


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

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


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

Зарегистрирован:
Пн, сен 18 2006, 10:37
Сообщения: 177
Откуда: Беларусь
Пол: Мужской
Спасибо большое!!
Уже кое-что получается :)
Еще бы узнать как из второго ФМ FM2 выдать сообщение в случае ошибок - если я там пишу свои сообщения на экран ничего не выдается.

_________________
Regards


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

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
FoLKo написал:
Спасибо большое!!
Уже кое-что получается :)
Еще бы узнать как из второго ФМ FM2 выдать сообщение в случае ошибок - если я там пишу свои сообщения на экран ничего не выдается.

Поскольку функция выполняется в отдельной задаче, то у нее нет никакой связи с вашим текущим сеансом в GUI. Можно только лог использовать (функции BAL*).

_________________
С уважением, Сергей Королев


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, фев 06 2008, 17:19 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пн, сен 18 2006, 10:37
Сообщения: 177
Откуда: Беларусь
Пол: Мужской
Народ может кто знает из-за чего может быть такая ошибка, может не совсем в тему но все таки:

Логика такая:
1. Выполняется транзакция, из нее первый ФМ -> call function 'ZFM1' IN UPDATE TASK.
2. Вызвался первый ФМ, ZFM1 - вызывает второй ФМ ->call function 'ZFM2' STARTING NEW TASK 'MYTASK'.
3. А в ZFM2 так получается что идет создание контейнера для ALV
Code:
*DATA mycontainer TYPE REF TO cl_gui_docking_container
CREATE OBJECT mycontainer
   EXPORTING
      extension = cl_gui_docking_container=>ws_maximizebox
   EXCEPTIONS
      cntl_error = 1
      cntl_system_error = 2
      create_error = 3
      lifetime_error = 4
      lifetime_dynpro_dynpro_link = 5
      others = 6 .

и тут возникает ошибка - контейнер не создается с ошибкой sy-subrc = 3 (create_error).

Хотя в такой логике - все Ок.:
1. Тестовый репорт ZZZ в нем просто вызов ZFM2 -->call function 'ZFM2' STARTING NEW TASK 'MYTASK'.
2. В ZFM2 ALV создается нормально...

Т.е. если вызов не через модуль обновления а сразу - все нормально.
Тоже самое происходит если создать сессию, в которой создается ALV. Эта сессия ставится в очередь, появляется в SM35. И потом если выполнить сессию вручную - все Ок. А если создать програмку которая автоматом запустит сессию, сессия вываливается из-за той же самой ошибки - не создался doking_container.
Получилось немного сумбурно... :roll:

_________________
Regards


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

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Все просто. В вариантах с ошибкой вы пытаетесь создавать визуальные контролы в отвязанных от GUI рабочих процессах.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу 1, 2  След.

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


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

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


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

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