Текущее время: Вт, июн 24 2025, 14:42

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: call transaction №2 с commitом сразу после commit в транзакции №1.
СообщениеДобавлено: Пт, апр 03 2015, 11:43 
Ассистент
Ассистент

Зарегистрирован:
Ср, сен 22 2004, 12:15
Сообщения: 31
Есть 2 системные транзакции. Тр.№1 генерит некий объект\номер\документ. Тр№2 представляет этот объект немного "в профиль" и включает этот объект в сложную иерархию. Заказчик желает автоматическое включение в иерархию в конце тр№1. Очевидным представляется вариант вызова тр№2 "где-то в конце" тр№1.
Финал тр№1 выглядит так:
Code:
form final_1.
"имплицит место где можно врезаться (номер объекта уже известен)
call function 'кладу данные в систему_1'.
commit work.
"имплицит место где можно врезаться
endform.

Финал тр№2:
Code:
form final_2.
call function 'кладу данные в систему_2' in update task.
commit work.
endform.

Вопрос: получится ли врезать call transaction №2 в районе commit тр№1. Напрямую после в имплиците когда номер\объект уже есть в системе? Или где-то 'до' commitа включив вызов CT№2 в perform in update task? И не будет ли конфликтов COMMITов?
Спасибо.

_________________
... Ведь не может же того быть, кабы не было бы никак. И не потому, что оно вообще, а потому что когда оно что, тогда оно и пожалуйста...


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: call transaction №2 с commitом сразу после commit в транзакции №1.  Тема решена
СообщениеДобавлено: Пт, апр 03 2015, 12:26 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
если правильно понял, нужно во второй тр-ии использовать результаты первой,
следовательно вторую транзакцию нужно запустить тлько после того как данные
первой транзакции запишутся в таблицы бд, чтобы вторая видела с чем работать

варианты:

1) до commit work
1а)
создать ф/м обновления v2 (в свойствах: модуль обновления, радио 3 или 4 - запуск в очереди обновления v2 (2,4))
и вызвать его call function z_.. in update task,
внутри него вызвать call transaction или call function .. в другом процессе (destination NONE | in background task | ...),
смысл - отвязать процесс от задачи обновления, т.к. в ней запрещено трогать luw (операторы commit и rollback)
2а)
получить ключ обновления ,сохранить его
и после commit work ожидать завершения обновления с таким ключом,
запустить вторую транзакцию
3a)
создать ф/м с возможность удаленного запуска (RFC), вызвать call function z_.. in background task и
передать в него ключ обновления, дождаться завершения обновления любым способом ,
и вызвать вторую транзакцию,
ожидать нужно т.к. взависимости от вида процесса задача background обычно стартует ранее задачи update

2) после commit work
дождаться появления данных в бд через select или enqueue,
запустить вторую транзакцию


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: call transaction №2 с commitом сразу после commit в транзакции №1.
СообщениеДобавлено: Пт, апр 03 2015, 12:38 
Ассистент
Ассистент

Зарегистрирован:
Ср, сен 22 2004, 12:15
Сообщения: 31
Спасибо! Вариант 2 как-то "добрее" выглядит. Осталось проверить остаются ли данные после первого commitа и вспомнить какая из областей памяти не затирается для использования export to, import from.

_________________
... Ведь не может же того быть, кабы не было бы никак. И не потому, что оно вообще, а потому что когда оно что, тогда оно и пожалуйста...


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: call transaction №2 с commitом сразу после commit в транзакции №1.
СообщениеДобавлено: Пт, апр 03 2015, 13:10 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, ноя 12 2004, 10:44
Сообщения: 370
Откуда: Москва
транзакция в v2 - не то, для чего придуман процесс v2. вместо этого лучше использовать tRFC, запланировав его перед первым коммитом.
ровным счетом так, например, работает связка MM-WM при автоматических проводках

call function ... in background task вам в помощь


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: call transaction №2 с commitом сразу после commit в транзакции №1.
СообщениеДобавлено: Пт, апр 03 2015, 14:10 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
Поддерживаю holocron: имхо tRFC более правильный подход, нежели v2-update

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: call transaction №2 с commitом сразу после commit в транзакции №1.
СообщениеДобавлено: Пт, апр 03 2015, 15:17 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Можно написать свою программу с 2-мя последовательными вызовами транзакций 1 и 2, создать для нее свою транзакцию и вызывать ее вместо 1-й транзакции.
С tRFC могут быть проблемы при массовом вводе данных, т.к. вызов 2-й транзакции идет в отдельном диалоговом процессе.

_________________
С уважением,
Удав.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: call transaction №2 с commitом сразу после commit в транзакции №1.
СообщениеДобавлено: Пт, апр 03 2015, 17:07 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, ноя 12 2004, 10:44
Сообщения: 370
Откуда: Москва
Удав написал(а):
Можно написать свою программу с 2-мя последовательными вызовами транзакций 1 и 2, создать для нее свою транзакцию и вызывать ее вместо 1-й транзакции.
С tRFC могут быть проблемы при массовом вводе данных, т.к. вызов 2-й транзакции идет в отдельном диалоговом процессе.


а с двумя транзакциями вы будете принудительно ждать окончания первой или вызывать ее с синхронным обновлением. проще решить возможные проблемы с trfc


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: call transaction №2 с commitом сразу после commit в транзакции №1.
СообщениеДобавлено: Сб, апр 04 2015, 15:46 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
holocron написал(а):
вы будете принудительно ждать окончания первой

Так по другому и не получится выполнить эту задачу. Даже с tRFC :wink:

_________________
С уважением,
Удав.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: call transaction №2 с commitом сразу после commit в транзакции №1.
СообщениеДобавлено: Сб, апр 04 2015, 23:26 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, ноя 12 2004, 10:44
Сообщения: 370
Откуда: Москва
как раз trfc будет исполнено, если есть, ресурсы диалоговые, немедленно после v1. ничего ждать и не надо


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: call transaction №2 с commitом сразу после commit в транзакции №1.
СообщениеДобавлено: Вс, апр 05 2015, 02:00 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
holocron написал(а):
ничего ждать и не надо

А V1? :lol:
Еще раз: если есть возможность, то лучше использовать последовательный вызов транзакций.
Если нет, то можно использовать tRFC, но осторожно. Лет 10 назад из-за tRFC продуктив колом встал - закончились диалоговые процессы при обработке банковской выписки (F.110).
После этого пришлось переписывать обработку документов по банковской выписке в отдельную программу :roll:

_________________
С уважением,
Удав.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: call transaction №2 с commitом сразу после commit в транзакции №1.
СообщениеДобавлено: Вс, апр 05 2015, 19:07 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, ноя 12 2004, 10:44
Сообщения: 370
Откуда: Москва
Удав написал(а):
holocron написал(а):
ничего ждать и не надо

А V1? :lol:
Еще раз: если есть возможность, то лучше использовать последовательный вызов транзакций.
Если нет, то можно использовать tRFC, но осторожно. Лет 10 назад из-за tRFC продуктив колом встал - закончились диалоговые процессы при обработке банковской выписки (F.110).
После этого пришлось переписывать обработку документов по банковской выписке в отдельную программу :roll:


tRFC не начнется, пока не выполниться V1. :lol: а если V1 упадет в дамп, то tRFC даже не начнется.
диалоговые процессы закончились? что ж, бывает, базису, вероятно, надо иногда тоже работать, установив предел доступный для RFC.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: call transaction №2 с commitом сразу после commit в транзакции №1.
СообщениеДобавлено: Вс, апр 05 2015, 21:36 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
holocron написал(а):
tRFC не начнется, пока не выполниться V1. :lol:

И чем это отличается от call transaction по сути? :lol:
holocron написал(а):
диалоговые процессы закончились? что ж, бывает, базису, вероятно, надо иногда тоже работать, установив предел доступный для RFC.

Ну конечно, легче на базис кивать, если будет ошибка :wink:

Предлагаю закончить на этом :pivo:
Цитата:
если есть возможность, то лучше использовать последовательный вызов транзакций.
Если нет, то можно использовать tRFC, но осторожно.

_________________
С уважением,
Удав.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: call transaction №2 с commitом сразу после commit в транзакции №1.
СообщениеДобавлено: Вс, апр 05 2015, 22:11 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, ноя 12 2004, 10:44
Сообщения: 370
Откуда: Москва
Удав написал(а):
holocron написал(а):
tRFC не начнется, пока не выполниться V1. :lol:

И чем это отличается от call transaction по сути? :lol:

тем, что это стандартный механизм. ну ок, давайте закончим


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: call transaction №2 с commitом сразу после commit в транзакции №1.
СообщениеДобавлено: Пн, апр 06 2015, 14:03 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Цитата:
создать ф/м обновления v2 (в свойствах: модуль обновления, радио 3 или 4 - запуск в очереди обновления v2 (2,4))
и вызвать его call function z_.. in update task,
внутри него вызвать call transaction или call function .. в другом процессе (destination NONE | in background task | ...),
смысл - отвязать процесс от задачи обновления, т.к. в ней запрещено трогать luw (операторы commit и rollback)
Бывает очень забавно когда напихают сложную логику в v1/v2, а потом внезапно кончаются update-процессы и модули ждут своей очереди на обновление.
Вызывает массу интересных эмоций у пользователей (ошибок нет, но и документа нет... надо провести еще раз), админов (что за фигня у вас там работает??) и поддержки (которой прилетает от всех участников процесса плюс от руководства)

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: call transaction №2 с commitом сразу после commit в транзакции №1.
СообщениеДобавлено: Пн, апр 06 2015, 18:16 
Ассистент
Ассистент

Зарегистрирован:
Ср, сен 22 2004, 12:15
Сообщения: 31
Всем спасибо за комментарии. Давно не мучил tRFC и даже подзабыл подробности почему при упоминании о нем начинает слегка мутить :roll: . Года 3 назад случилась по сути аналогичная ситуация описанная ув. Удавом.
Здесь же удалось после COMMITа в имплиците по рабоче-крестьянски вставить цикл с WAIT UP TO и SELECT. Тестовые 10 примеров отработали сразу, не добравшись до первого WAIT UP. Первые 100 реальных документов проскочили без ошибок.

_________________
... Ведь не может же того быть, кабы не было бы никак. И не потому, что оно вообще, а потому что когда оно что, тогда оно и пожалуйста...


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

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


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

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


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

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