Spd написал(а):
Выглядит это следующим образом, пользователь запускает на переносном терминале сап-диалог,
который состоит из вызова всего одного функционального модуля ФМ1,
Скажу честно, я смутно представляю, что такое "переносной терминал". ФМ1 - это случаем не RFC-функция, которая вызывается из другой системы?
Вообще ситуация странная. Выполняется одна стандартная САП-операция, а затем пишется свой протокол. Никаких явных commit work. При этом данные САП-операции сохранились, а протокол нет. И никаких дампов не было? Если не было, можно предположить, что это ошибка в программе, например, где-то здесь
Spd написал(а):
* ....идет обработка результата вызова L_TO_CONFIRM на ошибку
*..............................при положительном результате идем дальше
Или что такая запись в ZSPDLOG уже есть. Можно добавить после INSERT:
IF sy-subrc <> 0. MESSAGE Xnnn(id). ENDIF.
Хотя бы дампы останутся.
Других предположений у меня нет. Могу только дать советы.
1) Не обязательно использовать команду COMMIT WORK. Эта команда делает много разных действий. В некоторых случаях вполне можно использовать CALL FUNCTION 'DB_COMMIT'. Это будет быстрее, вряд ли на много.
2) Если надо при выполнении стандартной САП-операции попутно сохранять еще и собственный протокол, лучше сделать так, чтобы данные САП-операции и собственный протокол сохранялись в одном LUW. При правильной реализации, это даст гарантию, что либо все сохранится, либо ничего не сохранится. К сожалению, эта задача в R3 нетривиальная и не всегда реализуемая (без изменения стандартных программ).