S_SL0_21000029 Ampliar verificação de autorização para exibição de documentos
Utilização
Este Business Add In (BAdI) é utilizado no componente Contabilidade financeira (FI).
Com este BADI as verificações de autorização já existentes no nível de linha podem ser complementadas com outras verificações de autorização na exibição e modificação de documentos FI.
Este BAdI só tem um método até o SAP enhancement package 6 para SAP ERP 6.0 (SAP_APPL 606) inclusive:
FI_AUTHORITY_ITEM
Exemplo 1:
AUTHORITY-CHECK OBJECT ‘XYZ’
ID ‘ACTVT’ FIELD i_beract
ID ‘FISTL’ FIELD i_bseg-fistl.
IF sy-subrc NE 0.
IF i_beract = ’02’.
AUTHORITY-CHECK OBJECT ‘XYZ’
ID ‘ACTVT’ FIELD ’03’
ID ‘FISTL’ FIELD i_bseg-fistl.
IF sy-subrc NE 0.
c_rcode = 4.
ELSE.
c_bmodz = ‘A’.
ENDIF.
ELSE.
c_rcode = 4.
ENDIF.
ENDIF.
A partir do SAP enhancement package 6 para SAP ERP 6.0, versão para SAP HANA 1.0 (SAP_APPL 616), o BAdI tem outros dois métodos:
GET_FIELDLIST e
GET_WHERE_CLAUSE
Os dois métodos são utilizados para ajustar a implementação do BAdI aos bancos de dados in-memory. Os dois métodos só são utilizados nesse caso e só se você tinha implementado o método BAdI anterior.
Exemplo 2:
Você quer otimizar o exemplo acima mencionado para bancos de dados in-memory. Para isso, você deve implementar um dos dois métodos BAdI novos.
Método ET_FIELDLIST:
DATA: ls_field TYPE LINE OF ET_FIELDS.
ls_field = ‘FISTL’.
APPEND ls_field TO ET_FIELDS.
EV_SUPPLIED = ‘X’.
Método GET_RANGE:
DATA: lt_fistl TYPE TABLE OF FISTL.
FIELD-SYMBOLS: <fistl> type fistl.
SELECT fistl FROM FMFCTR INTO TABLE lt_fistl.
LOOP AT lt_fistl ASSIGNING <fistl>.
AUTHORITY-CHECK OBJECT ‘XYZ’
ID ‘ACTVT’ FIELD ’03’ “at least authority to display
ID ‘FISTL’ FIELD <fistl>-fistl.
IF sy-subrc EQ 0.
ls_range-SIGN = ‘I’.
ls_range-OPTION = ‘EQ’.
ls_range-LOW = <fistl>-fistl.
APPEND ls_range to et_range.
ENDIF.
ENDLOOP.
Dependendo do tipo de verificação de autorização, você deve preferir o método GET_FIELDLIST ou o método GET_WHERE_CLAUSE . Isto depende essencialmente do número de entidades, i.e. no caso de poucos valores possíveis, você deve preferir o método GET_WHERE_CLAUSE. Se você quiser separar a autorização para diferentes atividades de autorização, você deve implementar sempre GET_FIELDLIST.
•Se você implementar GET_FIELDLIST para uma verificação de autorização, a implementação de método anterior não é efetuada.
•Se você implementar GET_WHERE_CLAUSE, você pode geralmente eliminar a implementação do método anterior no método FI_AUTHORITY_ITEM.
Pré-requisitos
Os objetos de autorização correspondentes existem e as autorizações correspondentes estão atualizadas.
Atividades
Após chamar a atividade IMG, proceder da seguinte forma:
1. Entrar um nome para a implementação de BADI na caixa de diálogo subseqüente do campo Implementação e selecionar Transferir.Caso já tenham sido criadas implementações do BADI, é apresentada uma caixa de diálogo com as implementações existentes. Selecionar Criar nesta caixa de diálogo.
2. Entrar um Texto breve para a implementação no campo adequado.
3. Inserir características do filtro na ficha Características caso se trate de um BADI dependente do filtro.
4. Selecionar a ficha Interface.O Nome da classe de implementação será gerado pelo sistema com base no nome da implementação. O nome pode ser modificado.
5. Gravar as entradas e atribuir um pacote.
6. Posicionar o cursor em um método. Chamar o Class Builder com um clique duplo.
7. Entrar a codificação prevista para a implementação nas instruções method <nome da interface>~<nome do método>. e endmethod.
8. Gravar, ativar a codificação e navegar de novo para a tela Modificar implementação.
9. Gravar na tela Modificar implementação.
Nota: É possível criar primeiro uma implementação para BADI e só ativá-la mais tarde. Nesse caso, encerrar o processamento no ponto em que se encontra.
10. Selecionar Ativar.A codificação criada pelo usuário será executada durante a execução do programa de aplicação.
Ver também
Métodos:
FI_AUTHORITY_ITEM
GET_FIELDLIST
GET_WHERE_CLAUSE