Автор Тема: Изменить свойства поля заголовка MIGO при условиях  (Прочитано 9105 раз)

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

Оффлайн tmp20052006

  • Newbie
  • *
  • Сообщений: 4
  • Репутация: +0/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Возникла необходимость изменить свойства поля заголовка в MIGO (GOHEAD-LFSNR сделать недоступным для редактирования) при выполнении определённых условий (для поступления 101 ВДв по исходящей поставке). Может быть кто-то подскажет как правильнее всего (badi, exit-ы) будет решить такую проблему?

Спасибо.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Недоступным потому что вы туда свою информацию хотите занести, а пользователи это изменяют или что? А сделать свой вид движения на основании 101 и там закрыть поле?

Оффлайн tmp20052006

  • Newbie
  • *
  • Сообщений: 4
  • Репутация: +0/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
По сути да - надо чтобы пользователи не меняли данные (номер исходящей поставки в этом поле). Потому что при сторно поступления, если при поступлении был указан не тот номер поставки, документ материала сторно не попадает в поток документов по исходящей поставке. А вид движения свой уже нельзя :(

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Ну что можно сказать.. вообще-то можно и даже будет по факту в рамках стандарта  ::), сначала читаем тут: You are not allowed to view links. Register or Login, что такое энхансменты и как их можно использовать, лучше скачайте файл "Enhancement Spot 2.pdf"  в этом же сообщении, там чуть подробнее расписано чем на форуме сейчас. Далее есть такой модуль: LMIGOSMC, в нем со строки 268 есть точка расширения: ENHANCEMENT-POINT FIELDSELECTION_01 SPOTS ES_SAPLMIGO, она находится внутри цикла LOOP AT SCREEN. <>. ENDLOOP. Этот цикл как раз идет по обновлению полей экрана заголовка и не только. Вставляем свой код в данную точку, что-то типа:
Код: You are not allowed to view links. Register or Login
ENHANCEMENT 237  YTIV_MIGO_FLS_SELECTION.    "inactive version
* Тест проверки возможности отключения ввода в поля
  IF LS_FS-NAME = 'GOHEAD-LFSNR'.
      LS_FS-WORK = '2'.
  ENDIF.
ENDENHANCEMENT.
т.е. когда обрабатывается наше поле, то в переменой ставим признак 2, это значит поле для просмотра, если поставить 0, то вообще поле будет скрыто с экрана. Ну само собой вам надо проверить вид движения и что проводка идет к поставке, для этого смотрите переменные GOHEAD и GOITEM ну и вообще ставьте там точку останова и смотрите доступные переменные и что в них, думаю найдете при каких условиях надо отключать ввод в этом поле. Да кстати, в этой структуре  LS_FS есть еще поля *_REQUIRED, так вот если у вас там будет стоять типа обязательность ввода, но поле будет закрыто от ввода, то само собой будут проблемы, поэтому смотрим чтобы поле небыло обязательным для ввода. По крайней мере я вот такой код вставил и поле стало при любых обстоятельствах доступным только для просмотра.
« Последнее редактирование: Октябрь 13, 2010, 12:11:52 am от Uukrul »

Оффлайн tmp20052006

  • Newbie
  • *
  • Сообщений: 4
  • Репутация: +0/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Спасибо!

По идее как раз именно то, что нужно.. проверить самому нет полномочий, но похоже должно помочь..

Оффлайн tmp20052006

  • Newbie
  • *
  • Сообщений: 4
  • Репутация: +0/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Всё получилось. В результате было сделано:
Код: You are not allowed to view links. Register or Login
[b][size=8pt]ENHANCEMENT 235  Z_PTPCON_MM_ODEL_FIELDS.    "active version
  DATA:
    l_bukrs TYPE bukrs.

  IF ls_fs-name = 'GOHEAD-LFSNR' AND
     godynpro-action = 'A01' AND
     godynpro-refdoc = 'R05'.

    IF gohead IS NOT INITIAL.
      SELECT SINGLE bukrs FROM t001k INTO l_bukrs
        WHERE bwkey = gohead-reswk.

      CHECK l_bukrs IS NOT INITIAL.

      IF l_bukrs = 'наша БЕ'.
        ls_fs-work = '2'.
      ENDIF.
    ENDIF.
  ENDIF.

ENDENHANCEMENT.[/size][/b]

Выяснился один момент:

Когда таблица <ls_fst>-table, по которой идёт луп, содержит поля заголовка (GOHEAD-..), то структура GOITEM ещё пустая, т.е. для ведения проверки на основании орг. данных получилось воспользоваться только данными GOHEAD. Когда же заполнена GOITEM, то лупа по полям заголовка не происходит (<ls_fst>-table не содержит поля GOHEAD-..)
« Последнее редактирование: Октябрь 15, 2010, 11:39:33 am от Uukrul »