Guia de execução do SAP BAPI para o Jitterbit App Builder
Visão geral
Este guia descreve o processo de execução de módulos de função SAP BAPI do 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.
Requisitos do App Builder
Um pacote de software App Builder incluindo os componentes SAP adicionais deve ser instalado na sua instância para conectar-se ao SAP e executar BAPIs. O nome do arquivo zip do App Builder incluirá ThirdPartySAP no final da versão (ou seja, App Builder-3.3.21255ThirdPartySAP.zip). Este pacote tem DLLs SAP (Dynamic Link Libraries) na pasta App Builder/Bin que são necessárias para conectar-se ao SAP a partir do App Builder.
Fonte de dados SAP no App Builder
Uma fonte de dados SAP na sua instância do App Builder 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 no App Builder
O 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, o App Builder depende da definição de colunas específicas que vinculam todas as tabelas de preparação durante a execução.
Essas colunas específicas do App Builder são prefixadas com '_' e não são enviadas para o SAP, pois seu propósito é unicamente preparar a execução do 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 o App Builder a executar o BAPI.
BAPIs podem ter parâmetros de importação (dados a serem transferidos do App Builder para o SAP) e parâmetros de exportação (dados a serem transferidos do SAP de volta para o 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á um /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) -
Após as colunas específicas do App Builder serem 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
No 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 (ou seja, 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 do App Builder. O componente pai da 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.