Как я могу определить Контроль доступа с вложенными И и ИЛИ для Базовой Службы Данных (используя парантез)? - PullRequest
0 голосов
/ 13 июня 2019

Доступ к данным, считанным из моей базовой службы данных (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, чем мой избыточный обходной путь?

...