Instalar e configurar o Business Eventing Toolkit para SAP

Este documento descreve como instalar e configurar o Business Eventing Toolkit para SAP.

Instalar o Business Eventing Toolkit para SAP

Quando você instala a versão mais recente do SDK do ABAP para Google Cloud no local ou em qualquer edição na nuvem, o Business Eventing Toolkit para SAP é instalado. Para informações sobre as etapas de instalação, consulte Instalar e configurar a edição local ou de qualquer nuvem do SDK do ABAP para Google Cloud.

Se você estiver usando a versão 1.9 ou anterior do ABAP SDK for Google Cloud no local ou em qualquer edição na nuvem, atualize o SDK para a versão mais recente e receba o Business Eventing Toolkit para SAP. Para mais informações, consulte Atualizar o SDK do ABAP para Google Cloud.

Ativar as APIs Google Cloud de destino

Antes de usar os serviços de Google Cloud alvo, verifique se as APIs Google Cloud correspondentes estão ativadas no projeto. Por exemplo, se você planeja publicar eventos no Pub/Sub, ative a API Pub/Sub.

Para informações sobre como ativar Google Cloud APIs, consulte Como ativar APIs.

Configurar a autenticação

Depois de configurar a autenticação para acessar as APIs Google Cloud na edição local ou na nuvem do SDK do ABAP para Google Cloud, o Business Eventing Toolkit para SAP usa o mesmo método de autenticação para publicar eventos da SAP nas APIs Google Cloud . Para saber como configurar a autenticação no local ou em qualquer edição na nuvem do SDK do ABAP para Google Cloud, consulte Visão geral da autenticação.

Verifique se a conta de serviço configurada no SDK ABAP para a configuração da chave de cliente do Google Cloud tem os papéis do IAM necessários específicos para o serviçoGoogle Cloud de destino.

Anote a chave do cliente que você criou como parte da configuração de autenticação. Use essa chave do cliente ao configurar o Business Eventing Toolkit para SAP no seu sistema SAP.

Configurar atributos do CloudEvent

Você pode manter os valores padrão dos atributos do CloudEvent. Esses valores são armazenados na tabela /GOOG/CE_DEFAULT.

Essa é uma configuração opcional. É possível transmitir atributos do CloudEvent ou substituir os atributos padrão diretamente no código.

Para configurar os atributos do CloudEvent, faça o seguinte:

  1. Na GUI do SAP, execute o código de transação /GOOG/SDK_IMG.

    Como alternativa, execute o código da transação SPRO e clique em IMG de referência do SAP.

  2. Clique em ABAP SDK for Google Cloud > Configurações básicas > Eventos de negócios: configurar atributos de contexto para eventos da Cloud.

  3. Clique em Novas entradas.

  4. Insira valores nos campos a seguir:

    Campo Tipo de dado Descrição
    Chave de atributo padrão do evento do Cloud String Especifique um nome para a configuração de atributo padrão do CloudEvent. Por exemplo: CLOUD_EVENT_ATTRIBUTE_KEY.
    Origem String Forneça a referência do URI que identifica o contexto em que um evento ocorreu.
    ID String Identificador exclusivo do evento. Os produtores precisam garantir que a fonte + o ID sejam exclusivos para cada evento distinto.
    Versão da especificação String A versão da especificação do CloudEvents usada pelo evento. Se você deixar esse campo em branco, o sistema vai usar 1.0.
    Tipo String Descreve o tipo de evento que ocorreu. Geralmente usado para roteamento, observabilidade e aplicação de políticas.
    Tipo de conteúdo de dados String Content-type do valor de dados. Permite que os dados transportem qualquer tipo de conteúdo.
    Esquema de dados String URI que identifica o esquema a que os dados aderem.
    Assunto String Descreve o tema do evento no contexto do produtor.

    Para informações sobre esses campos, consulte os atributos de contexto do CloudEvents.

  5. Salve a nova entrada.

Configurar serviços Google Cloud de destino

Use essa configuração para manter os serviços Google Cloud de destino dos seus eventos.

Essa configuração é usada ao publicar eventos da SAP para serviços Google Cloud usando o Business Eventing Toolkit para SAP.

Para configurar os serviços Google Cloud de destino, faça o seguinte:

  1. Na GUI do SAP, execute o código de transação /GOOG/SDK_IMG.

    Como alternativa, execute o código da transação SPRO e clique em IMG de referência do SAP.

  2. Clique em ABAP SDK for Google Cloud > Configurações básicas > Eventos de negócios: configurar destinos do Google Cloud para um evento.

  3. Clique em Novas entradas.

  4. Insira valores nos campos a seguir:

    Campo Tipo de dado Descrição
    Chave de evento String Especifique um nome para a configuração do evento do editor. Por exemplo, EVENT_KEY.
    Classe de processador de eventos String

    Especifique a classe do processador para o evento. Selecione uma das seguintes opções, dependendo do serviço Google Cloud de destino:

    • /GOOG/CL_PUBLISHER_PUBSUB: para publicar eventos no Pub/Sub.
    • /GOOG/CL_PUBLISHER_CLOUDFUNC: para publicar eventos em funções do Cloud Run.
    • /GOOG/CL_PUBLISHER_FCM: para publicar eventos no Firebase Cloud Messaging (FCM).
    • /GOOG/CL_PUBLISHER_CONNECTORS: para publicar eventos na API Integration Connectors.
    Nome da chave do Google Cloud String A chave de cliente configurada para autenticação no Google Cloud durante a configuração de autenticação.
    Parâmetro de evento 1 String Especifique qualquer atributo adicional necessário para o serviço Google Cloud de destino que você quer usar.
    Parâmetro de evento 2 String Especifique qualquer atributo adicional necessário para o serviço Google Cloud de destino que você quer usar.
    Parâmetro de evento 3 String Especifique qualquer atributo adicional necessário para o serviço Google Cloud de destino que você quer usar.
    Chave de atributo padrão do Cloud Event String Para enviar o evento como um CloudEvent, forneça o valor da chave de atributo padrão correspondente que você configurou na seção Configurar atributos do CloudEvent.
    Evento do Cloud: codificação String

    Selecione um modo adequado para codificar seus CloudEvents:

    • Estruturado: os atributos do CloudEvent são transmitidos no corpo da solicitação.
    • Binário: os atributos do CloudEvent são transmitidos para o cabeçalho da solicitação.

    Para cenários em que você precisa enviar dados de eventos brutos diretamente para serviços Google Cloud , ignorando a especificação do CloudEvents, deixe esse campo em branco.

  5. Salve a nova entrada.

Estender o módulo do editor

Para integrar com outros serviços Google Cloud ou destinos personalizados além dos destinos pré-criados, é possível estender o módulo do editor criando suas próprias implementações.

Para criar uma implementação personalizada, faça o seguinte:

  1. Na transação SE24 do SAP, crie uma nova classe herdada de /GOOG/CL_PUBLISHER_BASE.
  2. Implemente os métodos PUBLISH_EVENT e VALIDATE_PARAMS.

    • PUBLISH_EVENT: contém sua lógica personalizada para enviar dados de evento para o destino. Mapeie os parâmetros de entrada, transmita os dados e preencha a estrutura de saída com a resposta do destino.
    • VALIDATE_PARAMS: permite verificar se todos os parâmetros necessários estão configurados na tabela /GOOG/CE_ROUTER. Se algum valor obrigatório estiver ausente, gerará uma exceção do tipo /GOOG/CX_SDK.

Quando o código ABAP é executado, a classe Publisher lê as configurações dessa tabela para orientar o processo de publicação de eventos.

Configurar o listener para eventos de negócios

Para capturar os eventos acionados devido a mudanças nos objetos de negócios, é necessário configurar um listener de eventos de negócios para cada objeto de negócios.

Para configurar um listener de eventos de negócios, faça o seguinte:

  1. Na GUI do SAP, execute o código de transação SWETYPV.

  2. Clique em Novas entradas.

  3. Especifique uma categoria e um tipo de objeto de negócios adequados.

  4. Especifique um evento para o qual você quer ouvir e encaminhar usando o Business Eventing Toolkit para SAP.

  5. No campo Tipo de receptor, insira Google_Cloud ou Google.

  6. Na seção Configuração de vinculação (receptor), forneça as seguintes informações:

    • Ligação do receptor: selecione Método na lista suspensa.
    • Nome da turma: insira /GOOG/CL_BO_EVENT_FORWARD.
  7. Marque a caixa de seleção Linkage Activated.

  8. Salve a configuração.

Mapear um listener de eventos para uma chave de evento

Para mapear um listener de eventos a uma chave de evento, faça o seguinte:

  1. Na GUI do SAP, execute o código de transação /GOOG/SDK_IMG.

    Como alternativa, execute o código da transação SPRO e clique em IMG de referência do SAP.

  2. Clique em ABAP SDK for Google Cloud > Configurações básicas > Eventos de negócios: configurar listeners de eventos para objetos de negócios.

  3. Clique em Novas entradas.

  4. Insira valores nos campos a seguir:

    Campo Tipo de dado Descrição
    Tipo de objeto CHAR O nome do objeto de negócios que você configurou na transação SWETYPV.
    Evento CHAR O nome do evento vinculado ao objeto de negócios.
    Nome do destinatário CHAR O nome do receptor configurado na transação SWETYPV em relação à combinação de tipo de objeto e evento.
    Chave de evento CHAR O nome da configuração do evento do editor mantido na seção Configurar serviços Google Cloud alvo.
    Classe de processador CHAR

    Opcional. O nome da classe do processador em que você escreveu qualquer lógica adicional para preencher o corpo do evento ou estender os atributos de extensão Essa classe precisa implementar a interface /GOOG/IF_BOR_EVNT_DATA_HANDLER.

    Para saber como criar uma classe de processador, consulte Estender a classe de processador.

  5. Salve a configuração.

Atributos padrão do corpo e da extensão de evento da nuvem

Por padrão, o listener de eventos transmite os seguintes atributos, que fazem parte do contêiner de eventos para o destino, conforme determinado com base na chave de evento:

{
  "EVENT_OBJECT": "BUS2012",
  "EVENT_OBJECT_KEY": "450000011",
  "EVENT_NAME": "CHANGED",
  "EVENT_CREATOR": "USER-ID",
  "EVENT_CREATION_DATE": "20250321",
  "EVENT_CREATION_TIME": "135050",
  "EVENT_CREATION_TIMESTAMP": "20250321135050",
  "EVENT_CREATION_LANGUAGE": "EN"
}

Se os atributos de eventos da nuvem estiverem configurados, a estrutura do payload será a seguinte:

{
  "eventObjectType": "BUS2012", - Picked from Event Container
  "eventObjectKey": "450000011", - Picked from Event Container
  "eventName": "RELEASED", - Picked from Event Container
  "eventCreator": "USER", - Picked from Event Container
  "eventCreationDate": "20250321", -Picked from Event Container
  "eventCreationTime": "135850", - Picked from Event Container
  "eventCreationTimestamp": "20250321135850", - Picked from Event Container
  "id": "D5D1CB352A321FD081FFF6EEA9566190", - Auto Populated
  "source": "sap-s4hana-doc",  - Picked from CE Defaults
  "type": "pochanged", - Picked from CE Defaults
  "specversion": "1.0", - Picked from CE Defaults
  "time": "2025-04-09T16:16:38Z", - Auto Populated
  "subject": "test-subject-A" - Picked from CE Defaults Table
}

Se você criar e configurar uma classe de processador no ouvinte de eventos, o payload resultante vai refletir sua estrutura de payload personalizada.

Estender a classe de processador

O Business Eventing Toolkit permite definir os dados e adicionar outros atributos de extensão aos eventos da nuvem. Para fazer isso, implemente uma classe que herda a interface /GOOG/IF_BOR_EVNT_DATA_HANDLER e implemente o método de interface FILL_EVENT_DATA. Esse método tem os seguintes parâmetros de importação e alteração:

Nome Tipo Tipo associado Descrição
SENDER Importando SIBFLPORB Referência de objeto persistente local: compatível com BOR
EVENT Importando SIBFEVENT Evento
EVENT_CONTAINER Importando Tipo de referência para IF_SWF_IFS_PARAMETER_CONTAINER Contêiner para transferência de parâmetros
RECTYPE Importando SWFERECTYP Nome do tipo de receptor
HANDLER Importando SIBFLPORB Referência de objeto persistente local: compatível com BOR
CT_DATA Alterando /GOOG/CL_PUBLISHER_BASE=>TT_MESSAGES Tabela de mensagens
CT_CE_EXTN_ATTRIBUTES Alterando /GOOG/T_CE_ATTR_VALUE Evento do Cloud: tabela de pares de nome e valor do atributo

Exemplo de implementação para o objeto de negócios BUS2012 (ordem de compra) para incluir informações do cabeçalho da ordem de compra como corpo do evento da nuvem:

 TYPES: BEGIN OF ty_event_attributes,
             ekgrp TYPE ekgrp,
             werks TYPE werks_d,
             stlnr TYPE stnum,
             stlal TYPE mast-stlal,
             stlty TYPE stko-stlty,
           END OF ty_event_attributes.
    DATA: ls_po_header TYPE bapimepoheader.

    DATA: ls_event_attributes TYPE ty_event_attributes,
          lv_json             TYPE string.

    DATA ls_data TYPE /goog/cl_publisher_base=>ty_message.

    CALL FUNCTION 'BAPI_PO_GETDETAIL1'
      EXPORTING
        purchaseorder = '4500000007'
      IMPORTING
        poheader      = ls_po_header.

    /ui2/cl_json=>serialize(
      EXPORTING
        data   = ls_po_header
      RECEIVING
        r_json = lv_json
    ).

    ls_data-data = lv_json.
    APPEND ls_data TO ct_data.

Configurar o listener para eventos RAP

Para cada evento RAP que você quer enviar para Google Cloud, é necessário criar uma classe de manipulador de eventos. Essa classe de manipulador de eventos atua como um listener de eventos para esse evento RAP.

Para criar uma classe de manipulador de eventos de forma programática, use o recurso da comunidade disponível no GitHub. Você precisa fornecer os detalhes da entidade RAP e gerar as classes de manipulador de eventos. Para informações sobre objetos de evento, consulte a documentação do Hub de Aceleração de Negócios da SAP.

Para criar manualmente uma classe de manipulador de eventos, faça o seguinte:

  1. Crie uma classe ABAP para eventos RAP:

    1. Clique com o botão direito do mouse no pacote ABAP e selecione New > ABAP Class.
    2. Digite os seguintes detalhes da sua classe ABAP:

      • Nome: um nome para sua classe, por exemplo, ZCL_PRODUCT_EXT.
      • Descrição: uma descrição da sua turma, por exemplo, Event handler for RAP events.
    3. Clique em Concluir.

  2. Atualize a definição da classe da seguinte maneira:

      class CLASS_NAME definition
      public
      abstract
      final
      for events of RAP_ENTITY_NAME .
    
        public section.
        protected section.
        private section.
        ENDCLASS.
    
    CLASS CLASS_NAME IMPLEMENTATION.
    ENDCLASS.
    

    Substitua:

    • CLASS_NAME: nome da classe, por exemplo, ZCL_PRODUCT_EXT.
    • RAP_ENTITY_NAME: nome da entidade RAP, por exemplo, R_PRODUCT.
  3. Abra a guia Tipos locais e crie uma implementação local:

    CLASS lcl_event_extension DEFINITION INHERITING FROM cl_abap_behavior_event_handler.
    
    PRIVATE SECTION.
      METHODS on_EVENT_NAME FOR ENTITY EVENT
         created FOR RAP_ENTITY_NAME~EVENT_NAME.
    ENDCLASS.
    
    CLASS lcl_event_extension IMPLEMENTATION.
    
      METHOD on_EVENT_NAME.
        TRY.
            /goog/cl_event_publisher=>publish_event(
              EXPORTING
                iv_event_key = 'EVENT_KEY'
                it_data      = VALUE #( FOR <ls_created> IN created (
                                        data = /goog/cl_json=>serialize( data = <ls_created> ) ) )
              IMPORTING
                et_output    = DATA(lt_output)
            ).
          CATCH /goog/cx_sdk INTO DATA(lo_exp).
    "Error handling logic here
        ENDTRY.
      ENDMETHOD.
    ENDCLASS.
    

Substitua:

  • EVENT_NAME: nome do evento, por exemplo, CREATED.
  • RAP_ENTITY_NAME: nome da entidade RAP, por exemplo, ZCL_PRODUCT_EXT.
  • EVENT_KEY: chave de evento que tem a configuração de destino.

Receber suporte

Se você precisar de ajuda para resolver problemas com o ABAP SDK for Google Cloud, faça o seguinte: