SAPфорум.RU https://www.sapboard.ru/forum/ |
|
CALL FUNCTION '' IN UPDATE TASK https://www.sapboard.ru/forum/viewtopic.php?f=13&t=13945 |
Страница 2 из 2 |
Автор: | trop [ Ср, апр 12 2006, 13:53 ] |
Заголовок сообщения: | ку |
все просто - commit work [and wait] и rollback work завершают luw. если commit вызвать внутри ф/м in update task, т.е. "внутри" luw, текущий luw разделится на два luw-а, и первый всегда будет завершаться commit-ом. аналогично с rollback. проще говоря - вызывающий процесс теряет управление |
Автор: | Димкин [ Ср, апр 12 2006, 15:21 ] |
Заголовок сообщения: | |
А что делать, если в модуле IN UPDATE TASK произошла ошибка? К примеру пытаемся добавить запись, а с таким ключем уже есть. |
Автор: | Loyso [ Ср, апр 12 2006, 15:29 ] |
Заголовок сообщения: | |
Димкин написал(а): А что делать, если в модуле IN UPDATE TASK произошла ошибка?
К примеру пытаемся добавить запись, а с таким ключем уже есть. ИМХО проверять перед тем как добавить |
Автор: | Сергей Королев [ Ср, апр 12 2006, 15:37 ] |
Заголовок сообщения: | |
Димкин написал(а): А что делать, если в модуле IN UPDATE TASK произошла ошибка?
К примеру пытаемся добавить запись, а с таким ключем уже есть. Во-первых, пользователю, от имени которого было сделано обновление, придет экспресс сообщение о том, что Update не прошел, во-вторых, информация об ошибочных обновлениях будет отображена в транзакции SM13, оттуда же можно посмотреть дамп. |
Автор: | nicky555 [ Чт, апр 13 2006, 07:49 ] |
Заголовок сообщения: | |
... добавлю, что некоторые обновления можно "дотолкать", исправив ошибку. |
Автор: | Димкин [ Чт, апр 13 2006, 09:23 ] |
Заголовок сообщения: | |
Димкин написал(а): А что делать, если в модуле 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 ] |
Заголовок сообщения: | |
Можно RAISE, можно MESSAGE типа E или A. Кстати, SELECT перед INSERT'ом лишний, можно SY-SUBRC после Insert'а проверить. |
Автор: | HanibaL [ Пт, янв 19 2018, 11:21 ] |
Заголовок сообщения: | Re: CALL FUNCTION '' IN UPDATE TASK |
Добрый день. В тему обновления таблиц: есть задача по списку ТН обновить кластерную и свою Z-таблицу. Кластерная обновляется через ФМ по одному ТН. Как правильно сделать так, чтобы либо весь список ТН обновился в обеих таблицах, либо весь не обновился. В ФМ обновления кластерной таблицы параметра NO_COMMIT нет. Думал сделать в цикле обновить кластерную таблицу, и если не одной ошибки не возникло, то сделать обновление z-таблицы через ФМ обновления. Но как-то это некрасиво что ли... |
Автор: | Rizor [ Пт, янв 19 2018, 13:42 ] |
Заголовок сообщения: | Re: CALL FUNCTION '' IN UPDATE TASK |
HanibaL написал(а): Добрый день. В тему обновления таблиц: есть задача по списку ТН обновить кластерную и свою Z-таблицу. Кластерная обновляется через ФМ по одному ТН. Как правильно сделать так, чтобы либо весь список ТН обновился в обеих таблицах, либо весь не обновился. В ФМ обновления кластерной таблицы параметра NO_COMMIT нет. Думал сделать в цикле обновить кластерную таблицу, и если не одной ошибки не возникло, то сделать обновление z-таблицы через ФМ обновления. Но как-то это некрасиво что ли... Понять, вызывается ли commit work в ФМ-е. Если да, и это не отключаемо, то о модулях обновления забыть, т.к. в них нельзя вызывать commit. Использовать некрасивый вариант. Если нет, то обновление через ФМ в цикле пихать в один модуль обновления, обновление z-таблице во второй. При ошибке в любом из них, оба откатятся |
Автор: | HanibaL [ Пт, янв 19 2018, 16:57 ] |
Заголовок сообщения: | Re: CALL FUNCTION '' IN UPDATE TASK |
Rizor написал(а): HanibaL написал(а): Добрый день. В тему обновления таблиц: есть задача по списку ТН обновить кластерную и свою Z-таблицу. Кластерная обновляется через ФМ по одному ТН. Как правильно сделать так, чтобы либо весь список ТН обновился в обеих таблицах, либо весь не обновился. В ФМ обновления кластерной таблицы параметра NO_COMMIT нет. Думал сделать в цикле обновить кластерную таблицу, и если не одной ошибки не возникло, то сделать обновление z-таблицы через ФМ обновления. Но как-то это некрасиво что ли... Понять, вызывается ли commit work в ФМ-е. Если да, и это не отключаемо, то о модулях обновления забыть, т.к. в них нельзя вызывать commit. Использовать некрасивый вариант. Если нет, то обновление через ФМ в цикле пихать в один модуль обновления, обновление z-таблице во второй. При ошибке в любом из них, оба откатятся Спасибо! Буду копать ФМ кластера. |
Автор: | Kuranov.Dmitry [ Пт, янв 19 2018, 17:03 ] |
Заголовок сообщения: | Re: CALL FUNCTION '' IN UPDATE TASK |
Rizor написал(а): Понять, вызывается ли commit work в ФМ-е. Если да, и это не отключаемо, то о модулях обновления забыть, т.к. в них нельзя вызывать commit. Использовать некрасивый вариант. только если в ФМ обновления кластера есть коммит, то как потом в цикле откатить предыдущие вызовы если произошла ошибка обновления очередной записи? |
Автор: | HanibaL [ Ср, янв 24 2018, 12:57 ] |
Заголовок сообщения: | Re: CALL FUNCTION '' IN UPDATE TASK |
Kuranov.Dmitry написал(а): Rizor написал(а): Понять, вызывается ли commit work в ФМ-е. Если да, и это не отключаемо, то о модулях обновления забыть, т.к. в них нельзя вызывать commit. Использовать некрасивый вариант. только если в ФМ обновления кластера есть коммит, то как потом в цикле откатить предыдущие вызовы если произошла ошибка обновления очередной записи? В цикле собирать успешные. Если хотя бы один не сработал в ФМ обновления кластера, то вызывать по успешным тоже самое обновление, но только с предыдущими данными. |
Страница 2 из 2 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |