BAdis são melhorias para a versão padrão do sistema. Elas podem ser inseridas no sistema SAP para acomodar as necessidades específicas dos utilizadores e serem incluídas no fornecimento Standard. Algumas indústrias específicas muitas vezes exigem funções especiais, a SAP permite que você crie estas funções pré-definidas em seu software utilizando os Business Add-ins.
Para criar uma BAdi siga os seguintes passos:
- Entre na transação SE18.
- Crie um novo Enhancement Spot chamado: ZDA_BADI_SPOT.
- No ícone criar BAdi, crie uma BAdi de nome ZDA_BADI.
- Desmarque a opção Multiple Use de sua BAdi:
- Salve sua BAdi e expanda seu conteúdo.
- Clique em interface e insira uma nova interface de nome ZAD_BADI_INTERFACE.
- Na aba métodos crie um novo método de instancia chamado GET_DADOS e insira uma descrição de sua escolha:
- Crie os Parâmetros para sua Interface de acordo com a figura abaixo:
- Salve e Ative a sua BAdi.
- De volta a tela principal da transação SE18, em modo de alteração cheque a opção CALL FALLBACK IF NO IMPLEMENTATION IS EXECUTED, insira o nome da classe como ZDA_CLASSE e salve:
- Você será levado ao Class Builder e verá que sua classe herdou os métodos da interface criada logo acima, dê um duplo clique no método e preencha seu código com o método descrito logo abaixo.
- Salve e ative sua classe.
- Na transação SE38 crie um programa chamado Z_PROG_BADI e utilize o código abaixo para testar sua BAdi.
Exemplo:
Neste exemplo criamos uma BAdi e a utilizamos em um programa Abap.
Obs: BAdis não devem ser confundidas com BAPIs, existe um post de exemplo de uma BAPI neste site que possui quase a mesma funcionalidade deste exemplo, e modificando a instrução SELECT deste método podemos deixar as funcionalidades idênticas, entretanto BAdis e BAPIs são utilizadas para propósitos diferentes em um sistema SAP.
Abap
Método da classe – ZDA_CLASSE
method ZDA_BADI_INTERFACE~GET_DADOS. Select * From SFLIGHT INTO TABLE TFLIGHT WHERE carrid EQ carrid AND connid EQ connid AND fldate EQ fldate. endmethod.
Programa – Z_PROG_BADI
*&---------------------------------------------------------------------* *& Report Z_PROG_BADI *& *&---------------------------------------------------------------------* *& Desenvolvimento Aberto *& BAdis - Business Add Ins *&---------------------------------------------------------------------* REPORT Z_PROG_BADI. * Exemplo de entrada de dados na tabela SFLIGHT * airlineid = 'LH' * connectionid = '0401' * flightdate = '07.03.2014' * Cria parametros PARAMETERS: empresa TYPE scarr-carrid, " Airline code conexao TYPE sflight-connid, " Connection number data TYPE sflight-fldate. " Flight date * Declara variaveis DATA: t_flight TYPE STANDARD TABLE OF sflight, dados LIKE LINE OF t_flight, badi_flight TYPE REF TO zda_badi. * Incia seleção START-OF-SELECTION. * Acessa objeto Badi GET BADI badi_flight. * Chama BADI CALL BADI badi_flight->get_dados EXPORTING carrid = empresa connid = conexao fldate = data RECEIVING tflight = t_flight. * Imprime dados LOOP AT t_flight INTO dados. WRITE: / dados-carrid, dados-connid, dados-fldate, dados-price, dados-PLANETYPE, dados-CURRENCY. ENDLOOP.