Pular para o conteúdo
Início » S_SL0_21000029 Verificação de autorização de documentos

S_SL0_21000029 Verificação de autorização de documentos

S_SL0_21000029

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

Veja também: