Sapforum.Biz

Инструменты => ABAP - Инструментальные средства => Тема начата: HelenKai от Август 14, 2012, 11:24:19 am

Название: Не сохраняется фин.позиция в тр.mb21
Отправлено: HelenKai от Август 14, 2012, 11:24:19 am
Добрый день!
Подскажите как можно в тр. mb21 сохранить  фин. позицию, которую вводят не руками, а подставляют с помощью ФМ???
Пробовала через MB_RESERVATION_BADI метод modify обычным присвоением cs_resb-fipex = '12.1.1.4' и   
ASSIGN ('(SAPMM07R)COBL-FIPEX') TO <fs>. <fs> = '12.1.1.4'. Значание не сохраняется.
Может кто-то сталкивался с подобной проблемой?
Название: Re: Не сохраняется фин.позиция в тр.mb21
Отправлено: Uukrul от Август 14, 2012, 02:49:49 pm
You are not allowed to view links. Register or Login
Пробовала через MB_RESERVATION_BADI метод modify обычным присвоением cs_resb-fipex = '12.1.1.4' и   
ASSIGN ('(SAPMM07R)COBL-FIPEX') TO <fs>. <fs> = '12.1.1.4'.
Ну как вам сказать, в данном BADI система формирует список модифицируемых полей исходя из того какие поля открыты для ввода на экране резервирования, кроме блока контировок, так как данные элементы физически размещены на другом подэкране и поэтому не обрабатываются  в этом BADI. Использование второго варианта через ASSIGN правильное, но не правильно выбрано место вызова данной конструкции. В этом месте такое изменение не актуально, опять же потому что поля контировки находятся на своем подэкране  8), но это не значит, что нельзя изменить контировку, хотя конечно стандартно она тянется из счета, а поэтому надо было искать место/экзит где это происходит.

Решение: В общем виде есть расширение: ACCOBL01, которое вы можете активировать через транзакцию CMOD (http://sapforum.biz/index.php/topic,660.0.html) и далее используем появившуюся функцию расширения: EXIT_SAPLKACB_002 - PAI exit for customer fields in coding block (или метод PBO), хотя в данном расширении на прямую нельзя изменить поле финпозиции FIPOS (стандартно экзит обрабатывает только созданные пользователем контировки), но через использование конструкции ASSIGN, можно дотянутся до p_cobl в которой и меняем FIPOS, точнее брать нужно переменную (SAPLKACG)L_COBL-FIPOS присваиваете в нее нужную вам финпозицию и все типа работает. Единственное аккуратно там в экзите, а то это расширение много где вызывается, так что прверочки поставьте на то что это именно создание резервирования происходит.