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

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


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

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


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

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