Коллеги, добрый день!
Возникла проблема с загрузкой единиц оборудования в систему.
В Z-программе в цикле происходят следующие операции:
1) Создание ЕО с помощью BAPI_EQUI_CREATE.
2) Присвоение ЕО класса с помощью BAPI_OBJCL_CREATE.
3) Если ошибок не было вызывается CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING WAIT = 'X'.
В случае ошибки вызывается BAPI_TRANSACTION_ROLLBACK.
Складывается следующая ситуация:
1) Отрабатывается BAPI_EQUI_CREATE (без ошибок).
2) Отрабатывается BAPI_OBJCL_CREATE, возникают ошибки, вызывается BAPI_TRANSACTION_ROLLBACK, но при этом информация об основных данных ЕО не откатывается, а сохраняется где-то во внутреннем буфере.
3) При повторении операций (создание и присвоение класса) со следующей ЕО ФМ отрабатываются без ошибок, НО основные данные ЕО берутся из предыдущей (хотя на вход подаются новые значения!).
Подскажите пожалуйста, как обойти сложившуюся ситуацию.
Проблема решена.
После вызова BAPI_TRANSACTION_ROLLBACK необходимо вызывать ITOB_BUF_FREE.
Цитата: X-Rey від Січень 21, 2013, 03:50:20 ДП
После вызова BAPI_TRANSACTION_ROLLBACK необходимо вызывать ITOB_BUF_FREE.
Это система ECC 6.0 похоже, так как я с ЕО работал в 4.6 и там не помню такой проблемы, хотя на создавался серийных номеров тогда по самое не хочу.