Olá,
BADI's
-->badi é um termo que se refere aos complementos de negócio.
-->badi significa bussinesaddings e é para melhorias na área de aplicação. Seu principal uso é a reutilização.
-->Quando o cliente precisa de mais funcionalidade do que o Programa Padrão da SAP (Funcionalidade), então podemos adicionar funcionalidades adicionais à funcionalidade padrão da SAP através do Badi.
Badi não pode perturbar o código original (padrão).
Adicionar funcionalidades adicionais à padrão não é mais do que um complemento.
Os Badi não são criados no programa em si.
São criados e mantidos separadamente e são chamados quando precisamos do Badi.
BAPI's
BAPI
Um dos grandes benefícios dos BAPI é que a interface e a função não precisam mudar. Isso é uma grande vantagem durante atualizações ou pacotes de melhoria, porque a transação pode mudar (formato, entradas necessárias, etc.), o que significa que então você precisaria atualizar a chamada da transação.
Alguns dos BAPI estão mais bem documentados e são mais fáceis de usar do que outros.
Geralmente, você precisa executar o BAPI que realmente realiza o COMMIT após chamar o seu BAPI.
A codificação do programa para chamar um BAPI costuma ser mais limpa do que configurar o fluxo de tela, etc., para a transação chamada.
Não precisa se preocupar com circunstâncias especiais de dados que interrompam o fluxo normal de dados das telas e causem erros por causa disso.
Os BAPI provavelmente têm melhor desempenho, pois não realizam o processamento do fluxo de tela.
Em geral, se o BAPI existir para a transação que deseja realizar e puder descobrir como usá-lo, provavelmente será a melhor opção.
Isso é apenas da minha experiência trabalhando com BAPI e Transação de Chamada. Tive alguns sucessos muito bons com BAPIs, mas ocasionalmente encontrei situações em que não conseguia fazer com que o BAPI realizasse a atualização necessária.
O conceito de interface do clássico R/3 é baseado em duas estratégias diferentes: Chamadas de Função Remota (RFC) e troca de dados através de documentos de mensagens IDoc. RFC realiza chamadas diretas e síncronas de um programa no sistema remoto. Se o chamador for um programa externo, ele chamará uma função habilitada para RFC no R/3 e se o programa chamador for o sistema R/3, ele chamará uma função RFC em outro sistema R/3 ou chamará um programa não R/3 através de um proxy de gateway (geralmente rfcexec.exe).
Os BAPI são um subconjunto dos módulos de função habilitados para RFC, especialmente projetados como Interface de Programação de Aplicações (API) para o objeto empresarial da SAP, ou em outras palavras: são módulos de função oficialmente lançados pela SAP para serem chamados de programas externos.
Saudações,
vineela.