Como funciona o Authority Check?
Problema
Criar um programa para gerar um relatório de vôos, filtrando por empresa aérea. Os vendedores só podem visualizar determinadas empresas aéreas e somente gerentes podem visualizar todas as empresas.
Solução
Cria um Authorization Object Z_CARRID, como o campo CARRID e ACTVT. Também precisamos criar as seguintes Authorizations: DISPLAY_ALL e DISPLAY_AA.
No programa, devemos verificar se o usuário tem autorização para visualizar a empresa aérea que ele escolheu na tela de seleção:
AUTHORITY-CHECK 'Z_CARRID'
ID CARRID FIELD pa_car
ID ACTVT FIELD '03'.
Se o SY-SUBRC = 0, quer dizer que o usuário possui autorização para visualizar a empresa aérea que ele entrou na tela de seleção. Nesse caso, o programa continua a sua execução.
Caso contrário, o usuário não tem autorização para visualizar a empresa aérea e ai devemos mostrar uma mensagem de erro.
Execução e Teste
Crie um usuário com a autorização DISPLAY_AA e rode o programa. O relatório deve ser mostrado. Retire essa autorização e rode novamente. Uma mensagem de erro deve aparecer.
Discussão
Não é a intensão aqui mostrar como criar os Authorization Objects e as Authorizations, mas qual o mecanismo do sistema de autorização do SAP.
O mecanismo de autorização adotado pela SAP é baseado em Authorization Objects and Authorizations.O conjunto de Authorizations forma um profile e este é adicionado aos profiles do usuário. Um objeto de autorização é base para a criação de Authorizations:
Vamos pegar o exemplo usado acima, do objeto Z_CARRID. Ele é formado pelo campo CARRID (Empresa aérea) e ACTVT (Atividade). Ou seja, um objeto de autorização é formado apenas por campos, sem nenhum valor.
Os valores são adicionados nas autorizações. No nosso exemplo, citei duas autorizações: DISPLAY_ALL e DISPLAY_AA, compostas pelos seguintes valores:
DISPLAY_ALL
CARRID = *
ACTVT = "03"
Isso significa que o usuário que tiver essa authorization no seu profile, poderá executar a atividade 03 (display) para qualquer empresa aérea (CARRID = *).
DISPLAY_AA
CARRID = "AA"
ACTVT = "02"
Já essa autorização, garante ao usuário que a tiver em seu profile, a permissão para alterar (atividade 02) empresas aéreas com código “AA”.
Ainda não está terminado. A criação do objeto, da autorização e a inclusão dos mesmos no profile do usuário não garante as devidas permissões. É necessário incluí-lo no programa.
Fazemos isso com o comando:
AUTHORITY-CHECK 'Z_CARRID' " define o objeto de autorização
ID CARRID FIELD pa_car " define o valor do campo CARRID para teste
ID ACTVT FIELD '03'. " define qual a operação desejada nesse ponto do programa
Com o retorno desse comando será via SY-SUBRC, sendo que 0 significa que o usuário tem autorização, e 8 para permissão negada.
Se quizermos testar se usuário tem ou não permissão para alterar, mudamos a atividade para 02.
Temos várias atividades permitidas. Para consultar a lista completa, veja o help do ABAP da SAP.
1 Resultado
[…] http://abap101.com/2009/01/11/como-funciona-o-authority-check/ […]