No SAP, você pode chamar funções em outros aplicativos ou sistemas SAP que estão registrados com o SAP como servidores Remote Function Call (RFC). No WebSphere Message Broker, é possível registrar o adaptador SAP com o SAP como um servidor RFC para que ele aceite chamadas síncronas e assíncronas do SAP.
No SAP, uma interface BAPI é uma chamada de função. Se um sistema estiver conectado ao SAP como um servidor RFC, é possível usar a interface BAPI para definir a interface na qual um programa em execução no SAP pode chamar um sistema externo. O sistema externo é identificado no SAP por seu valor RFCDestination, que está ligado a um ID de programa na administração do SAP. O ID de programa é especificado pelo sistema externo quando ele se conecta pela primeira vez ao SAP.
Usando o WebSphere Adapter para SAP, um fluxo de mensagens pode se conectar ao SAP como um Servidor RFC configurando o adaptador com o ID do programa relevante e implementando o fluxo de mensagens no broker. Após a implementação, o fluxo de mensagens pode receber chamadas de função síncronas usando a interface BAPI.
Os parâmetros de importação BAPI são recebidos pelo adaptador e propagados a partir de um nó SAPInput como uma estrutura em árvore de mensagens. Os parâmetros de exportação BAPI são propagados para um nó SAPReply como uma estrutura de árvore de mensagens. Depois, o adaptador envia de volta os parâmetros de exportação para o programa SAP de chamada. Neste caso, o nó SAPReply está geralmente no mesmo fluxo que o nó SAPInput. O nó SAPInput fornece um ID exclusivo (o identificador de resposta) para cada chamada BAPI. O identificador de resposta é propagado para o nó SAPReply (no ambiente local) para indicar à qual chamada BAPI ele está respondendo.
Se não existir nenhum identificador de resposta no ambiente local, o nó SAPReply usará automaticamente o identificador de resposta do nó SAPInput que acionou a execução atual do fluxo de mensagens. Se o fluxo for acionado por algo que não seja um nó SAPInput, ou se ocorrer uma quebra no fluxo, um erro será emitido. Uma exceção não-manipulada no fluxo de mensagens causa uma falha do sistema no SAP.
Mesmo se a BAPI não esperar nenhum parâmetro de saída, a mensagem (vazia) deverá ser propagada para o nó SAPReply.
É possível processar dois callouts simultâneos a partir do SAP, configurando o fluxo de mensagens com uma instância adicional.
Cenário 1
O diagrama a seguir representa um fluxo de mensagens no qual o WebSphere Message Broker fornece um link entre o SAP e um aplicativo de destino (neste caso, o DB2®). O programa SAP requer dados de resposta, portanto, ele bloqueia processamento adicional até que a chamada seja completada.
Cenário 2
O diagrama a seguir também representa um fluxo de mensagens no qual o programa SAP requer dados de resposta, mas neste cenário, as chamadas entre o WebSphere Message Broker e o aplicativo de destino (neste caso, o WebSphere MQ) são assíncronas. O sistema SAP bloqueia processamento adicional até que a chamada seja completada. Se o valor da propriedade de SAP Máximo de tempo de espera de cliente for insuficiente ou se for configurado para 0, um erro de tempo limite pode ser gerado. Para obter mais informações sobre a propriedade Máximo de tempo de espera de cliente do Nó de Entrada de SAP, consulte Máximo de tempo de espera de cliente (s). Ao usar o nó SAPReply em um fluxo diferente do nó SAPInput, implemente o nó SAPReply no mesmo grupo de execução que o nó SAPInput.
Cenário 3
O diagrama a seguir representa uma chamada assíncrona do SAP para o WebSphere Message Broker, e uma chamada assíncrona do WebSphere Message Broker para um aplicativo de destino. Este cenário mostra como você pode combinar o processamento de entrada que é descrito neste tópico com o processamento de saída para obter o mesmo resultado que os cenários 1 e 2. Para obter informações adicionais sobre o processamento de saída, consulte Processamento de Saída para a Interface BAPI.