SAP용 비즈니스 이벤트 도구 키트 설치 및 구성

이 문서에서는 SAP용 비즈니스 이벤트 툴킷을 설치하고 구성하는 방법을 설명합니다.

SAP용 비즈니스 이벤트 도구 키트 설치

ABAP SDK for Google Cloud의 최신 버전 온프레미스 또는 클라우드 버전을 설치하면 SAP용 비즈니스 이벤트 도구 키트가 자동으로 설치됩니다. 설치 단계에 관한 자세한 내용은 ABAP SDK for Google Cloud의 온프레미스 또는 모든 클라우드 버전 설치 및 구성을 참고하세요.

ABAP SDK for Google Cloud의 온프레미스 버전 1.9 이하 또는 임의의 클라우드 버전을 사용 중인 경우 최신 버전으로 SDK를 업데이트하여 SAP용 비즈니스 이벤트 도구 키트를 가져옵니다. 자세한 내용은 ABAP SDK for Google Cloud 업데이트를 참고하세요.

대상 Google Cloud API 사용 설정

타겟 Google Cloud 서비스를 사용하기 전에 프로젝트에서 상응하는Google Cloud API가 사용 설정되어 있는지 확인하세요. 예를 들어 Pub/Sub에 이벤트를 게시하려면 Pub/Sub API를 사용 설정합니다.

API를 사용 설정하는 방법에 관한 자세한 내용은 API 사용 설정을 참고하세요. Google Cloud

인증 설정

ABAP SDK for Google Cloud의 온프레미스 또는 클라우드 버전에서 Google Cloud API에 액세스하기 위한 인증을 설정해 두면 SAP용 비즈니스 이벤트 도구 키트는 동일한 인증 방법을 사용하여 Google Cloud API에 SAP 이벤트를 게시합니다. ABAP SDK for Google Cloud의 온프레미스 또는 클라우드 버전에서 인증을 설정하는 방법에 관한 자세한 내용은 인증 개요를 참고하세요.

ABAP SDK for Google Cloud 클라이언트 키 구성에 구성된 서비스 계정에 타겟Google Cloud 서비스에 맞는 필수 IAM 역할이 있는지 확인합니다.

인증 설정의 일부로 만든 클라이언트 키를 기록해 둡니다. SAP 시스템에서 SAP용 비즈니스 이벤트 도구 키트를 구성할 때 이 클라이언트 키를 사용합니다.

CloudEvent 속성 구성

CloudEvent 속성의 기본값을 유지할 수 있습니다. 이러한 값은 테이블 /GOOG/CE_DEFAULT에 저장됩니다.

이 구성은 선택사항입니다. CloudEvent 속성을 전달하거나 코드에서 직접 기본 속성을 재정의할 수 있습니다.

CloudEvent 속성을 구성하려면 다음 단계를 따르세요.

  1. SAP GUI에서 트랜잭션 코드 /GOOG/SDK_IMG를 실행합니다.

    또는 트랜잭션 코드 SPRO를 실행한 후 SAP 참조 IMG를 클릭합니다.

  2. ABAP SDK for Google Cloud > 기본 설정 > 비즈니스 이벤트 처리: Cloud 이벤트의 컨텍스트 속성 구성을 클릭합니다.

  3. 새 항목을 클릭합니다.

  4. 다음 필드에 값을 입력합니다.

    필드 데이터 유형 설명
    Cloud 이벤트 기본 속성 키 문자열 기본 CloudEvent 속성 구성의 이름을 지정합니다. 예: CLOUD_EVENT_ATTRIBUTE_KEY
    소스 문자열 이벤트가 발생한 컨텍스트를 식별하는 URI 참조를 제공합니다.
    ID 문자열 이벤트의 고유 식별자입니다. 제작자는 고유한 이벤트마다 소스 + ID가 고유하도록 보장해야 합니다.
    사양 버전 문자열 이벤트에서 사용하는 CloudEvents 사양 버전입니다. 이 필드를 비워두면 시스템에서 1.0을 사용합니다.
    유형 문자열 발생한 이벤트 유형을 설명합니다. 라우팅, 관측 가능성, 정책 시행에 주로 사용됩니다.
    데이터 콘텐츠 유형 문자열 데이터 값의 Content-type입니다. 데이터가 모든 유형의 콘텐츠를 전송할 수 있도록 합니다.
    데이터 스키마 문자열 데이터가 준수하는 스키마를 식별하는 URI입니다.
    제목 문자열 이벤트 프로듀서의 맥락에서 이벤트의 주제를 설명합니다.

    이러한 필드에 대한 자세한 내용은 CloudEvents 컨텍스트 속성을 참고하세요.

  5. 새 항목을 저장합니다.

타겟 Google Cloud 서비스 구성

이 설정을 사용하여 이벤트의 타겟 Google Cloud 서비스를 유지할 수 있습니다.

이 설정은 SAP용 비즈니스 이벤트 도구 키트를 사용하여 SAP에서 서비스로 이벤트를 게시할 때 사용됩니다. Google Cloud

타겟 Google Cloud 서비스를 구성하려면 다음 단계를 따르세요.

  1. SAP GUI에서 트랜잭션 코드 /GOOG/SDK_IMG를 실행합니다.

    또는 트랜잭션 코드 SPRO를 실행한 후 SAP 참조 IMG를 클릭합니다.

  2. ABAP SDK for Google Cloud > 기본 설정 > 비즈니스 이벤트 처리: 이벤트의 Google Cloud 타겟 구성을 클릭합니다.

  3. 새 항목을 클릭합니다.

  4. 다음 필드에 값을 입력합니다.

    필드 데이터 유형 설명
    이벤트 키 문자열 게시자 이벤트 구성의 이름을 지정합니다. 예를 들면 EVENT_KEY입니다.
    이벤트 프로세서 클래스 문자열

    이벤트의 프로세서 클래스를 지정합니다. 타겟 Google Cloud 서비스에 따라 다음 옵션 중 하나를 선택합니다.

    • /GOOG/CL_PUBLISHER_PUBSUB: Pub/Sub에 이벤트를 게시합니다.
    • /GOOG/CL_PUBLISHER_CLOUDFUNC: Cloud Run 함수에 이벤트를 게시하는 경우
    • /GOOG/CL_PUBLISHER_FCM: Firebase 클라우드 메시징 (FCM)에 이벤트를 게시하는 경우
    • /GOOG/CL_PUBLISHER_CONNECTORS: Integration Connectors API에 이벤트를 게시하는 경우
    Google Cloud 키 이름 문자열 인증 설정 중에 Google Cloud Google Cloud에 인증하기 위해 구성된 클라이언트 키입니다.
    이벤트 매개변수 1 문자열 사용하려는 대상 Google Cloud 서비스에 필요한 추가 속성을 지정합니다.
    이벤트 매개변수 2 문자열 사용하려는 대상 Google Cloud 서비스에 필요한 추가 속성을 지정합니다.
    이벤트 매개변수 3 문자열 사용하려는 대상 Google Cloud 서비스에 필요한 추가 속성을 지정합니다.
    Cloud 이벤트 기본 속성 키 문자열 이벤트를 CloudEvent로 전송하려면 CloudEvent 속성 구성 섹션에서 구성한 해당 기본 속성 키의 값을 제공합니다.
    Cloud 이벤트: 인코딩 문자열

    CloudEvents 인코딩에 적절한 모드를 선택합니다.

    • 구조화됨: CloudEvent 속성이 요청 본문에서 전달됩니다.
    • 바이너리: CloudEvent 속성이 요청 헤더에 전달됩니다.

    CloudEvents 사양을 우회하여 원시 이벤트 데이터를 Google Cloud 서비스로 직접 전송해야 하는 시나리오의 경우 이 입력란을 비워 둡니다.

  5. 새 항목을 저장합니다.

게시자 모듈 확장

사전 빌드된 타겟 외의 다른 Google Cloud 서비스 또는 맞춤 타겟과 통합하려면 자체 구현을 만들어 게시자 모듈을 확장하면 됩니다.

맞춤 구현을 만들려면 다음 단계를 따르세요.

  1. SAP 트랜잭션 SE24에서 /GOOG/CL_PUBLISHER_BASE에서 상속받는 새 클래스를 만듭니다.
  2. PUBLISH_EVENTVALIDATE_PARAMS 메서드를 구현합니다.

    • PUBLISH_EVENT: 이벤트 데이터를 타겟에 전송하는 맞춤 로직이 포함되어 있습니다. 입력 매개변수를 매핑하고 데이터를 전송한 후 출력 구조를 타겟의 응답으로 채웁니다.
    • VALIDATE_PARAMS: 필요한 모든 매개변수가 테이블 /GOOG/CE_ROUTER에 구성되어 있는지 확인할 수 있습니다. 필수 값이 누락된 경우 /GOOG/CX_SDK 유형의 예외를 발생시킵니다.

ABAP 코드가 실행되면 게시자 클래스는 이 테이블에서 구성을 읽어 이벤트 게시 프로세스를 안내합니다.

비즈니스 이벤트 리스너 구성

비즈니스 객체 변경으로 인해 트리거된 이벤트를 캡처하려면 각 비즈니스 객체에 비즈니스 이벤트 리스너를 구성해야 합니다.

비즈니스 이벤트 리스너를 구성하려면 다음 단계를 따르세요.

  1. SAP GUI에서 트랜잭션 코드 SWETYPV를 실행합니다.

  2. 새 항목을 클릭합니다.

  3. 적절한 비즈니스 객체 카테고리 및 비즈니스 객체 유형을 지정합니다.

  4. SAP용 비즈니스 이벤트 도구 키트를 사용하여 이벤트를 수신 대기하고 전달할 이벤트를 지정합니다.

  5. 수신자 유형 필드에 Google_Cloud 또는 Google을 입력합니다.

  6. 연결 설정 (수신기) 섹션에서 다음을 입력합니다.

    • 수신자 호출: 드롭다운 목록에서 방법을 선택합니다.
    • 클래스 이름: /GOOG/CL_BO_EVENT_FORWARD을 입력합니다.
  7. Linkage Activated(연결 활성화됨) 체크박스를 선택합니다.

  8. 구성을 저장합니다.

이벤트 리스너를 이벤트 키에 매핑

이벤트 리스너를 이벤트 키에 매핑하려면 다음 단계를 따르세요.

  1. SAP GUI에서 트랜잭션 코드 /GOOG/SDK_IMG를 실행합니다.

    또는 트랜잭션 코드 SPRO를 실행한 후 SAP 참조 IMG를 클릭합니다.

  2. ABAP SDK for Google Cloud > 기본 설정 > 비즈니스 이벤트 처리: 비즈니스 객체의 이벤트 리스너 구성을 클릭합니다.

  3. 새 항목을 클릭합니다.

  4. 다음 필드에 값을 입력합니다.

    필드 데이터 유형 설명
    객체 유형 CHAR 트랜잭션 SWETYPV에서 구성한 비즈니스 객체의 이름입니다.
    이벤트 CHAR 비즈니스 객체에 연결된 이벤트의 이름입니다.
    수신자 이름 CHAR 객체 유형과 이벤트의 조합에 대해 트랜잭션 SWETYPV에 구성된 수신기의 이름입니다.
    이벤트 키 CHAR 타겟 서비스 구성 Google Cloud 섹션에 유지되는 게시자 이벤트 구성의 이름입니다.
    프로세서 클래스 CHAR

    선택사항입니다. 이벤트 본문을 채우거나 확장 프로그램 속성을 확장하는 추가 로직을 작성한 프로세서 클래스의 이름입니다. 이 클래스는 /GOOG/IF_BOR_EVNT_DATA_HANDLER 인터페이스를 구현해야 합니다.

    프로세서 클래스를 만드는 방법에 관한 자세한 내용은 프로세서 클래스 확장을 참고하세요.

  5. 구성을 저장합니다.

기본 본문 및 Cloud Event 확장 속성

기본적으로 이벤트 리스너는 이벤트 키를 기반으로 결정된 대로 이벤트 컨테이너의 일부인 다음 속성을 타겟에 전달합니다.

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

Cloud Events 속성이 구성된 경우 페이로드 구조는 다음과 같습니다.

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

이벤트 리스너에서 프로세서 클래스를 만들고 구성하면 결과 페이로드에 맞춤 페이로드 구조가 반영됩니다.

프로세서 클래스 확장

비즈니스 이벤트 도구 키트를 사용하면 데이터를 설정하고 클라우드 이벤트에 확장 속성을 추가할 수 있습니다. 이렇게 하려면 /GOOG/IF_BOR_EVNT_DATA_HANDLER 인터페이스를 상속하고 FILL_EVENT_DATA 인터페이스 메서드를 구현하는 클래스를 구현합니다. 이 메서드에는 다음과 같은 가져오기 및 변경 매개변수가 있습니다.

이름 유형 연결된 유형 설명
SENDER 가져오는 중 SIBFLPORB 로컬 영구 객체 참조: BOR 호환
EVENT 가져오는 중 SIBFEVENT 이벤트
EVENT_CONTAINER 가져오는 중 IF_SWF_IFS_PARAMETER_CONTAINER 참조 유형 매개변수 전송을 위한 컨테이너
RECTYPE 가져오는 중 SWFERECTYP 수신기 유형의 이름
HANDLER 가져오는 중 SIBFLPORB 로컬 영구 객체 참조: BOR 호환
CT_DATA 변경 중 /GOOG/CL_PUBLISHER_BASE=>TT_MESSAGES 메시지 표
CT_CE_EXTN_ATTRIBUTES 변경 중 /GOOG/T_CE_ATTR_VALUE Cloud Event: 속성 이름, 값 쌍 테이블

PO 헤더 정보를 클라우드 이벤트 본문으로 포함하는 비즈니스 객체 BUS2012 (구매 주문)의 샘플 구현:

 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.

RAP 이벤트 리스너 구성

Google Cloud에 전송하려는 각 RAP 이벤트에 대해 이벤트 핸들러 클래스를 만들어야 합니다. 이 이벤트 핸들러 클래스는 해당 RAP 이벤트의 이벤트 리스너 역할을 합니다.

이벤트 핸들러 클래스를 프로그래매틱 방식으로 만들려면 GitHub에서 제공되는 커뮤니티 리소스를 사용하면 됩니다. RAP 항목 세부정보를 제공하고 이벤트 핸들러 클래스를 생성해야 합니다. 이벤트 객체에 대한 자세한 내용은 SAP 문서 SAP Business Accelerator Hub를 참고하세요.

이벤트 핸들러 클래스를 수동으로 만들려면 다음 단계를 따르세요.

  1. RAP 이벤트를 위한 ABAP 클래스를 만듭니다.

    1. ABAP 패키지를 마우스 오른쪽 버튼으로 클릭하고 새로 만들기 > ABAP 클래스를 선택합니다.
    2. ABAP 클래스에 대해 다음 세부정보를 입력합니다.

      • 이름: 클래스의 이름입니다(예: ZCL_PRODUCT_EXT).
      • 설명: 클래스에 대한 설명입니다(예: Event handler for RAP events).
    3. 마침을 클릭합니다.

  2. 다음과 같이 클래스 정의를 업데이트합니다.

      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.
    

    다음을 바꿉니다.

    • CLASS_NAME: 클래스의 이름입니다(예: ZCL_PRODUCT_EXT).
    • RAP_ENTITY_NAME: RAP 항목의 이름입니다(예: R_PRODUCT).
  3. 로컬 유형 탭을 열고 로컬 구현을 만듭니다.

    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.
    

다음을 바꿉니다.

  • EVENT_NAME: 이벤트 이름입니다(예: CREATED).
  • RAP_ENTITY_NAME: RAP 항목의 이름입니다(예: ZCL_PRODUCT_EXT).
  • EVENT_KEY: 대상 구성이 있는 이벤트 키입니다.

지원 받기

ABAP SDK for Google Cloud 문제를 해결하는 데 도움이 필요한 경우 다음을 수행하세요.