Есть техническая задача - при перемещении материала (309) должна делаться проверка полей в тр. cо специальной таблицей соответствий и при нахождении соответсвующей записи - вставлять их в соотв.поля экрана MIGO. Для этого было создано внедрение BAdI (MB_MIGO_BADI, использутся метод Line Modify).
Загвоздка возникла в том, что подставляемое поле - номер маетриала должно подставляться в поле UMMAT . Это поле запрещено для записи - при попытке писать в него BAdI выдает сообщение (BAdI: поле GOITEM-UMMAT не готово для ввода (изменение не копируется))
Попытался подставлять в соседнее поле UMMAKTX (описание материала) - но здесь другая незедача. поскольку поле подсталяется из программы, а не руками, то не отрабатывает логика обработки экрана и после нажатия Enter, в этом поле так и остается номер материала, если же заменить в этом номере хоть одну цифру (например "1" на "1"), то все отрабатывает ок и номер материала благополучно переходит в поле UMMAT, а в UMMAKTX подтягивается описание материала. Такой вариант к сожалению не пркатывает.
Пытался менять напрямую структуру GOITEM через ASSIGN - нашел только только один метод BAdI в котором это работает (PAI_Detail). но этот метод нетод не работает в режиме полного экрана MIGO - так что тоже не годится.
Посмотрел Customer Exit'ы (MGA00003 - 901 и 902) - отрабатывают по многу раз и в PAI и в PBO, так что сложно сделать для них фильтр, чтобы отрабатывало только на той позиции, для которой подставляется поле.
Может быть кто-нибудь сталкивался с аналогичной проблемой - как изменять поле в транзакции доступное только для чтения. ИЛИ Возможно, есть какие нибудь еще варианты с подстановкой поля UMMAT в другой момент, когда оно доступно для изменения, с помощью какого нибудь другого расширения?
Благодарю всех откликнувшихся.
|
|