Текущее время: Пт, мар 29 2024, 01:19

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


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

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


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

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