Текущее время: Пт, июл 18 2025, 20:32

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 49 ]  На страницу 1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: 2 транзакции подряд в пакетном режиме
СообщениеДобавлено: Пн, авг 07 2006, 08:26 
Гость
Вопрос такой: есть ввод данных в пакетном режиме в 2 последовательные транзакции. Причём 2 транзакция должна запускаться только если окончательно отработала 1. Проблема в том, что 1 тран-ция иногда не отрабатывает до конца (похоже, не хватает времени), а 2 запускается и возникает ошибка. Пробовала использовать COMMIT WORK, но не помогает. Кто сталкивался с подобным, как быть?


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения: Re: 2 транзакции подряд в пакетном режиме
СообщениеДобавлено: Пн, авг 07 2006, 09:06 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Пн, сен 06 2004, 11:43
Сообщения: 1551
Пол: Мужской
Любаша написал(а):
Вопрос такой: есть ввод данных в пакетном режиме в 2 последовательные транзакции. Причём 2 транзакция должна запускаться только если окончательно отработала 1. Проблема в том, что 1 тран-ция иногда не отрабатывает до конца (похоже, не хватает времени), а 2 запускается и возникает ошибка. Пробовала использовать COMMIT WORK, но не помогает. Кто сталкивался с подобным, как быть?
А что за транзакции ? Один раз сталкивался с таким - еще в 4.0. Приходилось делать сперва прогон по циклу одну транзацию (шел массовый ввод) собирал все удачно введенные. А потом прогонял цикл со второй.......

Надо подробнее знать что за ситуация....

_________________
Ex ipso fonte bibere
Цитата:
Abyssus abyssum invocat
Dies diem docet
Ducunt volentem fata, nolentem trahunt

Estote prudentes sicut serpentes


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 07 2006, 11:36 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, мар 10 2005, 10:21
Сообщения: 198
Пол: Мужской
Как запускаются транзакции? Если друг за другом в одной программе, то достаточно ввести анализ на результат завершения выполнения 1-й транзакции, иначе - вести статистику...

_________________
Если программа заработала с первого раза, значит она написана принципиально неверно!


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 07 2006, 11:37 
Гость
Igor Moskvin написал:
Как запускаются транзакции? Если друг за другом в одной программе, то достаточно ввести анализ на результат завершения выполнения 1-й транзакции, иначе - вести статистику...

Каким Образом ввести анализ на результат завершения? Вопрос в этом и состоит.


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 07 2006, 11:48 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Пн, сен 06 2004, 11:43
Сообщения: 1551
Пол: Мужской
Любаша написал(а):
Igor Moskvin написал:
Как запускаются транзакции? Если друг за другом в одной программе, то достаточно ввести анализ на результат завершения выполнения 1-й транзакции, иначе - вести статистику...

Каким Образом ввести анализ на результат завершения? Вопрос в этом и состоит.

1. Посмотрите в хелпе полный формат call transaction
2. Успешное выполнение транзакции, с последующим commit work, не всегда позволяет запустить следующую транзакцию по только-что введенным данным.... Получаешь сообщение типа "документ не существует" или в этом роде, в зависиммости от того - что вводишь......

Выход - разнести во времени или в цикле ожидать успешного выполнения транзакции 2, если доподлинно известно, что при сущуществующих данных после транзакции 1 - транзакция 2 завершится успехом на 100%

_________________
Ex ipso fonte bibere
Цитата:
Abyssus abyssum invocat
Dies diem docet
Ducunt volentem fata, nolentem trahunt

Estote prudentes sicut serpentes


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 07 2006, 12:09 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Пн, сен 06 2004, 11:43
Сообщения: 1551
Пол: Мужской
РМщик написал(а):
...........
а в конце программы не забудь поставь COMMIT WORK AND WAIT.
................


Кстати о COMMIT WORK

именно не забыть про дополнение AND WAIT

_________________
Ex ipso fonte bibere
Цитата:
Abyssus abyssum invocat
Dies diem docet
Ducunt volentem fata, nolentem trahunt

Estote prudentes sicut serpentes


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 07 2006, 12:49 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Вс, окт 17 2004, 14:20
Сообщения: 326
Откуда: Москва
Надо делать CALL TRANSACTION с дополнением UPDATE 'S' или UPDATE 'L'.
Цитата:
Effect
The specified update mode f determines the update type. It can take the following values:
'A' (asynchronous update)
'S' (synchronous update)
'L' (local update)
If you do not specify the UPDATE addition, the default update mode 'A' is used.

Еще перед вызовом второй транзакции можно проверять заблокирован ли соответствующий объект блокировки. Это уже обсуждалось раньше...


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 07 2006, 12:54 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Вс, окт 17 2004, 14:20
Сообщения: 326
Откуда: Москва
К слову, после CALL TRANSACTION COMMIT WORK не нужен.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 07 2006, 12:56 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 14:35
Сообщения: 1519
Откуда: В ВЕЧНОМ БАНЕ
Ну COMMIT WORK AND WAIT, конечно да, но часто к сожалению нет... потому что если транзакции обрабатывают последовательно один и тот же объект, то даже после ... WAIT, не факт, что блокировки с объекта снялись и как следствие вторая транзакция нарвется на блокировку. Так что как вариант остается только после отработки первой транзакции проверить объекты блокирования и если их уже нет, то запускать вторую транзакцию.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 07 2006, 13:03 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Вс, окт 17 2004, 14:20
Сообщения: 326
Откуда: Москва
Не поможет COMMIT WORK AND WAIT. Потому что в самой транзакции 1 делается просто COMMIT WORK...


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 07 2006, 13:53 
Почетный гуру
Почетный гуру
Аватара пользователя

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

Абсолютно согласен. Проверять объект блокирования в цикле, если закпись заблокирована, то подождать некоторое время, например с помощью ФМ ENQUE_SLEEP.
Кроме этого, перед проверкой можно заставить транзакцию выполнять обновление синхронно с помощью CALL TRANSACTION ... UPDATE 'S' или локально, с помощью SET UPDATE TASK LOCAL перед вызовом CALL TRANSACTION.

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 07 2006, 14:29 
Гость
Удав написал(а):
Uukrul написал(а):
Так что как вариант остается только после отработки первой транзакции проверить объекты блокирования и если их уже нет, то запускать вторую транзакцию.

Абсолютно согласен. Проверять объект блокирования в цикле, если закпись заблокирована, то подождать некоторое время, например с помощью ФМ ENQUE_SLEEP.
Кроме этого, перед проверкой можно заставить транзакцию выполнять обновление синхронно с помощью CALL TRANSACTION ... UPDATE 'S' или локально, с помощью SET UPDATE TASK LOCAL перед вызовом CALL TRANSACTION.


Я уже использую SET UPDATE TASK LOCAL! Ошибка возникает всё равно. И COMMIT WORK AND WAIT тоже.
а 1 транзакцию я запускаю с помощью
Code:
CALL TRANSACTION call
                           "USING bdcdata MODE 'E' UPDATE 'L'
                           "MESSAGES INTO gt_messages
                           AND SKIP FIRST SCREEN
.

Дело в том, что нельзя одновременно использовать AND SKIP FIRST SCREEN и USING bdcdata MODE 'E' UPDATE 'S'.
А в пакетнике экраны и поля представлены по-другому, не так, как в самой транзакции.

Как определить блокировку объекта?
Где находятся эти данные? Имеются в виду таблицы БД?
Кто-нибудь знает о
Code:
DATA: g_transaction_done.
?


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 07 2006, 14:55 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Какая транзакция используется для пакетного ввода?

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 07 2006, 15:08 
Специалист
Специалист

Зарегистрирован:
Вт, авг 24 2004, 16:49
Сообщения: 186
Откуда: SAP ERP60
Пол: Мужской
Одним из вариантов call transaction является использование таблички options. Попробуйте поиграть с ней и особенно с флажком racommit...


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 07 2006, 16:21 
Гость
Stepan написал:
Одним из вариантов call transaction является использование таблички options. Попробуйте поиграть с ней и особенно с флажком racommit...


Это аналогично
Code:
USING bdcdata MODE 'E' UPDATE 'L' MESSAGES INTO gt_messages


и не проходит с AND SKIP FIRST SCREEN


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

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


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

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


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

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