Quando o adaptador SAP é usado com a interface BAPI, você deve considerar determinados fatores ao projetar fluxos transacionais.
É possível configurar fluxos de mensagens para estarem transacionais para que atualizações nos recursos tais como bancos de dados possam ser coordenadas; as alterações são confirmadas ou retrocedidas junto com a mesma transação. Esta coordenação transacional pode ser estendida para atualizações do sistema externas, tais como bancos de dados SAP, quando você usa a interface BAPI com nós SAPRequest.
O adaptador SAP pode controlar se ele aguarda o SAP confirmar as atualizações sincronamente ou se emite uma confirmação e retorna enquanto a confirmação do SAP ocorre assincronamente. É possível determinar este comportamento usando o parâmetro Use o parâmetro wait antes de chamar a confirmação de BAPI na área de janela Configurar Objetos do assistente de Conexão do Adaptador. O adaptador depende a configuração de transacionalidade do fluxo de mensagens para determinar se deve emitir a chamada de confirmação.
Em releases anteriores do SAP, alguns BAPIs eram codificados com uma confirmação. A partir do SAP Release 4.0A em diante, é mais efetivo para BAPIs emitir uma BAPI_TRANSACTION_COMMIT separada para forçar a atualização, em vez de fazer o trabalho de confirmação. Usando este método, as chamadas de BAPI podem ser feitas antes do trabalho ser confirmado como uma unidade de trabalho em lote. Para descobrir se um BAPI está codificado com uma confirmação, consulte a documentação para o BAPI.
Quando a propriedade Modo de Transação no nó SAPRequest é configurada como Sim, o adaptador é instruído para emitir a confirmação de SAP na conclusão do fluxo de mensagens na linha com outras confirmações do banco de dados. É possível configurar o parâmetro Use o parâmetro wait antes de chamar a confirmação de BAPI no assistente de Conexão do Adaptador que determina se a confirmação é síncrona ou assíncrona.
Se a propriedade Modo de Transação no nó SAPRequest estiver configurada como Não, o adaptador não emitirá uma confirmação de SAP e o parâmetro que você configurou no assistente de Conexão do Adaptador não terá relevância. Entretanto, a confirmação ainda pode ser emitida como parte de um verbo COMMIT da unidade de trabalho BAPI (ao qual a propriedade no assistente se aplica) ou uma chamada para BAPI_TRANSACTION_COMMIT (à qual a propriedade no assistente não se aplica).
Se os BAPIs forem codificados com confirmações e você configurar Modo de Transação como Sim, o BAPI será chamado como parte da mesma transação que as de outros nós SAPRequest no mesmo fluxo e usando o mesmo adaptador. Portanto, quaisquer BAPIs que foram chamados anteriormente neste fluxo de mensagens serão confirmados.
Se você configurar Modo de Transação como Não, o BAPI não será confirmado agora ou no final do fluxo de mensagens; ele não tem garantia de sempre ser confirmado.