Sapforum.Biz

Инструменты => ABAP - Инструментальные средства => SMOD/CMOD - Расширения => Тема начата: tmp20052006 от Октябрь 12, 2010, 05:31:05 pm

Название: Изменить свойства поля заголовка MIGO при условиях
Отправлено: tmp20052006 от Октябрь 12, 2010, 05:31:05 pm
Возникла необходимость изменить свойства поля заголовка в MIGO (GOHEAD-LFSNR сделать недоступным для редактирования) при выполнении определённых условий (для поступления 101 ВДв по исходящей поставке). Может быть кто-то подскажет как правильнее всего (badi, exit-ы) будет решить такую проблему?

Спасибо.
Название: Re: Изменить свойства поля заголовка MIGO при условиях
Отправлено: Uukrul от Октябрь 12, 2010, 06:16:23 pm
Недоступным потому что вы туда свою информацию хотите занести, а пользователи это изменяют или что? А сделать свой вид движения на основании 101 и там закрыть поле?
Название: Re: Изменить свойства поля заголовка MIGO при условиях
Отправлено: tmp20052006 от Октябрь 12, 2010, 07:41:54 pm
По сути да - надо чтобы пользователи не меняли данные (номер исходящей поставки в этом поле). Потому что при сторно поступления, если при поступлении был указан не тот номер поставки, документ материала сторно не попадает в поток документов по исходящей поставке. А вид движения свой уже нельзя :(
Название: Re: Изменить свойства поля заголовка MIGO при условиях
Отправлено: Uukrul от Октябрь 12, 2010, 11:04:23 pm
Ну что можно сказать.. вообще-то можно и даже будет по факту в рамках стандарта  ::), сначала читаем тут: http://sapforum.biz/index.php/topic,546.0.html, что такое энхансменты и как их можно использовать, лучше скачайте файл "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, так вот если у вас там будет стоять типа обязательность ввода, но поле будет закрыто от ввода, то само собой будут проблемы, поэтому смотрим чтобы поле небыло обязательным для ввода. По крайней мере я вот такой код вставил и поле стало при любых обстоятельствах доступным только для просмотра.
Название: Re: Изменить свойства поля заголовка MIGO при условиях
Отправлено: tmp20052006 от Октябрь 13, 2010, 09:48:12 am
Спасибо!

По идее как раз именно то, что нужно.. проверить самому нет полномочий, но похоже должно помочь..
Название: Re: Изменить свойства поля заголовка MIGO при условиях
Отправлено: tmp20052006 от Октябрь 15, 2010, 10:54:24 am
Всё получилось. В результате было сделано:
Код: 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-..)