Автор Тема: Дополнительные проверки полномочий в отчетах по заявкам ММ (ME5A, ME5J, ME5K...)  (Прочитано 4506 раз)

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

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 765
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Возник вопрос каким образом можно вставить дополнительные проверки полномочий в отчеты по заявкам ММ, конечно можно написать свои отчеты, да и писать там как бы не много, таблица то факту одна, но можно все сделать более проще, как мне кажется, при этом все будет в рамках стандарта. Для реализации предлагаю воспользоваться функциональностью       Enhancement Spot (описано тут: You are not allowed to view links. Register or Login).

Транзакции:    
         ME5A - Просмотр списка заявок
         ME5J - Заявки к проекту
         ME5K - Заявки к контировке и т.д. другие отчеты по заявкам

В общем виде все транзакции отчетов по заявкам ММ, вызывают в конечном итого один одну и туже подпрограмму вывода результата, это модуль FM06BF01_START, который содержит подпрограмму PERFORM START. в самом начале модуля:
Код: You are not allowed to view links. Register or Login
*eject
*----------------------------------------------------------------------*
*        Listausgabe starten                                           *
*----------------------------------------------------------------------*
form start.

*- Daten aus Selektionsreport holen -----------------------------------*
  import gs_banf from memory id 'GSFRG'.
  import cueb from memory id 'XYZ'.
  import ban com from memory id 'ZYX'.
  gpfkey = com-gpfkey.
  gfmkey = com-gfmkey.
  zpfkey = com-zpfkey.
  zfmkey = com-zfmkey.

*- Message-Steuerung initialisieren -----------------------------------*
  perform init_enaco(sapfmmex).

*- Funktionsberechtigungen initialisieren -----------------------------*
  PERFORM init_efube.
Как видно из текста, данные передаются через память, со строки 10 в переменную BAN[] импортируются все заявки, которые собраны на предыдущем шаге в различных подпрограммах выбора. Так как предполагаемые точки расширений могут быть только в начале или конце подпрограмм, то идем в первую подходящую подпрограмму в которой есть доступ к BAN[], по тексту это PERFORM init_efube. Заходим в нее и в начале вставляем свое расширение в котором делаем LOOP AT BAN. <....>. ENDLOOP, в которому удаляем все заявки которые не следует показывать пользователям, т.е. фактически реализуем тут дополнительную свою проверку полномочий. В общем это место похоже работает как единая точка входа для всех программ отчетов по заявкам, так что сделав проверку тут, получаем ее во всех стандартных отчетах по заявкам.

Примечание: Есть один момент с производительностью, если она не будет сильно устраивать, тогда надо будет для каждого отчета включатся отдельно в места выбора данных, но это усложняет дальнейшую поддержку, поэтому я рекомендую использовать описанный метод и только если производительность будет очень низкой делать модификации каждого из отчетов в точках выбора данных.