Автор Тема: Подстановка фиктивных FM-контировок в заявке MM  (Прочитано 6864 раз)

0 Пользователей и 1 Гость просматривают эту тему.

abaper

  • Гость
   Добрый день.

 Для заполнения полей FM-контировок в заявке (фин.поз, фонд, ПФМ, функ.сфера и бюдж.период)
использую метод PROCESS_ACCOUNT     BADI ME_PROCESS_REQ_CUST.
Запускаю тр. ME52N. При изменении полей на вкладке контировка  попадаю в свой код в методе.
Проблема в том, что поля контировки все равно не изменяются.

Код: You are not allowed to view links. Register or Login
* Пример кода в методе PROCESS_ACCOUNT.
*  fmderive-commit_item   - финансовая позиция.
*  fmderive-fund          - фонд.
*  fmderive-fund_center   - ПФМ.
*  fmderive-function_area - функциональная сфера.
*  fmderive-BUDGET_PERIOD - бюджетный период.

 "получаем данные контировок (параметр - IM_ACCOUNT)
    LS_EXKN  = IM_ACCOUNT->get_exkn( ).
    LS_EXKNX = IM_ACCOUNT->get_exknx( ).

 "заменяем новыми значениями
    LS_EXKN-fipos     = fmderive-COMMIT_ITEM.
    LS_EXKN-FISTL     = fmderive-FUND_CENTER. "ПФМ
    LS_EXKN-GEBER     = fmderive-FUND.
    LS_EXKN-FKBER     = fmderive-FUNCTION_AREA.
    LS_EXKN-BUDGET_PD = fmderive-BUDGET_PERIOD.

    LS_EXKNX-fipos     = 'X'.
    LS_EXKNX-FISTL     = 'X'.
    LS_EXKNX-GEBER     = 'X'.
    LS_EXKNX-FKBER     = 'X'.
    LS_EXKNX-BUDGET_PD = 'X'.

* сохраняем данные контировок
    IM_ACCOUNT->set_exkn( LS_EXKN ).
    IM_ACCOUNT->set_exknx( LS_EXKNX ).

* получаем данные контировок (параметр - IM_ACCOUNT_REF
    LS_EXKN = IM_ACCOUNT_REF->GET_DATA( ).

    LS_EXKN-fipos     = fmderive-COMMIT_ITEM.
    LS_EXKN-FISTL     = fmderive-FUND_CENTER.
    LS_EXKN-GEBER     = fmderive-FUND.
    LS_EXKN-FKBER     = fmderive-FUNCTION_AREA.
    LS_EXKN-BUDGET_PD = fmderive-BUDGET_PERIOD.

* сохраняем данные контировок
    IM_ACCOUNT_REF->set_data( LS_EXKN ).

Может кто сталкивался с подобной проблемой?
« Последнее редактирование: Октябрь 24, 2011, 01:43:39 pm от abaper »

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Подстановка фиктивных FM-контировок в заявке MM
« Ответ #1 : Октябрь 25, 2011, 03:17:29 am »
You are not allowed to view links. Register or Login
Может кто сталкивался с подобной проблемой?
Да вообще у меня оно как-то странно работает это расширение... надо поковырять чуть подробнее...

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Подстановка фиктивных FM-контировок в заявке MM
« Ответ #2 : Октябрь 25, 2011, 01:13:10 pm »
Ну в общем с этим BADI что-то у меня завести ничего нормально не вышло. но есть userexit ACCOBL01, который срабатывает на блок контировки в заявке. Одна проблема в нем к возврату ожидаются только пользовательские поля контировки, а если их нет, то данный экзит не отрабатывает. Ну если надо сделать, а не помучиться, то есть два варианта:

1.1 Делаем пользовательское поле в контировке, путем расширения структуры ci_cobl, поле любое хоть CHAR(1).
1.2 Далее активируем экзит ACCOBL01 через транзакцию SMOD.
1.3 Используя технологию FIELD-SYMBOLS в функции экзита получаем доступ к переменной (SAPLKACB)COBL меняем там требуемые нам поля, я проверил для ПФМ, все красиво сработало. Описание как это делается можно посмотреть: You are not allowed to view links. Register or Login

2.1 Используем технологию Enhancement Spot  (You are not allowed to view links. Register or Login) идем в модуль SE38: LKACBF03.
2.2 Далее находим там сразу же подпрограмму FORM customer_exit_pbo CHANGING p_cobl TYPE cobl. и внедряем в самом начале подпрограммы неявный Enhancement Spot в этом расширении меняем нужные нам переменные в структуре p_cobl, и получаем требуемый нам эффект.

И в том и другом случае это все вызывается для каждой позиции заявки, так что как делать ваше дело, но отлаживаемся аккуратно. Кстати, я бы наверное использовал сценарий 1.

abaper

  • Гость
Re: Подстановка фиктивных FM-контировок в заявке MM
« Ответ #3 : Октябрь 25, 2011, 02:53:32 pm »
спасибо, буду пробовать

abaper

  • Гость
Re: Подстановка фиктивных FM-контировок в заявке MM
« Ответ #4 : Октябрь 26, 2011, 12:34:17 pm »
 Да, все сработало.
Использовал первый из предложенных вариантов. Думаю, и второй будет работать.
Спасибо Uukrul за помощь и обстоятельный ответ.