Зафиксировать для одной таблицы

Можно ли выполнить коммит только для выбранной таблицы?

У меня проблема в том, что я не знаю, есть ли еще таблицы, обновленные процессом, поэтому я хочу предотвратить их обновление с помощью моей фиксации!

Это массовая обработка, и только в конце процесса она вызовет фиксацию (логически).

Так есть ли способ обновить одну специальную таблицу вместо всех?

Случай: Запуск массовой обработки, подобный тому, с которым я работаю, обновляется в самом конце.

Наш/Мой код — это всего лишь реализация BAdI с несколькими функциями. Для получения конкретных данных необходимо сделать запрос в другую систему, этот запрос не может пропустить никаких следов в журнале истории, поэтому строго необходимо откатить запрос, чтобы он не сохранялся в Системе.

Этот запрос используется для записей рабочего элемента. Так что, если я обработаю 1 количество наборов данных и сгенерирую рабочий элемент, этот рабочий элемент будет зарегистрирован для запуска после запуска. При обработке 2-го количества наборов данных и выполнении запроса к другой системе я должен откатить его, но запись рабочего элемента первого количества наборов данных будет удалена (откат).

Можно ли сделать эти обновления с прямой фиксацией? -> Нет.

Разве я не могу просто управлять таблицами, чтобы они обновлялись внутренними таблицами и обновляли их в конце прогона? -› Нет, потому что эти классы не принадлежат нам.

Почему нельзя просто сделать откат в конце прогона? -› эти классы нам не принадлежат, иначе придется менять всю структуру массовой обработки.


person DientesDeCheto    schedule 24.05.2014    source источник
comment
Пожалуйста, попытайтесь выяснить, что означает термин ссылочная целостность, а затем, пожалуйста, укажите вескую причину, по которой вы, по-видимому, хотите его нарушить.   -  person vwegert    schedule 24.05.2014
comment
@DientesDeCheto Dientes de un cheto, esto suena argentino ;-)   -  person Jagger    schedule 03.06.2014
comment
Кажется, что регистрация этого внешнего звонка в вашем BAdI вообще не под вашим контролем, поэтому я не думаю, что вы можете добиться здесь того, чего хотите. Насколько я понимаю, регистрация ведется не в вашем BAdI, а в модуле метода/функции для этого внешнего вызова. Без модификации этого куска логики избавиться от этого лога не получится. Другой вопрос, почему вы вообще хотите избавиться от этого следа? Если произошло что-то важное, это должно быть зарегистрировано в обычной ситуации.   -  person Jagger    schedule 03.06.2014


Ответы (2)


Как программист вы имеете контроль и должны знать, что обновляется. Если вы структурируете свой код в LUW, вы можете контролировать, какие таблицы обновляются и в какой момент вы обнаруживаете ошибку, которая по-прежнему позволяет выполнить соответствующий откат. Таким образом, ответ конкретно об операторе фиксации был дан выше, но как программист вы можете сгруппировать свои операторы, чтобы добиться того же.

Потом.....

person SAP Pro    schedule 25.05.2014
comment
Полезный совет, но не в моем случае. Чтобы лучше понять проблему, я актуализировал свою запись! Пожалуйста, рассмотрите это для вашего фактического ответа. - person DientesDeCheto; 27.05.2014

Насколько мне известно, в момент вызова фиксации все DML, предшествующие этому оператору фиксации, и после последней фиксации фиксируются в базе данных. Поэтому, если после вашей фиксации есть еще коммиты, то ваша фиксация не влияет на них, и ваша фиксация не может повлиять на их, если, конечно, не существует условия отката.

person Shailendra    schedule 24.05.2014
comment
Таким образом, это означает, что если я выполню свою фиксацию, все изменения БД, сделанные ранее, будут обновлены ... дальнейший откат не повлияет на мою фиксацию (как я знаю). Так что нет возможности сделать одно обновление с соответствующим коммитом! - person DientesDeCheto; 24.05.2014
comment
Например, в случае оракула посмотрите docs .oracle.com/cd/B19306_01/appdev.102/b14261/ - person Shailendra; 24.05.2014