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

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: LUW внутри другого LUW
СообщениеДобавлено: Ср, дек 05 2018, 11:42 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, апр 12 2006, 14:36
Сообщения: 60
Как нибудь можно делать коммит в одну таблицу (журнал), не коммитя остальные таблицы (с данными)?
Code:
insert tab1.
perform write_log_and_commit. "<-- как это сделать?
"дальше какой-то код, и какая-нибудь проверка:
if check <> ok.
  rollback work. "откатывается tab1, а в журнале записи уже лежат
else.
  commit work.
endif.

Т.е. есть несколько таблиц с данными и таблица с журналом.
И нужно записывать сообщения в журнал с коммитом и иметь возможность откатить записи в таблицы с данными.

Данные в таблицы записываются обычным insert, не ФМ в update task.

Раньше я почему-то думал, что можно сделать так
call function 'Z_WRITE_LOG_AND_COMMIT' destination 'NONE'.
или так
call function 'Z_WRITE_LOG_AND_COMMIT' starting new task.
Но такие вызовы ФМ делают неявный коммит, и записи пишутся в таблицы.

Понятно, что можно переработать логику, писать лог во внутреннюю таблицу. Интересует именно можно ли реализовать такой трюк.


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

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
В этой теме недавно похожий вопрос разбирался, там еще ссылка на более раннее обсуждение. Но я бы логику переписал.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LUW внутри другого LUW
СообщениеДобавлено: Ср, дек 05 2018, 18:51 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
надо данные записывать в транзакции SAP (sap luw), т.е. в модулях обновления in update task,
а журнал в текущей транзакции БД (db luw), т.е. достаточно вызвать ф/м DB_COMMIT, желательно после commit/rollback work

в крайнем случае можно задать другой connection в sql операциях, напр NRIV*SHADOW


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: LUW внутри другого LUW
СообщениеДобавлено: Ср, дек 05 2018, 19:04 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, май 12 2011, 16:06
Сообщения: 347
Похоже на viewtopic.php?f=13&t=91536


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LUW внутри другого LUW
СообщениеДобавлено: Чт, дек 06 2018, 18:20 
Специалист
Специалист

Зарегистрирован:
Вт, июн 10 2014, 09:41
Сообщения: 179
А некторые ещё и так извращаются: https://blogs.sap.com/2018/12/03/parall ... -channels/


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: LUW внутри другого LUW
СообщениеДобавлено: Пт, дек 07 2018, 13:07 
Специалист
Специалист

Зарегистрирован:
Чт, дек 16 2010, 15:23
Сообщения: 131
Откуда: Набережные Челны
Пол: Мужской
Попробуй подпрограмму записи в лог сделать в виде отдельной программы и внутри делай commit. Программу вызывай через SUBMIT.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: LUW внутри другого LUW
СообщениеДобавлено: Пт, дек 14 2018, 10:13 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
UKY написал(а):
А некторые ещё и так извращаются: https://blogs.sap.com/2018/12/03/parall ... -channels/

Не знал раньше про AMC, запишу себе :)

Но на первый взгляд, согласен, это извращение относительно поставленной задачи.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LUW внутри другого LUW
СообщениеДобавлено: Пт, дек 14 2018, 10:18 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
broker.chelny написал:
Попробуй подпрограмму записи в лог сделать в виде отдельной программы и внутри делай commit. Программу вызывай через SUBMIT.

Не пойдет это, потому что submit...

По-моему, наиболее корректно делать через secondaty db connection который встроен уже в SBAL, если позволяет версия системе, если нет, то DB_COMMIT, но он не всегда может подойти в зависимости от контекста, в зависимости от того как уже написан код.


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

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


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

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


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

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