Я знаю. Когда вы вызываете BAPI в своей программе, которые изменяют данные в системе SAP, вы должны затем вызвать BAPI_TRANSACTION_COMMIT для записи изменений в базу данных.
JCoFunctionTemplate functionTemplate = dest.getRepository().getFunctionTemplate("BAPI_FIXEDASSET_CHANGE");
JCoFunction ChangeFunction = functionTemplate.getFunction();
...//some code
ChangeFunction.execute(destination);
JCoFunctionTemplate functionTemplate = dest.getRepository().getFunctionTemplate("BAPI_TRANSACTION_COMMIT");
JCoFunction commFunct = functionTemplate.getFunction();
commFunct.execute(destination);
Мой вопрос заключается в том, что BAPI_TRANSACTION_COMMIT фиксирует все изменения со времени последнего коммита? или он совершает только предыдущую транзакцию?
Обычный способ зависимых операций с базой данных также известен как транзакция. Транзакция представляет собой определение атомарной операции на db для последовательного согласования данных после любых изменений. Если n операций базы данных друг за другом принадлежат транзакции, то фиксация должна быть выдана после последней успешной операции. Если какая-либо из n операций завершилась неудачно, транзакция считается не полностью выпущенной. Для этого обычно используется откат. Если у вас есть транзакция, которую нужно разделить, чтобы совершить только несколько изменений, подумайте о перепроектировании всего вашего подхода. Или, что не так приятно, создайте функциональный модуль публикации и вызовите это в задаче обновления. Будьте осторожны с этим. О, и я вижу, вы называете стандартный функциональный модуль sap. Ищите его параметры. Он может иметь флаг для фиксации неявно. И никогда не забывайте транзакцию SAP GUI "BAPI" и читайте документацию. Очень вероятно, что Ваше желание не является последовательным транзакцией, поэтому бапи должен сделать больше. Если что-то позже терпит неудачу, транзакция непоследовательна и поэтому не совершена. В основном сок знает, что должен делать их apis. Но я сомневаюсь, что когда речь идет о качественных уведомлениях и партиях проверки качества. : -D
BAPI_TRANSACTION_COMMIT
выполняет COMMIT WORK
или COMMIT WORK AND WAIT
зависимости от параметра WAIT
. Это означает, что он зафиксирует все изменения в базе данных, которые еще не были зафиксированы.
Таким образом, в вашем примере кода он будет фиксировать изменения из BAPI_FIXEDASSET_CHANGE
а также любые сделанные до этого изменения, которые еще не были выполнены.