Текущее время: Чт, мар 28 2024, 17:47

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: ку
СообщениеДобавлено: Ср, апр 12 2006, 13:53 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
все просто - commit work [and wait] и rollback work завершают luw.

если commit вызвать внутри ф/м in update task, т.е. "внутри" luw,
текущий luw разделится на два luw-а, и первый всегда будет
завершаться commit-ом.
аналогично с rollback.

проще говоря - вызывающий процесс теряет управление


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, апр 12 2006, 15:21 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, апр 12 2006, 14:36
Сообщения: 60
А что делать, если в модуле IN UPDATE TASK произошла ошибка?
К примеру пытаемся добавить запись, а с таким ключем уже есть.


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

Зарегистрирован:
Ср, янв 12 2005, 13:39
Сообщения: 2811
Откуда: замкадыш
Димкин написал(а):
А что делать, если в модуле IN UPDATE TASK произошла ошибка?
К примеру пытаемся добавить запись, а с таким ключем уже есть.


ИМХО проверять перед тем как добавить

_________________
Что бы выловить случайную ошибку нужно добиться устойчивости её появления.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, апр 12 2006, 15:37 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Димкин написал(а):
А что делать, если в модуле IN UPDATE TASK произошла ошибка?
К примеру пытаемся добавить запись, а с таким ключем уже есть.

Во-первых, пользователю, от имени которого было сделано обновление, придет экспресс сообщение о том, что Update не прошел, во-вторых, информация об ошибочных обновлениях будет отображена в транзакции SM13, оттуда же можно посмотреть дамп.

_________________
С уважением, Сергей Королев


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

Зарегистрирован:
Чт, сен 09 2004, 07:32
Сообщения: 777
Откуда: Москва
Пол: Мужской
... добавлю, что некоторые обновления можно "дотолкать", исправив ошибку.

_________________
"Прежде чем сделать что-то, подумай, к чему это может привести..."


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, апр 13 2006, 09:23 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, апр 12 2006, 14:36
Сообщения: 60
Димкин написал(а):
А что делать, если в модуле IN UPDATE TASK произошла ошибка?
К примеру пытаемся добавить запись, а с таким ключем уже есть.


Я неправильно задал вопрос.
Какой оператор писать. Ведь rollback писать нельзя.
Или достаточно raise и произойдет откат.

Например, как посоветовал Loyso проверяем:

Code:
data key_field_tmp like tab1-key_field.
select single key_field into key_field_tmp from tab1
    where key_field = my_value.
if sy-subrc = 0.
* Такая запись уже есть, где-то раньше произошла ошибка -
* необходимо откатить транзакцию
*ЧТО СЮДА ПИСАТЬ - raise?
endif.
insert ... into tab1.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, апр 13 2006, 09:49 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Можно RAISE, можно MESSAGE типа E или A.
Кстати, SELECT перед INSERT'ом лишний, можно SY-SUBRC после Insert'а проверить.

_________________
С уважением, Сергей Королев


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: CALL FUNCTION '' IN UPDATE TASK
СообщениеДобавлено: Пт, янв 19 2018, 11:21 
Начинающий
Начинающий

Зарегистрирован:
Чт, янв 31 2013, 10:59
Сообщения: 20
Добрый день.

В тему обновления таблиц: есть задача по списку ТН обновить кластерную и свою Z-таблицу. Кластерная обновляется через ФМ по одному ТН. Как правильно сделать так, чтобы либо весь список ТН обновился в обеих таблицах, либо весь не обновился. В ФМ обновления кластерной таблицы параметра NO_COMMIT нет.
Думал сделать в цикле обновить кластерную таблицу, и если не одной ошибки не возникло, то сделать обновление z-таблицы через ФМ обновления. Но как-то это некрасиво что ли...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: CALL FUNCTION '' IN UPDATE TASK
СообщениеДобавлено: Пт, янв 19 2018, 13:42 
Ассистент
Ассистент

Зарегистрирован:
Пт, фев 01 2013, 10:27
Сообщения: 35
HanibaL написал(а):
Добрый день.
В тему обновления таблиц: есть задача по списку ТН обновить кластерную и свою Z-таблицу. Кластерная обновляется через ФМ по одному ТН. Как правильно сделать так, чтобы либо весь список ТН обновился в обеих таблицах, либо весь не обновился. В ФМ обновления кластерной таблицы параметра NO_COMMIT нет.
Думал сделать в цикле обновить кластерную таблицу, и если не одной ошибки не возникло, то сделать обновление z-таблицы через ФМ обновления. Но как-то это некрасиво что ли...


Понять, вызывается ли commit work в ФМ-е.
Если да, и это не отключаемо, то о модулях обновления забыть, т.к. в них нельзя вызывать commit. Использовать некрасивый вариант.
Если нет, то обновление через ФМ в цикле пихать в один модуль обновления, обновление z-таблице во второй. При ошибке в любом из них, оба откатятся


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: CALL FUNCTION '' IN UPDATE TASK
СообщениеДобавлено: Пт, янв 19 2018, 16:57 
Начинающий
Начинающий

Зарегистрирован:
Чт, янв 31 2013, 10:59
Сообщения: 20
Rizor написал(а):
HanibaL написал(а):
Добрый день.
В тему обновления таблиц: есть задача по списку ТН обновить кластерную и свою Z-таблицу. Кластерная обновляется через ФМ по одному ТН. Как правильно сделать так, чтобы либо весь список ТН обновился в обеих таблицах, либо весь не обновился. В ФМ обновления кластерной таблицы параметра NO_COMMIT нет.
Думал сделать в цикле обновить кластерную таблицу, и если не одной ошибки не возникло, то сделать обновление z-таблицы через ФМ обновления. Но как-то это некрасиво что ли...


Понять, вызывается ли commit work в ФМ-е.
Если да, и это не отключаемо, то о модулях обновления забыть, т.к. в них нельзя вызывать commit. Использовать некрасивый вариант.
Если нет, то обновление через ФМ в цикле пихать в один модуль обновления, обновление z-таблице во второй. При ошибке в любом из них, оба откатятся


Спасибо!
Буду копать ФМ кластера.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: CALL FUNCTION '' IN UPDATE TASK
СообщениеДобавлено: Пт, янв 19 2018, 17:03 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Вт, сен 05 2017, 23:56
Сообщения: 537
Rizor написал(а):
Понять, вызывается ли commit work в ФМ-е.
Если да, и это не отключаемо, то о модулях обновления забыть, т.к. в них нельзя вызывать commit. Использовать некрасивый вариант.

только если в ФМ обновления кластера есть коммит, то как потом в цикле откатить предыдущие вызовы если произошла ошибка обновления очередной записи?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: CALL FUNCTION '' IN UPDATE TASK
СообщениеДобавлено: Ср, янв 24 2018, 12:57 
Начинающий
Начинающий

Зарегистрирован:
Чт, янв 31 2013, 10:59
Сообщения: 20
Kuranov.Dmitry написал(а):
Rizor написал(а):
Понять, вызывается ли commit work в ФМ-е.
Если да, и это не отключаемо, то о модулях обновления забыть, т.к. в них нельзя вызывать commit. Использовать некрасивый вариант.

только если в ФМ обновления кластера есть коммит, то как потом в цикле откатить предыдущие вызовы если произошла ошибка обновления очередной записи?

В цикле собирать успешные. Если хотя бы один не сработал в ФМ обновления кластера, то вызывать по успешным тоже самое обновление, но только с предыдущими данными.


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

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


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

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


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

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