Возник вопрос каким образом можно вставить дополнительные проверки полномочий в отчеты по заявкам ММ, конечно можно написать свои отчеты, да и писать там как бы не много, таблица то факту одна, но можно все сделать более проще, как мне кажется, при этом все будет в рамках стандарта. Для реализации предлагаю воспользоваться функциональностью Enhancement Spot (описано тут: You are not allowed to view links.
Register or
Login).
Транзакции:
ME5A - Просмотр списка заявок
ME5J - Заявки к проекту
ME5K - Заявки к контировке и т.д. другие отчеты по заявкам
В общем виде все транзакции отчетов по заявкам ММ, вызывают в конечном итого один одну и туже подпрограмму вывода результата, это модуль
FM06BF01_START, который содержит подпрограмму
PERFORM START. в самом начале модуля:
*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, в которому удаляем все заявки которые не следует показывать пользователям, т.е. фактически реализуем тут дополнительную свою проверку полномочий. В общем это место похоже работает как единая точка входа для всех программ отчетов по заявкам, так что сделав проверку тут, получаем ее во всех стандартных отчетах по заявкам.
Примечание: Есть один момент с производительностью, если она не будет сильно устраивать, тогда надо будет для каждого отчета включатся отдельно в места выбора данных, но это усложняет дальнейшую поддержку, поэтому я рекомендую использовать описанный метод и только если производительность будет очень низкой делать модификации каждого из отчетов в точках выбора данных.