Текущее время: Пн, окт 23 2017, 21:05

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Модуль обновления: нарушена транзакционность
СообщениеДобавлено: Чт, дек 15 2016, 12:34 
Специалист
Специалист

Зарегистрирован:
Пн, мар 12 2012, 09:40
Сообщения: 142
Добрый день! Подскажите, пожалуйста:

В документации написано, что транзакционность на уровне сервера приложений обеспечивают «модули обновления» (такие как CALL FUNCTION IN UPDATE TASK, PERFORM ON COMMIT).

Использую perform on commit, но транзакционность нарушается.
Код:
report  ztest.

perform test on commit.
commit work and wait.

form test .
  data: ls_test1 type ztest1.
  select single * from ztest1 into ls_test1
    where var = '3 ' and belnr = '0000000032'.
  delete from ztest1
  where var = '3 ' and belnr = '0000000032'.
  ls_test1-var = '1 '.
  ls_test1-belnr = '0000000001'.
  insert ztest1 from ls_test1.
endform.                    " TEST


Строчка удаляется из таблицы ztest1, но новая строчка не добавляется (в данном случае - из-за дубликата).
Почему транзакционность нарушена (одна операция в модуле обновления выполнена, а вторая нет) при использовании модуля обновления?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Модуль обновления -нарушена транзакционность.
СообщениеДобавлено: Чт, дек 15 2016, 12:50 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 16:38
Сообщения: 1088
Потому, что вы сами должны обработать ситуацию "ошибка в процессе обновления". Т.к. вы ее не обработали, т.е. не сообщили системе как себя вести, то программа считает, что все нормально и завершает операцию. Необходимо выдавать ошибку\падать в дамп\что-то еще, что бы система увидела, что надо отменить изменения

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль обновления -нарушена транзакционность.
СообщениеДобавлено: Чт, дек 15 2016, 15:43 
Специалист
Специалист

Зарегистрирован:
Пн, мар 12 2012, 09:40
Сообщения: 142
Спасибо!
А в чем тогда плюсы использования модулей обновновления в своих z-транзакциях?
Чем модули обновления лучше чем прямые обновления?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Модуль обновления -нарушена транзакционность.
СообщениеДобавлено: Чт, дек 15 2016, 17:20 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 16:38
Сообщения: 1088
Цитата:
Чем модули обновления лучше чем прямые обновления?

Именно тем, что они помогают (именно что помогают, т.к. не только они это делают) обеспечить транзакционность изменений.
На прямые изменения БД влияют различный действия ( см. implicit commit work\rollback work в help)

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль обновления -нарушена транзакционность.
СообщениеДобавлено: Чт, дек 15 2016, 23:30 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 17:44
Сообщения: 2888
Откуда: Москва
skaa писал(а):
А в чем тогда плюсы использования модулей обновновления в своих z-транзакциях?
Чем модули обновления лучше чем прямые обновления?

Если вы захотите, то любой каскад изменений или пройдет, или нет. Кодер об этом и написал.

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль обновления -нарушена транзакционность.
СообщениеДобавлено: Пт, дек 16 2016, 01:19 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 18:37
Сообщения: 1758
Откуда: Москва
Пол: Мужской
skaa писал(а):
Спасибо!
А в чем тогда плюсы использования модулей обновновления в своих z-транзакциях?
Чем модули обновления лучше чем прямые обновления?

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

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль обновления -нарушена транзакционность.
СообщениеДобавлено: Пт, сен 22 2017, 16:59 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, дек 20 2007, 19:21
Сообщения: 892
Че то не уловил где тут нарушение транзакционности.

_________________
я твой сап эфай внедрял


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль обновления -нарушена транзакционность.
СообщениеДобавлено: Пт, сен 22 2017, 17:36 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 16:38
Сообщения: 1088
ТС надеялся, что падение одной операции в модуле perform on commit будет валить всю транзакцию БД. А этого не было.

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль обновления -нарушена транзакционность.
СообщениеДобавлено: Пт, сен 22 2017, 18:14 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, дек 20 2007, 19:21
Сообщения: 892
Кодер писал(а):
ТС надеялся, что падение одной операции в модуле perform on commit будет валить всю транзакцию БД. А этого не было.

Но не в модуле обновления это будет так же точно работать.

_________________
я твой сап эфай внедрял


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль обновления -нарушена транзакционность.
СообщениеДобавлено: Ср, сен 27 2017, 08:57 
Специалист
Специалист

Зарегистрирован:
Пн, мар 12 2012, 10:38
Сообщения: 112
skaa писал(а):
Спасибо!
А в чем тогда плюсы использования модулей обновновления в своих z-транзакциях?
Чем модули обновления лучше чем прямые обновления?

Если мне не изменяет память, то в SAP есть 2 понятия, имеющих к этому отношение: SAP LUW и DB LUW.
DB LUW как раз таки и отвечает за обновление данных в БД, но время жизни и события завершения этих LUW разные.
Так если SAP LUW живет до момента вызова явного коммита(в общем случае), то DB LUW обладает как явными, так и неявными коммитами/роллбэками.
Как пример, попробуйте сделать что-то типа этого:
Код:
  ls_test-field1 = 'record1'.
INSERT ZTABAP FROM ls_test.

CALL FUNCTION 'ZTEST'
  DESTINATION lv_destination
  EXPORTING
    OK = lv_result.

IF sy-subrc = 0.
  ls_test-field1 = lv_result.
  INSERT ZTABAP FROM ls_test.
  commit work and wait.
ELSE.
  ROLLBACK WORK.
ENDIF.

Следующие операции приводят к неявному коммиту БД, даже если вы не делали Commit work(из того что помню):
Переход между экранами, вызов ФМ по RFC, вывод ошибок(information, error), там что то еще с процессами, но с этим много не работал.
А если вы работали в старом отладчике, то вы должны понимать насколько эти неявные коммиты иногда портят процесс отладки.
Неявные роллбеки: дампы и message A/X, может еще что-то.
Модули обновлений позволяют производить коммит/роллбек одним скопом, например, в многоэкранной транзакции. Где при обычных запросах коммит бы происходил при каждой переходе с экрана на экран.

p.s. Если где не прав, буду благодарен за поправки, сам особо в эту тему не углублялся.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Модуль обновления -нарушена транзакционность.
СообщениеДобавлено: Ср, сен 27 2017, 17:10 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, дек 20 2007, 19:21
Сообщения: 892
Нашел тут мегатред viewtopic.php?t=33320

_________________
я твой сап эфай внедрял


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль обновления -нарушена транзакционность.
СообщениеДобавлено: Ср, сен 27 2017, 18:05 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, дек 20 2007, 19:21
Сообщения: 892
А тут истина https://help.sap.com/http.svc/rc/abapdo ... ap_luw.htm

_________________
я твой сап эфай внедрял


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

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


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

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


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

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