Доступ к данным, считанным из моей базовой службы данных (CDS), ограничен определением контроля доступа (AC). Но я не могу активировать определение AC с вложенными AND
и OR
s.
@EndUserText.label: 'Access Control for my CDS'
@MappingRole: true
define role zmy_access_role {
grant select on ZMY_CDS
where
(
( ... ) = aspect pfcg_auth ( <check A> )
or ( ... ) = aspect pfcg_auth ( <check B> )
)
and
( ... ) = aspect pfcg_auth ( <check C> ) // some common check
}
с <check A/B/C>
проверкой подлинности, где A
или B
или оба A
и B
должны быть выполнены, а C
должна быть выполнена в любом случае. Активация этого AC в SAP R / 3 ABAP 7.50 завершается неудачно с сообщением
«Ожидаемый символ отсутствует)»
В качестве обходного пути Я могу использовать плоскую или расширенную версию выражения
@EndUserText.label: 'Access Control for my CDS'
@MappingRole: true
define role zmy_access_role {
grant select on ZMY_CDS
where
( ... ) = aspect pfcg_auth ( <check A> ) and ( ... ) = aspect pfcg_auth ( <check C> )
or ( ... ) = aspect pfcg_auth ( <check B> ) and ( ... ) = aspect pfcg_auth ( <check C> )
}
но это кажется слишком многословным.
Есть ли более элегантный способ определения AC, чем мой избыточный обходной путь?