Sapforum.Biz
Логистика => Управление материальными потоками (MM) => Тема начата: loseal от Январь 18, 2011, 03:32:57 pm
-
Help!
Кто либо сталкивался с вопросом автоматического копирования значений полей закладки контировки (ПФМ, ФинПозиция) при создании новой позиции в ТА MIGO?
MIGO -> Параметры настройки -> Значения по умолчанию -> галка "Копирование полей контировки" (установлена)
Есть настроенная строчка для операции (для примера Отпуск-Прочие-261вд)
1. Создаем первую позицию, со всеми заполненными полями (ПФМ, ФинПозиция в том числе)
2. Начинаем создавать вторую позицию: материал, кол-во,...
3. Заходим Параметры настройки -> Значения по умолчанию - нажимаем скопировать.
....данные из предыдущей позиции (ПФМ, ФинПозиция) не копируются в новую (как это описано в подсказке) ???
...или че то не так делаю или чего-то упустил....
-
Ну вообще-то вы первый раз просто задали что копировать, поэтому пункт 3 выполнять не нужно.. оно и так теперь должно работать, вы как создаете вторую позицию кстати? Нажимаете кнопку следующая позиция? Для ПФМ не пробовал надо настроить видимость этих полей, но для МВЗ и Счет и БСФ после нажатия кнопки новая позиция и ввода кода материала, переходим на экран контировки, все заполнено значениями из предыдущей позиции.
-
тоже так думал...
Новую позицию пробовал создавать и в разделе обзор позиций (номер материала, кол-во - завод и склад по умолчанию уже стоят) - ввод...
...и в разделе позиция подробно материал, кол-во - ввод...
В закладке Контировки такие поля: счет, фонд, ПФМ, ФинПозиция.
Увы. Поля остаются пустыми для новой позиции.
-
В закладке Контировки такие поля: счет, фонд, ПФМ, ФинПозиция.
Увы. Поля остаются пустыми для новой позиции.
А например такое поле как МВЗ для 201 ВДМ тоже не копируется или копируется?
-
Хм...
...попробовал для 201вд
поле счет копирует.... (интересно, а почему тогда для 261 его не копирует).
По поводу МВЗ - увы в системе их нет вооще, поэтому и проверить не получится.
-
Хм...
...попробовал для 201вд
поле счет копирует.... (интересно, а почему тогда для 261 его не копирует).
По поводу МВЗ - увы в системе их нет вооще, поэтому и проверить не получится.
Ок, посмотрю...
-
Решил проверить на других ВД.
что интересно... для всех 9* вд значения этих полей (ФинПоз, ПФМ, фонд, счет) копирует в новую позицию.
А для 2* вд как-то не хочет... :-\
Сравнивал вд - различий не нашел (кроме типа резервирования в последнем разделе "Внутреннее управление(не менять)")
-
Да ничего сравнивать не надо.. как говорится читаем первоисточники, а именно исходный текст модуля: LMIGOKL1, со строки 214 для версии 6.0 (если патчей накидали то может где-то ниже или выше) есть такой вот замечательный код
* If certain criterias are met -> copy COBL fields to next item
if s_defaults-xkto = abap_true and
s_control-action = 'A07' and
s_control-refdoc = 'R10' and
s_control-vgart = 'WA' and
ls_new_goitem-zeile <> 1.
.....
Который говорит нам что копирование значений контировки возможно только для операции A07 - Отпуск материала, подоперация/ссылочный документ R10 - Прочие, вид документа WA и позиция документа не первая, ну чтобы ясно было что уже есть что копировать. Для других случае копирование контировки не выполняется. Так сказать прибито гвоздями в коде. Вообще весь код отвечающий за копирование такой:
if s_defaults-xkto = abap_true and
s_control-action = 'A07' and
s_control-refdoc = 'R10' and
s_control-vgart = 'WA' and
ls_new_goitem-zeile <> 1.
* checks for copying of the COBL fields
if i_insert = abap_false.
describe table pt_goitem lines l_lines.
else.
l_lines = l_tabix - 1.
endif.
read table pt_goitem index l_lines into ls_cobl_goitem.
if sy-subrc = 0.
call method cl_mmim_migo_move_fields=>get_cobl_fields
exporting
i_bwart = ls_new_goitem-bwart
i_with_konto = abap_true
importing
et_fields = lt_coblfields.
* if one of the cobl fields has been filled for the new item
* -> do not copy the cobl fields from the previousw item
l_copycobl = abap_true.
loop at lt_coblfields into l_coblfields.
assign component l_coblfields of structure
ls_new_goitem to <ls_cobl_goitem>.
if not <ls_cobl_goitem> is initial.
l_copycobl = abap_false.
exit.
endif.
endloop.
if l_copycobl = abap_true.
loop at lt_coblfields into l_coblfields.
call function 'MIGO_CUST_FIELD_ALLOWED'
exporting
i_bwart = ls_new_goitem-bwart
i_field = l_coblfields
exceptions
not_allowed = 1
others = 2.
if sy-subrc = 0.
assign component l_coblfields of structure
ls_cobl_goitem to <ls_cobl_goitem>.
assign component l_coblfields of structure
ls_new_goitem to <ls_new_goitem>.
if <ls_new_goitem> = abap_false.
<ls_new_goitem> = <ls_cobl_goitem>.
endif.
endif.
endloop.
endif.
endif.
endif. " Copy cobl fields
if i_insert = abap_false.
append ls_new_goitem to pt_goitem.
else.
insert ls_new_goitem into pt_goitem index l_tabix.
endif.
Поэтому второй вопрос а что делать если хочется обеспечить копирование для других операций? Ну на этим кодом стоит такой вот вызов:
* BAdI: line modify
call method line_modify_badi
changing
cs_goitem = ls_new_goitem.
* BAdI MB_MIGO_ITEM_BAdI: method ITEM_MODIFY
call method line_modify_badi2
changing
cs_goitem = ls_new_goitem.
т.е. вызывается бади MB_MIGO_BADI в которой можно попытаться реализовать такой вот аналог копирования для своих операций, в вашем случае это 261 вид движения. Думаю это вполне возможно, но посмотрю реализацию чуть позже. Для самостоятельного чтения про этот бади писал тут: http://sapforum.biz/index.php/topic,375.0.html
-
В общем покрутил я тут эти расширения, красиво через экзиты/энхансменты/бади копирование сделать не получится к сожалению. Так что или нужно писать долгие и длинные письма на SAP, чтобы они вставили в данном коде точку расширения или брать ключ на объект разработки, вставлять свою точку расширения и реализовывать свою логику копирования.
-
Хотя тут еще поигрался со стандартной транзакцией, короче у меня получилось сделать так, выставить операцию A07 - Отпуск материала, подоперация/ссылочный документ R10 - Прочие, по умолчанию там станет вид движения 201, вы его исправьте на 261, а затем переходите к вводу позиций материала, номер заказа у вас будет теперь на закладке контировки как я понимаю, вводите его для первой позиции и заполняете свои остальные данные контировки, а дальше нажимаете кнопку следующая позиция, вводите материал, после чего вроде как все копируется для 261 вида движения в закладке контировка. Попробуйте у себя так сделать.
-
Большущее спасибо за быстрый и квалифицированный ответ!!!
Приятно, что мой Help не канул в лета....
Проблема объясняется работой BADI (местных кулибинов...)
При ее деактивации все копирует....
-
Проблема объясняется работой BADI (местных кулибинов...)
При ее деактивации все копирует....
Ну это был бы второй вариант если бы после всего у вас продолжило не работать... Вообще сейчас с этими бади/энхансментами и т.д. стало все намного сложнее докопаться в чем причина.