Alerta: Post longo!
Este blog é uma continuação do meu blog anterior:
ABAP Daemon - Sessão ABAP com duração ilimitada.
O exemplo a seguir representa um dos possíveis casos de uso do daemon ABAP, com a integração entre tecnologias de interface: AIF (Framework de Interface de Aplicação), IDOC's, RFC Assíncrono, eventos comerciais (fluxo de trabalho) e de classe, programa de relatório, e-mail e ABAP Daemon.
Aviso Legal
:
-
Neste exemplo, nenhum documento real é criado, mas é utilizado um número fictício (supondo um número de documento SAP) para atualizar o banco de dados personalizado/desencadear um IDoc de saída após cada ocorrência de evento.
-
Por favor, verifique se o componente AIFGEN da AIF está disponível e a administração está configurada no sistema. Caso contrário, pode-se utilizar qualquer outra técnica de interface, por exemplo, IDoc, proxy, REST API, etc.
-
O Daemon ABAP utiliza o formato PCP (
Protocolo de Canal de Envio
) (nome e valor) para transferir a mensagem entre as sessões e manter o estado. Para enviar dados de mensagem ao daemon, é utilizado o formato JSON (serializar/deserializar). As tabelas/estruturas internas são convertidas em JSON (string longa) e enviadas ao daemon, onde são novamente convertidas em tabelas/estruturas internas a partir de JSON. Pode-se utilizar qualquer formato de string longa (XML, XSTRING, etc.).
-
Se não receber o e-mail, verifique o código SOST.
-
Para depurar o daemon/AIF, pode-se utilizar um depurador externo ou um loop infinito (processo de trabalho SM50).
Para uma melhor compreensão, implementei um protótipo com base no seguinte cenário comercial.
Cenário comercial: Processo geral de aquisição de ativos: Exemplo
Suponha que o usuário/empresa deseja adquirir algum ativo/item (por exemplo, um laptop/máquina pesada para a fábrica). Então, neste processo, são criados diferentes documentos para concluir a aquisição. Após a criação/posterior de cada documento (ou eventos), desejo que uma tabela personalizada seja atualizada e que um IDOC de saída seja acionado. O passo de atualização da tabela e o envio do IDOC serão tratados por uma instância do daemon. Abaixo, tento explicar como fluirá o processo comercial completo para o meu exemplo.
-
O usuário/empresa faz uma solicitação em algum portal do sistema legado para a aquisição de um ativo e os detalhes da solicitação são enviados para o sistema S/4 HANA (1909) através da tecnologia de interface AIF (Framework de Interface de Aplicação).
-
Ao receber a mensagem AIF, são criados diferentes documentos (por exemplo, Ordem Interna, Mestre de Ativos e Requisição de Compra). O documento criado nesta etapa deve ser atualizado em uma tabela personalizada (para referência) e acionar um IDOC de saída.
-
No próximo passo, é criada uma Ordem de Compra com referência à Requisição de Compra. A Ordem de Compra também deve ser atualizada em uma tabela personalizada e acionar um IDOC de saída.
-
No próximo passo, o fornecedor envia o ativo físico. Isso resulta na recepção de bens no S/4 HANA. Os detalhes da recepção de bens são recebidos através da AIF, resultando na publicação do documento de material. Os documentos de material devem ser atualizados em uma tabela personalizada e acionar um IDOC de saída.
-
Por fim, o fornecedor envia uma fatura através da AIF, resultando na criação da fatura de compra no sistema em S/4 HANA. Os documentos da fatura devem ser atualizados em uma tabela personalizada e um IDOC de saída deve ser enviado.
-
Existem muitos processos adicionais para concluir a aquisição de ativos (por exemplo, capitalização, depreciação, desativação), não nos concentremos em mais processos comerciais subsequentes e criemos um fluxo técnico utilizando o Daemon.
Cada mensagem de entrada/saída ou documento criado/modificado/eliminado pode ser considerado um evento em ABAP.
A implementação completa é baseada no cenário comercial explicado anteriormente.
Design técnico:
Nota: O exemplo implementado e testado a seguir foi realizado no S/4 HANA 1909 (como ABAP 7.54).
Aqui, tentei a integração entre diferentes Objetos/funcionalidades ABAP com ABAP Daemon:
Programa de Relatório
: Este é um programa interativo (baseado em janelas pop-up) responsável por