Текущее время: Сб, июл 19 2025, 01:00

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 49 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 07 2006, 16:22 
Гость
Удав написал(а):
Какая транзакция используется для пакетного ввода?


Какая разница? Это не имеет значения.


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

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

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


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


А общего алгоритма разве нет?
Я могу и сама найти.


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

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
можешь.
Сначала прочитай концепцию блокировок, затем запусти свою транзакцию в режиме редактирования, в параллельном режиме запусти транзакцию SM12.
Найдешь имя объекта блокт\ирования - и вперед ;)

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, авг 08 2006, 14:20 
Гость
Нашла имя объекта. Нашла ФМ ENQUEUE_READ, который возвращает список блокированных объектов. Но вот в этом списке может быть несколько записей. Можно использовать seqg3-gusrvb для более точного позиционирования, но надо знать его значение. Как его определить именно для данной транзакции и для данного режима?

Или можно сделать как-нибудь по другому?


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

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
ENQUEUE_READ не поможет.
1.Нужно вызвать в цикле ФМ ENQUEUE_<имя объекта> для попытки блокировки.
Если блокировка не снята, то ФМ выдаст sy-subrc <> 0. Ждем какое-то время, например 1 секунду. Продолжаем выполнять цикл.
2.Если блокировка к моменту вызова ENQUEUE_<имя объекта> была снята, то sy-subrc = 0, документ заблокирован.
Снимаем блокировку с помощью ФМ DEQUEUE_<имя объекта>, выходим из цикла.
3.запускаем 2 транзакцию.

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

ЗЫ: Если бы я знал транзакцию, то написал бы более точный код с аргументами блокирования :roll:

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, авг 08 2006, 16:03 
Гость
ЗЫ: Если бы я знал транзакцию, то написал бы более точный код с аргументами блокирования :roll:[/quote]

Ещё чего, сама сделаю. :) Точнее, уже сделала. Спасибо за консультацию. Но всё равно остаётся вероятность непрохождения транзакции, особенно если убрать вероятность зацикливания. То есть "быть или не быть" в смысле циклить или ждать ошибку. Смешной SAP, ей богу.


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

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Ну если за разумное время транзакция не выполнилась - лучше выдать ошибку.
Пусть пользователи обращаются к базиснику. Он разберется, почему транзакция не выполнилась вовремя :)

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


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

Зарегистрирован:
Вт, авг 17 2004, 14:35
Сообщения: 1519
Откуда: В ВЕЧНОМ БАНЕ
Любаша написал(а):
мешной SAP, ей богу.

Ну уж далеко не DBF-формат или вы знаете способ одновренного изменения данных в многопользовательской среде без концепции блокирования/защиты от изменений объектов?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, авг 08 2006, 16:45 
Гость
Uukrul написал(а):
Любаша написал(а):
мешной SAP, ей богу.

Ну уж далеко не DBF-формат или вы знаете способ одновренного изменения данных в многопользовательской среде без концепции блокирования/защиты от изменений объектов?


А на что вы обиделись? Я не говорю про концепцию блокировок, у меня конкретный случай:

Я у себя запустила две одинаковые транзакции. Если при этом проверять аргумент блокировки, то sy-sybrc <> 0, но в этих транзакциях в одной запись вставляется, а в другой висит на редактировании. Они могут работать параллельно, и не мешают друг другу. Получается, я не могу задать входной параметр в ENQUEUE_EX, так как не знаю его, а блокировка существует , тем не менее.

Если бы знать, как формируется запись seqg3 в списке блокировок (если посмотреть ФМ ENQUEUE_READ), то можно было бы коктретно указать на нужную мне транзакцию по аргументу блокировки, но я не знаю, как это сделать.


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

Зарегистрирован:
Вт, авг 17 2004, 14:35
Сообщения: 1519
Откуда: В ВЕЧНОМ БАНЕ
Любаша написал(а):
Uukrul написал(а):
Любаша написал(а):
мешной SAP, ей богу.

Если бы знать, как формируется запись seqg3 в списке блокировок (если посмотреть ФМ ENQUEUE_READ), то можно было бы коктретно указать на нужную мне транзакцию по аргументу блокировки, но я не знаю, как это сделать.

Значит идем по пунктам:
1. Нсли в первой транзакции что-то вставляется, то во второй явно редактируется в этот момент другое.
2. Если это первое еще не вставилось то и аргументов блокирования на это нечно еще нет, а вот на то второе аргумент блокирования есть. Вы я смотрю как партизан в гестапо, храните тайну что за транзакции пускаете последовательно, ну да ладно. Так вот обычно объект блокировки имеет аргументы. К примеру если это заказ ММ, то аргумент блокирования это номер заказа, для материала это код материала...
3. Я так и не понял в чем проблема, в том как это реализовывать? Ну или найдите рядом того кто это знает или читайте справку и смотрите исходные тексты системы. Благо второе и третье в свободном доступе.


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

Зарегистрирован:
Вс, окт 17 2004, 14:20
Сообщения: 326
Откуда: Москва
Любаша, а почему Вы так упорно скрываете имена запускаемых транзакций? Не вежливо, однако...
Про добавление объектов и невозможность при этом проверки блокировки - тут все зависит от транзакции. Если, например, вы добавляете FI-документ, то после завершения транзакции, Вы сможете узнать его номер (являющийся аргументом блокирования), даже если документ в БД реально еще не попал и блокировка еще не снята...


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

Зарегистрирован:
Пт, июн 02 2006, 09:59
Сообщения: 67
Пол: Мужской
Попробуй посмотреть таблицу VBHDR (пример в ФМ C14Z_COMMIT_CHECK)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, авг 10 2006, 17:42 
Гость
abap написал:
Попробуй посмотреть таблицу VBHDR (пример в ФМ C14Z_COMMIT_CHECK)


Спасибо, abap! Похоже, это то, что нужно! Взяла SELECT из C14Z_COMMIT_CHECK, подставила имя транзакции. В работе вроде видно, что запись появляется в таблице, а потом удаляется. Будем надеятся, что работать будет.


Спасибо всем. Поставила двойной заслон :) в проге. Надеюсь, что больше сообщений типа "Запись не создана" не будет.


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, авг 10 2006, 17:49 
Гость
Uukrul написал(а):
Любаша написал(а):
Uukrul написал(а):
Любаша написал(а):
мешной SAP, ей богу.

Если бы знать, как формируется запись seqg3 в списке блокировок (если посмотреть ФМ ENQUEUE_READ), то можно было бы коктретно указать на нужную мне транзакцию по аргументу блокировки, но я не знаю, как это сделать.

Значит идем по пунктам:
1. Нсли в первой транзакции что-то вставляется, то во второй явно редактируется в этот момент другое.
2. Если это первое еще не вставилось то и аргументов блокирования на это нечно еще нет, а вот на то второе аргумент блокирования есть. Вы я смотрю как партизан в гестапо, храните тайну что за транзакции пускаете последовательно, ну да ладно. Так вот обычно объект блокировки имеет аргументы. К примеру если это заказ ММ, то аргумент блокирования это номер заказа, для материала это код материала...
3. Я так и не понял в чем проблема, в том как это реализовывать? Ну или найдите рядом того кто это знает или читайте справку и смотрите исходные тексты системы. Благо второе и третье в свободном доступе.


Попытаюсь объяснить.
1. Создается некая запись (уж буду партизаном :) извиняйте) в 1 транзакции. Тут же в моей проге запускается 2 транзакция на редактирование этой вновь созданной записи.
2. Вот тут и возникает иногда ошибка типа "Запись такая-то не создана", хотя она есть!
3. При создании новой записи никаких блокировок по объектам нет - я проверяла. То есть в SM12 пусто. Видимо, INSERT не делает блокировку, только UPDATE.
4.Abap дал мне хороший совет - в этом ФМ проверяется не блокировка, а работа самой транзакции. Когда работа транзакции 1 завершена - можно запускать вторую.


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

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


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

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


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

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