Текущее время: Ср, июл 30 2025, 01:06

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


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

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


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

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