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

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


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

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


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

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