Вообщем ситуация такая: была (и есть ;-) ) ФМ-ка в которую передавались список позиций для проводки и производился вызов
IF gtitem[] IS NOT INITIAL.
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
......
TABLES
goodsmvt_item = gitem
return = gt_bapiret2.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
....
Теперь приходится разделять данную ФМ на 2 цикла с вызовом BAPI_GOODSMVT_CREATE см. http://sapforum.biz/index.php?topic=567.0 (http://sapforum.biz/index.php?topic=567.0),
так вот как бы сделать так что бы если в 2-вой части произошла (при втором вызове BAPI_GOODSMVT_CREATE ), отменялись изменения (создание документов материал) сделанные при первом вызове?
Достаточно ли будет только после обоих вызовов сделать
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' или еще какие то телодвижения нужны?
Где то слышал что есть конструкция, которая позволяет запускать ФМ, транзакции и т.д.
в контексте одной LUW?
Пока сделал после вызова обоих форм
IF err = 'X'.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
RAISE er_gm.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
ENDIF.
Что никто не знает?
Цитата: Паганель від Квітень 09, 2009, 02:53:10 ПП
Что никто не знает?
Данная ФМ CALL FUNCTION 'BAPI_GOODSMVT_CREATE', не является повторно вызываемой, так что никак!
Цитата: Uukrul від Квітень 09, 2009, 04:01:43 ПП
Данная ФМ CALL FUNCTION 'BAPI_GOODSMVT_CREATE', не является повторно вызываемой, так что никак!
А что значит
Цитатаповторно вызываемой
?
Цитата: Паганель від Квітень 09, 2009, 01:13:56 ПП
так вот как бы сделать так что бы если в 2-вой части произошла (при втором вызове BAPI_GOODSMVT_CREATE ), отменялись изменения (создание документов материал) сделанные при первом вызове?
Паганель, в следующий раз, когда будешь задавать вопрос, представь, что читать его будет не телепат... ;D ;D ;D
Если я правильно понял, то внутри ФМ у тебя организованы 2 цикла по внутренним таблицам, в каждом из которых осуществляются массовые проводки движения материалов посредством указанного BAPI. Вопрос: зачем 2 цикла, неужели нельзя точно определить, что тебе необходимо провести, а что нет? Как-то не совсем стройный алгоритм в плане здравого смысла и быстродействия: проводим, чтобы потом откатить... ???
Цитата: Dmitriy від Квітень 09, 2009, 04:52:18 ПП
Паганель, в следующий раз, когда будешь задавать вопрос, представь, что читать его будет не телепат... ;D ;D ;D
Да вроде бы понятно написал, ну ладно, буду старатся, ссори :)
Цитата: Dmitriy від Квітень 09, 2009, 04:52:18 ПП
Если я правильно понял, то внутри ФМ у тебя организованы 2 цикла по внутренним таблицам, в каждом из которых осуществляются массовые проводки движения материалов посредством указанного BAPI. Вопрос: зачем 2 цикла, неужели нельзя точно определить, что тебе необходимо провести, а что нет? Как-то не совсем стройный алгоритм в плане здравого смысла и быстродействия: проводим, чтобы потом откатить... ???
Такой так сказать, бизнес-процесс, надо сначала провести все Дт, а потом Кт.
Первый цыкл - приходует Готовую продукцию, второй - списывает Сырье.
Цитата: Паганель від Квітень 09, 2009, 04:08:00 ПП
А что значит ?
Это значит, что пока данные будут не откоммичены, повторный вызов этой ФМ невозможен... получишь ошибку. Так что кина не будет, вариант только остается с логированем выполненных действий, чтобы в случае войны откатить все приходы по которым не получились отпуски.
Кстати, а что мешает делать в одном документе приход и расход?
точно не скажу, типа получилось что суммы проводок нулевые (типа система видет что делаем + потом -, значит не меняется себестоимость)
короче расспрошу и разберусь отвечу
Цитата: Uukrul від Квітень 09, 2009, 05:23:58 ПП
Это значит, что пока данные будут не откоммичены, повторный вызов этой ФМ невозможен... получишь ошибку. Так что кина не будет, вариант только остается с логированем выполненных действий, чтобы в случае войны откатить все приходы по которым не получились отпуски.
ага для полной ж.... счастььььья в смысле :(, еще не хватало мне делать обратные проводки, такое вылезет, перевое так это себестоимость
Цитата: Паганель від Квітень 09, 2009, 05:55:47 ПП
ага для полной ж.... счастььььья в смысле :(, еще не хватало мне делать обратные проводки, такое вылезет, перевое так это себестоимость
Куда вылезет и зачем вылезет? Опять же что-то мне подсказывает, что явно у вас с идеологией не в порядке...
Цитата: Uukrul від Квітень 09, 2009, 10:35:13 ПП
Куда вылезет и зачем вылезет? Опять же что-то мне подсказывает, что явно у вас с идеологией не в порядке...
долго рассказывать, потом как то ..... может быть ;-)
Цитата: Паганель від Квітень 10, 2009, 09:23:32 ДП
долго рассказывать, потом как то ..... может быть ;-)
Тогда как бы не ясен вопрос и дальнейшее развитие темы... а посему значит тема закрывается до снятия завесы секретности с процессов, которые пытаются автоматизировать, на срок как я понимаю минимум 50 лет, а значит мало кто доживет до этих времен!
Цитата: Uukrul від Квітень 09, 2009, 04:01:43 ПП
Данная ФМ CALL FUNCTION 'BAPI_GOODSMVT_CREATE', не является повторно вызываемой, так что никак!
Хорошо, а если ФМ все-таки является "повторно вызываемой" то как тогда поступать? Какая языковая конструкция?
Цитата: Паганель від Травень 07, 2009, 02:25:37 ПП
Хорошо, а если ФМ все-таки является "повторно вызываемой" то как тогда поступать? Какая языковая конструкция?
call ФМ1
call ФМ1
COMMIT WORK.
Цитата: Uukrul від Травень 07, 2009, 02:47:46 ПП
call ФМ1
call ФМ1
COMMIT WORK.
Просто однако .... хотя если roolback work - то должно все откатится :)
Цитата: Паганель від Травень 07, 2009, 03:30:41 ПП
Просто однако .... хотя если roolback work - то должно все откатится :)
Ну почему должно... откатиться, фактически это же группа записей вставленная в БД, так что если никакая зараза где-то в теле ФМ не вставили промежуточный COMMIT, то все и откатиться.