BAPI são módulos de funções habilitados para RFC. A diferença entre RFC e BAPI são os objetos de negócio. Você cria objetos de negócio e então os registra em seu BOR (Repositório de Objetos de Negócio), os quais podem ser acessados fora do sistema SAP utilizando outras aplicações (Não SAP) como VB ou JAVA. Neste caso, você apenas especifica o objeto de negócio e seu método a partir do sistema externo. Em BAPI não há uma chamada direta ao sistema. Enquanto RFC são chamadas diretas ao sistema. Algumas BAPIs fornecem funções básicas e podem ser utilizadas para a maioria dos tipos de objetos de negócio do SAP. Estas BAPIs devem ser implementadas da mesma maneira para todos os tipos de objetos de negócio. As BAPIs padronizadas são mais fáceis de usar e evitam que os usuários tenham que lidar com uma variedade de BAPIs diferentes. Sempre que possível, deve-se utilizar uma BAPI padronizada em vez de uma BAPI individual.
BAPI
BAPI significa Interface de Programação de Aplicações de Negócio.
Uma BAPI é um módulo de função habilitado para acesso remoto, ou seja, pode ser invocado a partir de programas remotos como programas JAVA independentes, interfaces web, etc. Você pode tornar seu módulo de função habilitado para acesso remoto nos atributos do módulo de função, mas uma BAPI são módulos de função padrão da SAP fornecidos pela SAP para acesso remoto. Também fazem parte do Repositório de Objetos de Negócio (BOR).
Algumas BAPIs fornecem funções básicas e podem ser utilizadas para a maioria dos tipos de objetos de negócio do SAP. Estas BAPIs devem ser implementadas da mesma maneira para todos os tipos de objetos de negócio. As BAPIs padronizadas são mais fáceis de usar e evitam que os usuários tenham que lidar com uma variedade de BAPIs diferentes. Sempre que possível, deve-se utilizar uma BAPI padronizada em vez de uma BAPI individual.
Consulte estes links:
http://searchsap.techtarget.com/ateQuestionNResponse/0,289625,sid21_cid558752_tax293481,00.html
http://www.sap-img.com/abap/interview-question-on-bapi-rfc-abap-objects-tables.htm
http://www.sap-img.com/fu033.htm
http://www.sap-img.com/abap/ale-bapi.htm
Chamada de Função Remota:
RFC é um protocolo de interface da SAP. Baseado em CPI-C, simplifica consideravelmente a programação de processos de comunicação entre sistemas. Os RFCs permitem que você chame e execute funções predefinidas em um sistema remoto, ou mesmo no mesmo sistema. Os RFCs gerenciam o processo de comunicação, a transferência de parâmetros e o tratamento de erros.
Os módulos de função são elementos de modularização na linguagem de programação ABAP. Eles encapsulam alguma função que pode ser reutilizada. Fornecem uma interface ou assinatura através da qual passar dados para e do módulo de função. Um RFC é um módulo de função habilitado para acesso remoto. Tudo que você precisa fazer é ativar a bandeira na aba de atributos do módulo de função e terá um RFC.
Uma BAPI não é mais do que um módulo de função. As BAPIs geralmente contêm a lógica para alguma função de negócio, como "Criar Ordem de Venda" ou "Alterar Ordem de Compra". Novamente, fornecem uma interface para passar dados para e do BAPI. Você nunca verá "Exceções" em uma BAPI, pois são projetadas para serem chamadas de outros sistemas e podem não ser capazes de lidar com exceções. Além disso, nunca verá uma mudança na assinatura de uma BAPI. Se a SAP sentir a necessidade de alterar a assinatura da BAPI, então criará uma nova BAPI.
Exemplo:
BAPI_SALESORDER_CREATEFROMDAT1 e BAPI_SALESORDER_CREATEFROMDAT2. Não mudarão a assinatura, mas criarão uma nova e incorporarão a mudança.
Módulos de Função --> Um fragmento de código reutilizável.
Ex. SD_DATETIME_DIFFERENCE.
BAPI --> Módulos de função usados para um alto tráfego ou para transações de faturamento.
Ex. GL_POSTING_POST.