Sapforum.Biz
Инструменты => ABAP - Инструментальные средства => SE37 - Построитель функций => Тема начата: Паганель от Октябрь 07, 2009, 03:10:00 pm
-
Нашел ту FM для изменения/создания видов оценки партии VB_CHANGE_BATCH_VALUATION, будет время - оформлю пример (кто бы напомнил через недельку)
-
Кстати, будьте внимательны, не стоит вызывать даную FM в контексте других транзакций (BADI), так как она вроде бы вызывает коммит
строка 809
PERFORM insert_batches ON COMMIT.
Еще одно интересное место строка 229:
* Change of valuation type is only allowed if exit is not called within
* goods movement and imported valuation type was blank (Note 723294)
IF no_change_of_bwtar IS INITIAL OR ymcha-bwtar IS INITIAL.
ymcha-bwtar = loc_bwtar.
ENDIF.
Как я понял, изменение Вида оценки возможно, если только функция вызывается без движения материала.
Note 723294 - EXIT_SAPLV01Z_013: Valuation type change at batch creation
-
...так как она вроде бы вызывает коммит
строка 809
PERFORM insert_batches ON COMMIT.
COMMIT WORK (http://www.sapdb.info/commit-abap-keyword-a-day/)
-
Изучение BC414 (http://www.sapnet.ru/viewtopic.php?t=2) - Programming Database Updates внесет ясность.
-
Мил человек, не расскажешь ли ты, простым, человечесским языком, весь сакральный смысл, описанного по ссылке http://www.sapdb.info/commit-abap-keyword-a-day/ (http://www.sapdb.info/commit-abap-keyword-a-day/)
-
Можешь воспользоваться online переводчиком: http://www.multitran.ru/ (http://www.multitran.ru/), например.
Basic form
COMMIT WORK.
Addition
… AND WAIT
Effect
Executes a database commit and thus closes a logical processing unit or Logical Unit of Work ( LUW ) (see also Transaction processing ). This means that:
* calls the subroutines specified by PERFORM … ON COMMIT ,
* executes asynchronously any update requests (see CALL FUNCTION … IN UPDATE TASK) specified in these subroutines or started just before,
* processes the function modules specified in CALL FUNCTION … IN BACKGROUND TASK
PERFORM insert_batches ON COMMIT.
Наличие в коде данной строки, конечно, с некоторой долей вероятности, вроде бы подразумевает конечный DB COMMIT внутри самой функции, но совсем не факт, что
она вроде бы вызывает коммит
Примеры некоторых BAPI тому подтверждение.
P.S. Включи в отладчике опцию "отладка обновлений" и по стеку вызовов посмотри точно, где находится сама строка с командой COMMIT WORK.
-
P.S. И строки 809 в исходном коде ф-ции нет, у меня их всего 382, т.е. если ты докопался где-то до чего-то, то указывай имя Include. Включи в отладчике опцию "отладка обновлений" и посмотри точно, где находится сама строка с командой COMMIT WORK.
Хм, извиняюсь, доабапился.... говорил о функции VB_CHANGE_BATCH_VALUATION, а смотрел код VB_CREATE_BATCH
-
Ок, продолжим после ознакомления с курсом BC414 (кхе, не скоро видно это будет).
Не хочется писать в локальный файл, а чтобы потом было легко найти, буду писать в созданный специально для этого раздел http://sapforum.biz/index.php/topic,845.0.html (http://sapforum.biz/index.php/topic,845.0.html)