Um pacote de IDocs dividido contém vários IDocs, com cada IDoc correspondendo
a um único objeto de negócios.
O adaptador processa um evento de entrada para um pacote de IDocs que contém
vários IDocs individuais de acordo com os seguintes procedimentos:
- Quando o sistema SAP envia o ID de transação para o adaptador, o adaptador verifica
o status do evento e executa uma das seguintes ações:
- Se este for um novo evento, o adaptador armazenará um EVNTID (que corresponde
ao ID de transação) junto com um status de 0 (Criado)
na tabela de recuperação de eventos.
- Se o status do evento for -1 (Recuperar), o adaptador atualizará
o status para 0 (Criado).
- Se o status do evento for 1 (Executado), o adaptador retornará
uma indicação de êxito ao sistema SAP.
- O sistema SAP envia o pacote de IDocs para o adaptador, que o analisa e converte
o IDoc em vários objetos de negócios e os armazena na memória.
- O adaptador atualiza a coluna BQTOTAL (ou campo da tabela) na tabela de recuperação de eventos para o número de IDocs no pacote. Este número é utilizado para fins de auditoria e recuperação.
- Se o adaptador encontrar um erro durante o processamento do pacote de IDocs, ele poderá
comportar-se de uma de duas maneiras, dependendo da propriedade de configuração IgnoreIDocPacketErrors.
- Se a propriedade IgnoreIDocPacketErrors estiver configurada como false,
o adaptador parará o processamento de IDocs adicionais no pacote e relatará
erros para o sistema SAP.
- Se a propriedade IgnoreIDocPacketErrors estiver configurada como true,
o adaptador registrará um erro e continuará o processamento do restante dos IDocs
no pacote. O status da transação é marcado como 3 (InProgress).
Neste caso, o log do adaptador mostra os números de IDoc que falharam e será necessário
reenviar esses IDocs individuais separadamente. Também é necessário manter
manualmente estes registros na tabela de recuperação de eventos.
- O sistema SAP envia uma chamada COMMIT para o adaptador.
- O adaptador envia os objetos de negócios para o terminal de mensagens, um após o outro
e atualiza a propriedade BQPROC para o número de seqüência do IDoc
no qual ele está trabalhando. O adaptador oferece os objetos para o terminal apropriado como parte de uma única transação XA (uma transação two-phase commit) controlada pelo servidor de aplicativos.
- Quando o terminal receber o evento e a transação for confirmada, o adaptador
aumentará o número na propriedade BQPROC.
Nota: O terminal da mensagem deve ser configurado para suportar as transações XA.
- Quando o adaptador entregar todos os objetos de negócios do pacote de IDocs
no terminal de mensagens, ele atualizará o status do evento para 1 (Executado).
- No caso de interrupções abruptas durante o processamento de pacotes de IDocs, o adaptador continua o processamento de IDocs a partir do número de seqüência atual. O adaptador
continuará atualizando a propriedade BQPROC, mesmo que IgnoreIDocPacketErrors seja
configurado como true. O adaptador continuará o processamento, caso você o termine manualmente enquanto ele estiver processando um pacote de IDocs.
- Se ocorrer uma exceção durante o processamento do evento pelo adaptador ou se o
terminal gerar uma exceção, o status do evento será atualizado para -1 (Recuperar).
- Se não ocorrer nenhuma exceção, o adaptador desempenhará as seguintes tarefas:
- Ele enviará uma chamada COMMIT para o adaptador e o evento será atualizado para 1 (Executado).
- Ele enviará uma chamada CONFIRM para o adaptador.
O adaptador então excluirá os registros com um status 1 (Executado)
e registrará um evento CEI (Common Event Infrastructure) que pode ser utilizado
para fins de rastreio e auditoria.