Hi,
RFC vs BAPI
1) BAPIs são módulos de função habilitados para RFC. A diferença entre RFC e BAPI
são 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) que pode ser acessado
fora do sistema SAP usando 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á chamada direta ao sistema. enquanto RFC são chamadas diretas
ao sistema. Algumas BAPIs fornecem funções básicas e podem ser usadas para a maioria dos tipos de objetos de negócio do SAP.
Essas BAPIs devem ser implementadas da mesma forma 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 diferentes BAPIs. Sempre que possível, deve-se usar uma
BAPI padronizada em vez de uma BAPI individual.
As seguintes BAPIs padronizadas são fornecidas:
Leitura de instâncias de objetos de negócio do SAP
GetList() Com a BAPI GetList, você pode selecionar um intervalo de chaves de objeto
valores, por exemplo, códigos de empresa e números de material.
A BAPI GetList() é um método de classe.
GetDetail() Com a BAPI GetDetail(), os detalhes de uma instância de um
tipo de objeto de negócio do SAP são recuperados e retornados ao programa chamador. A
instância é identificada por sua chave. A BAPI GetDetail() é um método de instância. As BAPIs que podem criar, alterar ou excluir instâncias de um objeto de negócio
As seguintes BAPIs do mesmo tipo de objeto devem ser programadas para que
possam ser chamadas várias vezes dentro de uma transação. Por exemplo, se,
após criar a ordem de venda 1, uma segunda ordem de venda 2 é criada em
a mesma transação, a segunda chamada da BAPI não deve afetar a consistência
da ordem de venda 2. Após concluir a transação com um COMMIT WORK,
ambas as ordens são salvas de forma consistente no banco de dados.
Create() e CreateFromData!()
As BAPIs Create() e CreateFromData() criam uma instância de um
tipo de objeto de negócio do SAP, por exemplo, uma ordem de compra. Essas BAPIs são métodos de classe.
Change()
A BAPI Change() altera uma instância existente de um objeto de negócio do SAP
por exemplo, uma ordem de compra. A BAPI Change() é um método de instância.
Delete() e Undelete() A BAPI Delete() exclui uma instância de um
tipo de objeto de negócio do SAP do banco de dados ou define uma flag de exclusão.
A BAPI Undelete() remove uma flag de exclusão. Essas BAPIs são métodos de instância.
Cancel() Ao contrário da BAPI Delete(), a BAPI Cancel() cancela uma instância
de um tipo de objeto de negócio. A instância a ser cancelada permanece no
banco de dados e uma instância adicional é criada para
ser cancelada de fato. A BAPI Cancel() é um método de instância.
Add() e Remove() A BAPI Add() adiciona um
subobjeto a uma instância existente de objeto e a BAPI Remove() remove um subobjeto de uma instância de objeto. Essas BAPIs
são métodos de instância.
2) Não é possível conectar o SAP a sistemas Não-SAP para recuperar dados
usando apenas RFC. RFC pode acessar o SAP de fora apenas através de BAPI e
o mesmo vale para o acesso vice-versa.
3) Cada Objeto BAPI tem Interface, Campos Chave, Atributos, Métodos e
Eventos.
Os Módulos de Função BAPI podem estar associados a esses Objetos BAPI. O módulo de função
tem uma funcionalidade única enquanto um objeto BAPI pode conter muitas
funcionalidades
rfc vs módulo de função
Módulo de Função: Em um módulo de função, a passagem de dados é por
chamada por referência, em particular, o parâmetro de tabela deve
ser por chamada por referência passando memória.
RFC