Você está na página 1de 7

Business Add-Ins

Business Add-Ins

Maurício Mião
Consultor BC
mauricio.miao@procwork.com.br
SAP Certified

/conversion/tmp/scratch/503106224.doc Pág. 1
Business Add-Ins

INTRODUÇÃO..................................................................................................................................................3

ARQUITETURA................................................................................................................................................4

UM POUCO DE ORIENTAÇÃO A OBJETOS..............................................................................................4

COMO ENCONTRAR UMA BADI EM UM PROGRAMA STANDARD.................................................5

ANALISANDO A DEFINIÇÃO.......................................................................................................................6

IMPLEMENTANDO A BADI..........................................................................................................................6

Bibliografia..........................................................................................................................................................7

/conversion/tmp/scratch/503106224.doc Pág. 2
Business Add-Ins

Introdução
Business Add-Ins, ou resumidamente BADI, é uma nova técnica de enhancement de
programas ABAP que surgiu junto com o ABAP Objects.

O gráfico acima mostra uma comparação com outras técnicas de modificação de


programas ABAP.
Em comparação a customer exits (SMOD/CMOD), BADIS são mais flexíveis porém mais
difíceis de utilizar, mas estão mais próximas do equilíbrio entre flexibilidade e facilidade de
uso.

As BADIs são desenvolvidas em ABAP Objects que é a extensão do ABAP para


Orientação a Objetos.

Ao contrário das customer-exits, onde somente a SAP podia criar os pontos de


modificação, BADIs podem ser criadas por outras empresas de desenvolvimento ABAP
para serem utilizadas nos programas desenvolvidos por elas.

As BADIs podem ser definidas como dependentes de filtros. Isso permite por exemplo a
criação de uma implementação diferente para cada país.

/conversion/tmp/scratch/503106224.doc Pág. 3
Business Add-Ins

A SAP garante a compatibilidade de todas as interfaces BADIs em futuros releases.


Upgrades não irão afetar as implementações atuais.

Nas novas versões do R/3, os desenvolvedores SAP tem criado um número maior de
BADIs em relação a customer exists (SMOD/CMOD).

Arquitetura

Application

O desenvolvedor SAP define em seu programa o ponto em que uma capacidade de


enhancement seria útil.
A partir daí ele cria no BADI Builder (transação SE19) a definição da BADI, que
basicamente é a sua interface.
Após a criação da definição, ele volta ao programa e insere a chamada aos métodos
dessa BADI e insere também o código que instancia a BADI caso uma implementação
dela exista.

Customer

Quando o SAP está sendo implantando, o desenvolvedor do cliente, após estudar a


definição da BADI, percebe que a mesma atende as suas necessidades.
Para codificar seu enhancement, ele cria uma implementação dessa BADI via BADI
Implementation (transação SE19) e insere seus códigos nos métodos disponíveis.

/conversion/tmp/scratch/503106224.doc Pág. 4
Business Add-Ins

Um pouco de Orientação a Objetos


Método

São as funções ou procedimentos da classe. É onde codificamos as funcionalidades da


da classe.

Interface

É o esqueleto de uma classe. Isso significa que na interface você define os métodos da
classe sem codifica-los. É como um modelo de implementação.
Focando em BADIs, é o esboço onde o desenvolvedor SAP define o que a BADI pode
fazer, com quais variáveis ela vai trabalhar, quais serão os parâmetros de importação e
exportação, deixando a codificação em branco para o desenvolvedor do cliente
preencher.

Classe

A classe é a implementação feita na SE19. Onde o desenvolvedor do cliente irá inserir


seu código em cada método que foi definido na interface.

Instancia

Resumidamente é o ato de carregar a classe na memória para que seus métodos possam
ser executados.

Como encontrar uma BADI em um programa standard


O modo mais fácil é procurando na transação SPRO – Customizing ou na hierarquia de
componentes.

Outra maneira é procurar dentro do código do programa standard pelo método da classe
que instancia as BADIs - cl_exithandler-get_instance.
Buscando a declaração da variável passada ao parâmetro instance você descobre a
interface da BADI que está sendo instanciada.

Report businessaddin.
class cl_exithandler definition load.           "declaration
data exit type ref to if_ex_businessaddin.      "interface reference
data word(15) type c value 'Business Add-in'.   "string you want to
change

start-of-selection.
  call method cl_exithandler=>get_instance      "factory method call
        changing instance = exit.               
  write:/'Please click here'.

at line-selection.

/conversion/tmp/scratch/503106224.doc Pág. 5
Business Add-Ins

  write:/ 'Original word: ',word.

   call method exit->methode                    "add-in call


        changing parameter = word.

  write:/ 'Changed word: ',word.

Nesse exemplo a interface da BADI é IF_EX_BUSINESSADDIN, tirando o prefixo IF_EX_


temos o nome da definição da BADI, nesse caso BUSINESSADDIN.

Ainda não existe uma ferramenta fácil para localizar BADIs assim como não existe para
as customer exit.

Analisando a definição
De posse do nome da podemos analisar na SE18 se a BADI atende nossas
necessidades.
Para isso verificamos os parâmetros de importação e exportação de cada método.
Somente essas variáveis e aquelas que criarmos localmente estarão disponíveis para
manipulação em nosso código dentro dos métodos.
Variáveis globais da aplicação não são visíveis dentro dos métodos assim como não são
nas funções.
Dentro dos métodos também não é permitido a chamada de telas e a criação de tabelas
internas com header line.

Todas as definições podem ter mais de uma implementação, porém, na maioria delas,
somente uma ativa ao mesmo tempo.

Se o flag Utiliz.múltipla estiver selecionado siginifica que podem existir várias


implementações ativas ao mesmo tempo para a definição.

Implementando a BADI
1. Na tela da SE19 insira o nome da sua implementação. É um nome qualquer
começando por Z ou Y.
2. Pressione criar.
3. Insira o nome da definição da BADI (vide arquitetura).

/conversion/tmp/scratch/503106224.doc Pág. 6
Business Add-Ins

4. Escolhe a aba Interface

5. Selecione um método via duplo clique. Na próxima tela insira o código desejado.
Retorne para a SE19
6. Ative a implementação

Quando a BADI possui filtro, você deve informar o valor do filtro para o qual a
implementação é válida.

Bibliografia
1. Changing the SAP Standard (BC) , SAP Library, SAP AG., 2000, caminho Library /
Basis Components / ABAP Workbench (BC-DWB)
2. Business_Add_Ins, SAP AG. 2001

/conversion/tmp/scratch/503106224.doc Pág. 7

Você também pode gostar