Menginstal dan mengonfigurasi Business Eventing Toolkit untuk SAP

Dokumen ini menjelaskan cara menginstal dan mengonfigurasi Business Eventing Toolkit untuk SAP.

Menginstal Business Eventing Toolkit untuk SAP

Saat Anda menginstal ABAP SDK untuk Google Cloud edisi cloud atau versi terbaru versi lokal, Business Eventing Toolkit untuk SAP akan diinstal untuk Anda. Untuk informasi tentang langkah-langkah penginstalan, lihat Menginstal dan mengonfigurasi ABAP SDK untuk Google Cloud edisi cloud atau on-premise.

Jika Anda menggunakan ABAP SDK untuk Google Cloud versi 1.9 atau yang lebih lama di lokal atau edisi cloud, update SDK ke versi terbaru untuk mendapatkan Business Eventing Toolkit untuk SAP. Untuk informasi selengkapnya, lihat Mengupdate ABAP SDK untuk Google Cloud.

Mengaktifkan API Google Cloud target

Sebelum menggunakan layanan Google Cloud target, pastikan Google Cloud API yang sesuai diaktifkan di project Anda. Misalnya, jika Anda berencana memublikasikan peristiwa ke Pub/Sub, aktifkan Pub/Sub API.

Untuk mengetahui informasi tentang cara mengaktifkan Google Cloud API, lihat Mengaktifkan API.

Menyiapkan autentikasi

Setelah Anda menyiapkan autentikasi untuk mengakses Google Cloud API di ABAP SDK untuk Google Cloud edisi cloud atau lokal, Business Eventing Toolkit untuk SAP akan menggunakan metode autentikasi yang sama untuk memublikasikan peristiwa SAP ke Google Cloud API. Untuk mengetahui informasi tentang cara menyiapkan autentikasi di ABAP SDK untuk Google Cloud edisi cloud atau lokal, lihat Ringkasan autentikasi.

Pastikan akun layanan yang dikonfigurasi dalam konfigurasi kunci klien ABAP SDK untuk Google Cloud memiliki peran IAM yang diperlukan khusus untuk layananGoogle Cloud target.

Catat kunci klien yang telah Anda buat sebagai bagian dari penyiapan autentikasi. Anda menggunakan kunci klien ini saat mengonfigurasi Business Eventing Toolkit untuk SAP di sistem SAP Anda.

Mengonfigurasi atribut CloudEvent

Anda dapat mempertahankan nilai default untuk atribut CloudEvent. Nilai ini disimpan dalam tabel /GOOG/CE_DEFAULT.

Ini adalah konfigurasi opsional. Anda dapat meneruskan atribut CloudEvent atau mengganti atribut default secara langsung dalam kode Anda.

Untuk mengonfigurasi atribut CloudEvent, lakukan hal berikut:

  1. Di SAP GUI, jalankan kode transaksi /GOOG/SDK_IMG.

    Atau, jalankan kode transaksi SPRO, lalu klik IMG Referensi SAP.

  2. Klik ABAP SDK for Google Cloud > Basic Settings > Business Eventing: Configure Context Attributes for Cloud events.

  3. Klik New Entries.

  4. Masukkan nilai untuk kolom berikut:

    Kolom Jenis data Deskripsi
    Kunci Atribut Default Peristiwa Cloud String Tentukan nama untuk konfigurasi atribut CloudEvent default. Misalnya: CLOUD_EVENT_ATTRIBUTE_KEY.
    Sumber String Berikan referensi URI yang mengidentifikasi konteks tempat peristiwa terjadi.
    ID String ID unik untuk peristiwa. Produsen harus memastikan bahwa Sumber + ID bersifat unik untuk setiap peristiwa yang berbeda.
    Versi spesifikasi String Versi spesifikasi CloudEvents yang digunakan peristiwa. Jika Anda mengosongkan kolom ini, sistem akan menggunakan 1.0.
    Jenis String Menjelaskan jenis peristiwa yang terjadi. Sering digunakan untuk pemilihan rute, visibilitas, dan penerapan kebijakan.
    Jenis konten data String Jenis konten nilai data. Memungkinkan data membawa jenis konten apa pun.
    Skema data String URI yang mengidentifikasi skema yang diikuti data.
    Subjek String Menjelaskan subjek peristiwa dalam konteks produsen peristiwa.

    Untuk mengetahui informasi tentang kolom ini, lihat atribut konteks CloudEvents.

  5. Simpan entri baru.

Mengonfigurasi layanan Google Cloud target

Anda dapat menggunakan setelan ini untuk mempertahankan layanan Google Cloud target untuk peristiwa Anda.

Setelan ini digunakan saat memublikasikan peristiwa dari SAP ke layanan Google Cloud menggunakan Business Eventing Toolkit untuk SAP.

Untuk mengonfigurasi layanan Google Cloud target, lakukan hal berikut:

  1. Di SAP GUI, jalankan kode transaksi /GOOG/SDK_IMG.

    Atau, jalankan kode transaksi SPRO, lalu klik IMG Referensi SAP.

  2. Klik ABAP SDK for Google Cloud > Basic Settings > Business Eventing: Configure Google Cloud Targets for an Event.

  3. Klik New Entries.

  4. Masukkan nilai untuk kolom berikut:

    Kolom Jenis data Deskripsi
    Kunci Peristiwa String Tentukan nama konfigurasi peristiwa penayang. Misalnya, EVENT_KEY.
    Class Pemroses Peristiwa String

    Tentukan class prosesor untuk peristiwa. Pilih salah satu opsi berikut bergantung pada layanan Google Cloud target Anda:

    • /GOOG/CL_PUBLISHER_PUBSUB: Untuk memublikasikan peristiwa ke Pub/Sub.
    • /GOOG/CL_PUBLISHER_CLOUDFUNC: Untuk memublikasikan peristiwa ke fungsi Cloud Run.
    • /GOOG/CL_PUBLISHER_FCM: Untuk memublikasikan peristiwa ke Firebase Cloud Messaging (FCM).
    • /GOOG/CL_PUBLISHER_CONNECTORS: Untuk memublikasikan peristiwa ke Integration Connectors API.
    Nama Kunci Google Cloud String Kunci klien yang telah Anda konfigurasikan untuk autentikasi ke Google Cloud selama penyiapan autentikasi.
    Parameter Peristiwa 1 String Tentukan atribut tambahan yang diperlukan untuk layanan Google Cloud target yang ingin Anda gunakan.
    Parameter Peristiwa 2 String Tentukan atribut tambahan yang diperlukan untuk layanan Google Cloud target yang ingin Anda gunakan.
    Parameter Peristiwa 3 String Tentukan atribut tambahan yang diperlukan untuk layanan Google Cloud target yang ingin Anda gunakan.
    Kunci Atribut Default Peristiwa Cloud String Untuk mengirim peristiwa sebagai CloudEvent, berikan nilai kunci atribut default yang sesuai yang telah Anda konfigurasi di bagian Mengonfigurasi atribut CloudEvent.
    Cloud Event: Encoding String

    Pilih mode yang sesuai untuk mengenkode CloudEvents Anda:

    • Terstruktur: Atribut CloudEvent diteruskan dalam isi permintaan.
    • Biner: Atribut CloudEvent diteruskan ke header permintaan.

    Untuk skenario saat Anda perlu mengirim data peristiwa mentah langsung ke layanan Google Cloud , dengan mengabaikan spesifikasi CloudEvents, Anda dapat mengosongkan kolom ini.

  5. Simpan entri baru.

Memperluas modul penayang

Untuk berintegrasi dengan layanan Google Cloud atau target kustom lainnya selain target bawaan, Anda dapat memperluas modul Penayang dengan membuat implementasi Anda sendiri.

Untuk membuat implementasi kustom, lakukan hal berikut:

  1. Dalam transaksi SAP SE24, buat class baru yang mewarisi dari /GOOG/CL_PUBLISHER_BASE.
  2. Implementasikan metode PUBLISH_EVENT dan VALIDATE_PARAMS.

    • PUBLISH_EVENT: Berisi logika kustom Anda untuk mengirim data peristiwa ke target. Petakan parameter input, transmisikan data, dan isi struktur output dengan respons target.
    • VALIDATE_PARAMS: Memungkinkan Anda memverifikasi bahwa semua parameter yang diperlukan telah dikonfigurasi di tabel /GOOG/CE_ROUTER. Jika nilai yang diperlukan tidak ada, munculkan pengecualian jenis /GOOG/CX_SDK.

Saat kode ABAP berjalan, class Penayang membaca konfigurasi dari tabel ini untuk memandu proses publikasi peristiwa.

Mengonfigurasi pemroses untuk peristiwa bisnis

Untuk merekam peristiwa yang dipicu karena perubahan pada objek bisnis, Anda perlu mengonfigurasi pemroses peristiwa bisnis untuk setiap objek bisnis.

Untuk mengonfigurasi pemroses peristiwa bisnis, lakukan hal berikut:

  1. Di SAP GUI, jalankan kode transaksi SWETYPV.

  2. Klik New Entries.

  3. Tentukan kategori objek bisnis dan jenis objek bisnis yang sesuai.

  4. Tentukan peristiwa yang ingin Anda dengarkan dan teruskan peristiwa tersebut menggunakan Business Eventing Toolkit untuk SAP.

  5. Di kolom Receiver Type, masukkan Google_Cloud atau Google.

  6. Di bagian Linkage Setting (Receiver), berikan hal berikut:

    • Panggilan Penerima: Pilih Metode dari menu drop-down.
    • Nama Kelas: Masukkan /GOOG/CL_BO_EVENT_FORWARD.
  7. Centang kotak Linkage Activated.

  8. Simpan konfigurasi.

Memetakan pemroses peristiwa ke kunci peristiwa

Untuk memetakan pemroses peristiwa ke kunci peristiwa, lakukan langkah berikut:

  1. Di SAP GUI, jalankan kode transaksi /GOOG/SDK_IMG.

    Atau, jalankan kode transaksi SPRO, lalu klik IMG Referensi SAP.

  2. Klik ABAP SDK for Google Cloud > Basic Settings > Business Eventing: Configure Event Listeners for Business Objects.

  3. Klik New Entries.

  4. Masukkan nilai untuk kolom berikut:

    Kolom Jenis data Deskripsi
    Jenis Objek CHAR Nama objek bisnis yang telah Anda konfigurasikan dalam transaksi SWETYPV.
    Acara CHAR Nama peristiwa yang ditautkan ke objek bisnis.
    Nama Penerima CHAR Nama penerima yang dikonfigurasi dalam transaksi SWETYPV terhadap kombinasi Jenis Objek dan Peristiwa.
    Kunci Peristiwa CHAR Nama konfigurasi peristiwa penayang yang dikelola di bagian Konfigurasikan layanan Google Cloud target.
    Class Prosesor CHAR

    Opsional. Nama class pemroses tempat Anda menulis logika tambahan untuk mengisi isi peristiwa atau memperluas atribut ekstensi Class ini harus mengimplementasikan antarmuka /GOOG/IF_BOR_EVNT_DATA_HANDLER.

    Untuk informasi tentang cara membuat class pemroses, lihat Memperluas class pemroses.

  5. Simpan konfigurasi.

Atribut ekstensi peristiwa cloud dan isi default

Secara default, pemroses peristiwa meneruskan atribut berikut, yang merupakan bagian dari penampung peristiwa ke target seperti yang ditentukan berdasarkan Kunci Peristiwa:

{
  "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"
}

Jika atribut peristiwa cloud dikonfigurasi, struktur payload-nya adalah sebagai berikut:

{
  "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
}

Jika Anda membuat dan mengonfigurasi class pemroses di pemroses peristiwa, payload yang dihasilkan akan mencerminkan struktur payload kustom Anda.

Memperluas class pemroses

Toolkit peristiwa bisnis memungkinkan Anda menetapkan data dan menambahkan atribut ekstensi tambahan ke peristiwa cloud. Untuk melakukannya, terapkan class yang mewarisi antarmuka /GOOG/IF_BOR_EVNT_DATA_HANDLER dan mengimplementasikan metode antarmuka FILL_EVENT_DATA. Metode ini memiliki parameter impor dan perubahan berikut:

Nama Jenis Jenis terkait Deskripsi
SENDER Mengimpor SIBFLPORB Referensi objek persisten lokal: kompatibel dengan BOR
EVENT Mengimpor SIBFEVENT Acara
EVENT_CONTAINER Mengimpor Type Ref To IF_SWF_IFS_PARAMETER_CONTAINER Penampung untuk transfer parameter
RECTYPE Mengimpor SWFERECTYP Nama jenis penerima
HANDLER Mengimpor SIBFLPORB Referensi objek persisten lokal: kompatibel dengan BOR
CT_DATA Mengubah /GOOG/CL_PUBLISHER_BASE=>TT_MESSAGES Tabel pesan
CT_CE_EXTN_ATTRIBUTES Mengubah /GOOG/T_CE_ATTR_VALUE Cloud Event: nama atribut, tabel pasangan nilai

Contoh implementasi untuk objek bisnis BUS2012 (Pemesanan) untuk menyertakan informasi header PO sebagai isi peristiwa cloud:

 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.

Mengonfigurasi pemroses untuk peristiwa RAP

Untuk setiap peristiwa RAP yang ingin dikirim ke Google Cloud, Anda perlu membuat class pengendali peristiwa. Class pengendali peristiwa ini bertindak sebagai pemroses peristiwa untuk peristiwa RAP tersebut.

Untuk membuat class pengendali peristiwa secara terprogram, Anda dapat menggunakan resource komunitas yang tersedia di GitHub. Anda harus memberikan detail entity RAP dan membuat class pengendali peristiwa. Untuk informasi tentang objek peristiwa, lihat dokumentasi SAP SAP Business Accelerator Hub.

Untuk membuat class pengendali peristiwa secara manual, lakukan hal berikut:

  1. Buat class ABAP untuk peristiwa RAP:

    1. Klik kanan paket ABAP, lalu pilih New > ABAP Class.
    2. Masukkan detail berikut untuk class ABAP Anda:

      • Name: Nama untuk class Anda, misalnya, ZCL_PRODUCT_EXT.
      • Deskripsi: Deskripsi untuk class Anda, misalnya, Event handler for RAP events.
    3. Klik Selesai.

  2. Perbarui definisi class sebagai berikut:

      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.
    

    Ganti kode berikut:

    • CLASS_NAME: Nama class, misalnya, ZCL_PRODUCT_EXT.
    • RAP_ENTITY_NAME: Nama entity RAP, misalnya, R_PRODUCT.
  3. Buka tab Local Types dan buat implementasi lokal:

    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.
    

Ganti kode berikut:

  • EVENT_NAME: Nama peristiwa, misalnya, CREATED.
  • RAP_ENTITY_NAME: Nama entity RAP, misalnya, ZCL_PRODUCT_EXT.
  • EVENT_KEY: Kunci peristiwa yang memiliki konfigurasi target.

Mendapatkan dukungan

Jika Anda memerlukan bantuan untuk menyelesaikan masalah terkait ABAP SDK untuk Google Cloud, lakukan hal berikut: