SAPфорум.RU
https://sapboard.ru/forum/

LUW внутри другого LUW
https://sapboard.ru/forum/viewtopic.php?f=13&t=97128
Страница 1 из 1

Автор:  Димкин [ Ср, дек 05 2018, 11:42 ]
Заголовок сообщения:  LUW внутри другого LUW

Как нибудь можно делать коммит в одну таблицу (журнал), не коммитя остальные таблицы (с данными)?
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.
Но такие вызовы ФМ делают неявный коммит, и записи пишутся в таблицы.

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

Автор:  John Doe [ Ср, дек 05 2018, 12:29 ]
Заголовок сообщения:  Re: LUW внутри другого LUW

В этой теме недавно похожий вопрос разбирался, там еще ссылка на более раннее обсуждение. Но я бы логику переписал.

Автор:  trop [ Ср, дек 05 2018, 18:51 ]
Заголовок сообщения:  Re: LUW внутри другого LUW

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

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

Автор:  LAT [ Ср, дек 05 2018, 19:04 ]
Заголовок сообщения:  Re: LUW внутри другого LUW

Похоже на viewtopic.php?f=13&t=91536

Автор:  UKY [ Чт, дек 06 2018, 18:20 ]
Заголовок сообщения:  Re: LUW внутри другого LUW

А некторые ещё и так извращаются: https://blogs.sap.com/2018/12/03/parall ... -channels/

Автор:  broker.chelny [ Пт, дек 07 2018, 13:07 ]
Заголовок сообщения:  Re: LUW внутри другого LUW

Попробуй подпрограмму записи в лог сделать в виде отдельной программы и внутри делай commit. Программу вызывай через SUBMIT.

Автор:  Besa [ Пт, дек 14 2018, 10:13 ]
Заголовок сообщения:  Re: LUW внутри другого LUW

UKY написал(а):
А некторые ещё и так извращаются: https://blogs.sap.com/2018/12/03/parall ... -channels/

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

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

Автор:  Besa [ Пт, дек 14 2018, 10:18 ]
Заголовок сообщения:  Re: LUW внутри другого LUW

broker.chelny написал:
Попробуй подпрограмму записи в лог сделать в виде отдельной программы и внутри делай commit. Программу вызывай через SUBMIT.

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

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

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/