Guia de Execução do SAP BAPI
Visão Geral
Este guia descreve o processo de execução dos módulos de função SAP BAPI de App Builder. O que é BAPI?
A tecnologia BAPI (Business Application Programming Interface) é a principal tecnologia de API disponível aos clientes para ler e atualizar dados, que podem ser chamados de dentro do SAP ou externamente usando o protocolo RFC e a tecnologia ALE/IDoc (https://wiki.scn.sap.com/wiki/display/ABAP/BAPI?original_fqdn=wiki.sdn.sap.com&BAPI-Introduction).
Os BAPIs são definidos no SAP Business Object Repository (BOR) como métodos de tipos de objetos de negócios SAP que executam funções comerciais específicas. Eles são implementados como módulos de função habilitada para RFC (Remote Function Call) e são criados no Function Builder do ABAP Workbench.
App Builder requisitos
Um App Builder pacote de software incluindo os componentes SAP adicionais deve ser instalado em sua instância para conectar-se com o SAP e executar BAPIs. O App Builder o nome do arquivo zip incluirá ThirdPartySAP no final da versão (por exemplo, App Builder-3.3.21255ThirdPartySAP.zip). Este pacote possui DLLs SAP (Dynamic Link Libraries) no App Builder/Pasta Bin que são necessárias para conectar ao SAP a partir de App Builder.
Fonte de Dados SAP em App Builder
Uma fonte de dados SAP em seu App Builder a instância vinculada à fonte de dados de onde você deseja chamar o BAPI é assumida. Se você não configurou uma fonte de dados SAP, consulte esta documentação e configure uma!
BAPIs em App Builder
App Builder utiliza a compilação de tabelas de preparação locais para passar dados para o SAP por meio da execução BAPI. Cada componente da função BAPI é representado por uma tabela de preparação e colunas que contêm valores para os dados correspondentes que o módulo está esperando. Além das colunas de parâmetros BAPI, App Builder depende da definição de colunas específicas que vinculam todas as tabelas de preparação durante a execução.
Estas App Builder colunas específicas são prefixadas com '_' e não são enviadas ao SAP, pois sua finalidade é apenas preparar a execução de App Builder. Quando os dados são preparados e estão prontos para execução do BAPI, uma ação específica (que será esclarecida abaixo) é chamada e executa o BAPI com o _id
coluna determinando qual conjunto de registros será passado.
Nota
Os logs do banco de dados do App Server publicarão cada uma das conexões e execuções do SAP, juntamente com dados de parâmetros específicos do BAPI.
Criando Tabelas BAPI de Preparação Local
As tabelas de preparação podem ser criadas manualmente ou importando a estrutura BAPI por meio da funcionalidade Importar padrão na fonte de dados SAP
Se você decidir criar as tabelas de preparação manualmente, você deve ter um entendimento adequado da estrutura e dos parâmetros que o BAPI que você deseja executar tem. A estrutura é crucial para habilitar App Builder para executar o BAPI.
BAPIs podem ter parâmetros de importação (dados a serem transferidos de App Builder para SAP) e parâmetros de exportação (dados a serem transferidos do SAP de volta para App Builder). BAPIs podem ter uma estrutura pai/filho onde o componente pai contém o nível mais alto de dados e o(s) componente(s) filho(s) contém(êm) um nível mais baixo de dados. A maioria dos BAPIs também terá uma /RETURN
componente filho que exporta quaisquer mensagens (de sucesso ou de erro) que fornecerão confirmação ou ajudarão o usuário a diagnosticar e resolver problemas.
Uma tabela de preparação para os componentes pai e filho é criada na sua fonte de dados local, onde o nome da tabela filho é prefixado com o nome da tabela pai (ou seja, tabela de preparação pai chamada BAPI_PO_CREATE1
, tabela de preparação infantil chamada BAPI_PO_CREATE1/POHEADER
).
Para criação de colunas na tabela de preparação:
-
Crie
_id
coluna e defina-a como tipo de dados UUID. Marque como PK e AutoGenerate. -
Se a tabela de preparação for um componente filho, crie em seguida
_ParentId
coluna e defina-a como UUID. Defina o relacionamento muitos para um com a tabela pai onde a coluna primária_Id
links para coluna secundária_ParentId
. -
Em seguida, se a ordem de execução dos registros for crítica, adicione a coluna
_index
onde um valor de indexação pode ser mantido e referenciado durante a execução. -
Em seguida, adicione quaisquer colunas FK locais ou informações úteis de auditoria, prefixadas com
_
, que ajudará a referenciar os registros em seu modelo de dados aos registros da tabela BAPI. (por exemplo,_POHeaderID
nos permitirá consultar dados preparados pelo BAPI com base em um registro PO local,_ExecutedOn
para rastrear o histórico) -
Depois App Builder colunas específicas são adicionadas, crie todas as colunas relacionadas ao BAPI refletindo os parâmetros de importação e exportação na função (por exemplo, PURCHASEORDER, PO_ITEM, DELIVERY_DATE, QUANTITY, etc.)
Executando BAPI
Para invocar a compilação de dados de tabela de preparação e execução do BAPI sobre RFC, você utilizará uma ação em um evento de objeto/tabela de negócios.
Há uma Ação do Tipo RFC e quatro opções:
-
BAPI_OBJCL_CHANGE
-
BAPI_OBJCL_CREATE
-
BAPI_OBJCL_DELETE
-
BAPI_TRANSACTION_COMMIT
Em App Builder versão 2.6 e anteriores, a Ação usada é do tipo Plugin e chamada Execute BAPI e adicionada ao evento Insert de uma tabela de gatilhos recém-criada.
A tabela de gatilhos pode ter qualquer nome (por exemplo, BAPITrigger
), mas o plugin requer que colunas específicas sejam definidas para referência durante a execução. Essas colunas são:
-
BAPITriggerID é um newUUID().
-
SourceDataSourceID é o DataSourceID da fonte de dados local onde as tabelas de preparação estão localizadas.
-
TargetDatasSourceID é o DatasourceID da fonte de dados SAP onde o BAPI será executado.
-
FunctionModule são os nomes dos módulos de função BAPI que você deseja acionar, separados por vírgulas. (BAPI_TRANSACTION_COMMIT é listado como o último módulo, pois ele confirma as ações BAPI anteriores.)
-
_Id é o FK para a tabela de preparação BAPI e determina qual conjunto de registros será passado para execução
Exemplos de Módulos de Função BAPI
Abaixo estão algumas das muitas BAPIs que podem ser executadas a partir de App Builder. O componente pai do BAPI é listado por número e cada um dos componentes filhos é listado abaixo dele.
-
BAPI_PO_CREATE1
: Usado para criar um novo PO/POHEADER, /POHEADERX, /POITEM, /POITEMX, /POSCHEDULE, /POSCHEDULEX, /POCOND, /POCONDX, /POEXPIMPITEM, /POEXPIMPITEMX, /POTEXTHEADER, /EXTENSIONIN
-
BAPI_PO_CHANGE
: Usado para atualizar valores em um PO existente./POHEADER, /POHEADERX, /POITEM, /POITEMX, /POSCHEDULE, /POSCHEDULEX, /POCOND, /POCONDX, /POEXPIMPITEM, /POEXPIMPITEMX, /POTEXTHEADER, /EXTENSIONIN, /POPARTNER
-
BAPI_PO_RELEASE
: Usado para liberar um PO após manipulá-lo. -
BAPI_PO_GETDETAIL
: Usado para recuperar as Notas de Cabeçalho e valores de Texto no PO._PO_GETDETAIL/RETURN, PO_HEADER_TEXTS
-
BAPI_SALESORDER_CREATEFROMDAT2
: Usado para criar Pedidos de Vendas/ORDER_HEADER_IN, /ORDER_PARTNERS, /ORDER_ITEMS_IN, /ORDER_SCHEDULES_IN, /RETURN
-
BAPI_CONTRACT_CREATEFROMDATA
: Usado para criar Contratos/CONTRACT_HEADER_IN, /CONTRACT_PARTNERS, /CONTRACT_PARTNERS, /CONTRACT_ITEMS_IN
-
BAPI_EXCHANGERATE_GETDETAIL
: Usado para recuperar taxas de câmbio. -
Z_ADAPT_DATA_EXTRACT
: Uma função personalizada usada para extrair informações do plano de investimento.