ABAP SDK for Google Cloud 온프레미스 또는 클라우드 버전을 사용하여 애플리케이션 개발

이 문서에서는 ABAP SDK for Google Cloud 온프레미스 또는 클라우드 버전을 사용하여 SAP 애플리케이션을 개발하는 데 유용한 정보와 리소스를 제공합니다.

이 문서는 SAP ABAP 개발자를 대상으로 합니다.

ABAP SDK for Google Cloud 온프레미스 또는 클라우드 버전이 제공하는 클라이언트 라이브러리의 전체 목록은 ABAP SDK for Google Cloud 온프레미스 또는 클라우드 버전 클라이언트 라이브러리를 참조하세요.

단일 창 상호작용

ABAP SDK for Google Cloud에서 사용 설정된 각 Google Cloud API는 /GOOG/CLIENT 패키지에 포함된 ABAP 클래스로 표시됩니다. ABAP 클래스는 여러 공개 메서드로 구성되며, 이러한 각 공개 메서드는 Google Cloud API 메서드에 해당합니다. 각 공개 메서드는 다시 IMPORTING 매개변수와 EXPORTING 매개변수로 구성됩니다. ABAP 클래스에는 또한 IMPORTINGEXPORTING 매개변수를 생성 및 매핑하는 데 사용할 수 있는 커스텀 데이터 유형이 포함되어 있습니다. 이러한 커스텀 데이터 유형은 API 스키마 정의에 매핑됩니다.

대상 Google Cloud API와의 모든 상호작용에 대해 해당 ABAP 클래스는 유일한 상호작용 지점으로 작동합니다. 이 개념을 단일 창 상호작용이라고 하며, Google Cloud API와의 상호작용의 모든 복잡한 요소를 보호하며 간소화된 인터페이스를 제공합니다. 이러한 간소화된 인터페이스를 통해 기본 SDK 기능을 걱정할 필요 없이 SDK를 사용하여 개발 중인 비즈니스 솔루션에 집중할 수 있습니다.

단일 창 상호작용

상호작용 흐름

API 메서드를 호출하기 위한 상호작용 흐름은 다음과 같습니다.

  1. API에 연결합니다.
  2. ABAP 유형을 사용하여 입력 요청을 생성합니다.
  3. API 메서드를 호출합니다.
  4. 오류 및 예외를 파싱합니다.
  5. ABAP 유형을 사용하여 응답을 읽습니다.

개발자 상호작용

API 클라이언트 스텁

일반적인 API 클라이언트 스텁 클래스는 다음 섹션으로 구성됩니다.

  • API 스키마에 매핑되는 ABAP 유형. ABAP 유형을 사용하여 입력 요청을 생성하고 응답을 파싱합니다.
  • 내부 또는 외부 사용을 위한 상수 및 속성
  • API 리소스와 상호작용하기 위한 API 메서드

클래스 구조

기능

ABAP SDK for Google Cloud의 기능은 다음과 같습니다.

  • HTTP 통신: SDK가 API 엔드포인트와 HTTP 연결을 설정합니다.
  • 요청 마샬링: SDK가 ABAP 유형의 데이터를 요청 본문으로 전송되는 JSON 페이로드로 변환합니다.
  • 오류 및 예외 처리: SDK가 API로 반환되는 반환 코드 및 오류 메시지를 처리하고 예외를 일으킵니다(있는 경우).
  • 언마샬링 응답: SDK는 응답 본문의 JSON 페이로드를 다시 해당 ABAP 유형으로 변환합니다.
  • 로컬 오류 로깅: SDK는 로깅 프레임워크를 사용하여 오류 메시지를 로깅합니다.

API 디자인 및 API 탐색기

Google에서 게시된 API는 리소스 중심 디자인을 따릅니다. Google API 디자인에 대해 자세히 알아보려면 API 디자인 가이드를 참조하세요.

ABAP SDK for Google Cloud를 사용하면 Google에서 게시한 REST 기반 API와 통합할 수 있습니다.

API 탐색기는 코드 작성 없이 Google Cloud API 메서드를 시도할 수 있게 해주는 도구입니다. 이 도구를 사용하여 API와 해당 ABAP 메서드에 전달해야 하는 필수 입력 매개변수를 연구합니다.

코드 생성

ABAP SDK for Google Cloud를 사용하여 ABAP 프로그램을 만드는 데 사용하는 코드 구문을 설명합니다.

생성자

먼저 사용할 API 클래스를 인스턴스화합니다. 모든 API 클래스의 생성자는 다음 예시와 비슷한 패턴을 갖습니다.

    METHODS constructor
      IMPORTING
        !iv_key_name   TYPE /goog/keyname OPTIONAL "Google Cloud Key Name
        !iv_log_obj    TYPE balobj_d OPTIONAL      "Application log: Object name
        !iv_log_subobj TYPE balsubobj OPTIONAL.    "Application log: Subobject
      RAISING
        /goog/cx_sdk .                 "Exception Classes

가져오기 매개변수

다음 표에서는 메서드 생성자의 가져오기 매개변수에 대해 설명합니다.

매개변수 이름 유형 필수/선택사항 설명
iv_key_name /GOOG/KEYNAME 필수 Google Cloud 연결을 만들기 위해 사용하는 구성에서 클라이언트 키를 지정합니다. 클라이언트 키 구성에 대한 자세한 내용은 인증을 참조하세요.
iv_log_object balobj_d 선택 SDK 생성 오류를 저장하는 데 사용할 애플리케이션 로그 객체를 지정합니다. 로깅 구성에 대한 자세한 내용은 애플리케이션 로깅을 참조하세요.
iv_log_subobject balsubobj 선택 SDK 생성 오류를 저장하는 데 사용할 애플리케이션 로그 하위 객체를 지정합니다. 로깅 구성에 대한 자세한 내용은 애플리케이션 로깅을 참조하세요.

API 메서드

Google Cloud API의 리소스 중심 디자인에서 API 메서드는 API로 게시된 리소스에서 수행할 수 있는 작업입니다.

예를 들어 Topics가 Pub/Sub API에서 게시한 리소스이면 topics.getTopics 리소스에서 주제의 구성을 가져오기 위한 작업을 나타내는 API 메서드입니다.

ABAP 클래스 메서드를 API 메서드에 매핑하려면 <resource>.<method_verb> 패턴을 따르는 메서드 설명을 참조할 수 있습니다.

예를 들어 Pub/Sub 메서드의 메서드 설명은 pubsub.projects.topics.get입니다.

  • projects.topics: 리소스 이름입니다.
  • get: 메서드 작업입니다.

메서드 설명 SAP UI

API 작업에 매핑되는 ABAP 메서드의 이름은 <method_verb>_<resource> 패턴을 따릅니다.

예를 들어 Pub/Sub의 ABAP 메서드 이름은 GET_TOPICS입니다.

  • GET: 메서드 작업입니다.
  • TOPICS: 리소스 이름입니다.

ABAP 메서드는 REST API 메서드에 매핑되는 다음 섹션으로 구성됩니다.

메서드 이름

가져오기 매개변수

API 메서드는 다음 가져오기 매개변수를 포함할 수 있습니다. 이러한 매개변수는 선택사항이며 사용해야 하는 API 메서드의 요구사항에 따라 매개변수를 전달할 수 있습니다.

매개변수 이름 유형 카테고리 설명

iv_q_<name>

(0~n)

문자열 쿼리 매개변수

쿼리 매개변수는 (?) 뒤에 API 엔드포인트에 추가됩니다.

정렬, 페이지로 나누기, 필터를 정의기 위해 사용됩니다.

0~n 쿼리 매개변수가 있을 수 있습니다.

iv_p_<name>

(0~n)

문자열 경로 매개변수

경로 매개변수는 엔드포인트의 일부입니다.

특정 REST API 리소스를 가리키기 위해 사용됩니다.

경로 매개변수는 0부터 n개까지 가능합니다.

is_input

(0~1)

TY_CODE(클래스유형) 입력 구조 매개변수

요청 본문으로 전달되는 데이터는 입력 구조를 사용하여 매핑될 수 있습니다.

REST API는 JSON 페이로드를 요청 본문으로 수락합니다. 매개변수는 API 클래스에 대해 JSON 페이로드로 변환되는 완전히 형식이 지정된 매개변수이며, 개발자가 JSON 작업을 수행할 필요가 없습니다.

사용 가능한 클래스 유형을 참조하여 데이터 매핑을 위한 ABAP 유형을 이해할 수 있습니다. 예를 들어 /GOOG/CL_PUBSUB_V1=>TY_041 유형은 JSON 페이로드로 CREATE_TOPICS 메서드에 전달되는 REST 리소스 주제에 매핑합니다.

메서드는 최대 1개의 요청 본문 매개변수를 포함할 수 있습니다. 일부 메서드는 요청 본문을 포함하지 않습니다.

내보내기 매개변수

API 메서드는 다음과 같은 내보내기 매개변수를 지원합니다.

매개변수 이름 유형 카테고리 설명
es_raw 데이터 원시 출력

이 매개변수는 API 메서드에서 반환된 JSON 응답(오류 또는 성공)을 포함합니다. 이 매개변수를 문자열 유형의 변수에 매핑하여 JSON 응답 문자열을 수신합니다.

응답 유형이 다른 경우, 예를 들어 /goog/cl_storage_v1->get_objects( )의 파일 출력에 대한 xstring의 경우 매개변수가 적합한 값을 반환합니다.

고급 문제 해결 시나리오 또는 고급 API 시나리오에서 이 매개변수를 사용합니다.

es_output TY_CODE(클래스 유형) 출력 구조

JSON 응답은 ABAP 구조로 역직렬화되며 이 형식이 지정된 내보내기 매개변수를 사용하여 반환됩니다.

이를 기본 방법으로 사용하여 ABAP 구조로 API 응답을 읽을 수 있습니다.

ev_ret_code I(정수) 반환 코드

API 메서드 실행으로 해당 기능을 성공적으로 수행할 수 있는지 확인하는 데 사용할 수 있는 반환 코드입니다.

자세한 내용은 API 반환 코드, 오류, 예외를 참조하세요.

ev_err_text 문자열 오류 텍스트

메서드 호출이 실패하면 이 매개변수에 실패 이유를 확인하는 데 사용할 수 있는 오류 메시지가 포함됩니다.

자세한 내용은 API 반환 코드, 오류, 예외를 참조하세요.

ev_err_resp
  • 오류 유형 = CHAR 60
  • 오류 설명 = STRING
오류 응답

이 매개변수는 오류에 대한 추가 정보를 제공합니다.

자세한 내용은 API 반환 코드, 오류, 예외를 참조하세요.

클래스 유형

Google Cloud API는 JSON을 데이터 교환을 위한 기본 형식으로 사용합니다. ABAP SDK for Google Cloud는 Google Cloud API에서 요구하는 JSON 스키마에 매핑되는 ABAP 유형을 제공합니다.

이러한 ABAP 유형 및 관련 테이블 유형은 SDK가 제공하는 모든 API 클래스에서 클래스 유형으로 사용할 수 있습니다.

다음 예시는 Pub/Sub API 클래스 /GOOG/CL_PUBSUB_V1의 클래스 유형을 보여줍니다.

클래스 유형

/GOOG/CL_PUBSUB_V1의 클래스 유형 TY_041에 대한 설명은 JSON 페이로드로 CREATE_TOPICS 메서드에 전달되는 REST 리소스 Topic에 매핑됩니다.

ABAP Doc 주석은 모든 클라이언트 API 클래스에 추가됩니다. 개발을 위해 SAP NetWeaver용 ABAP 개발 도구(ADT)를 사용하는 동안 이 설명에서는 클래스 유형을 설명합니다.

API 반환 코드, 오류, 예외

ABAP 클래스의 API 메서드가 호출될 때 오류가 발생하면 ABAP SDK for Google Cloud가 SDK 내보내기 매개변수를 사용하거나 예외를 발생시켜 호출 프로그램에 오류 정보를 전달합니다.

반환 응답 이름

API 반환 코드 및 오류

Google Cloud API는 여러 다른 API에서 일관적인 경험을 제공하는 오류 모델을 사용합니다. SDK에서 Google Cloud API 메서드가 호출될 때 다음 매개변수에는 API 반환 코드와 메시지가 포함됩니다.

API 호출 상태를 확인하려면 IS_SUCCESS 메서드를 사용합니다. ev_ret_code 값을 사용하여 API 호출의 성공 여부를 확인할 수 있습니다. 일반적으로 ev_ret_code = 2XX이면 메서드 호출이 성공한 것으로 간주됩니다. 다른 모든 값의 경우 메서드 호출이 실패한 것으로 간주됩니다.

IF lo_client->is_success( ev_ret_code ).
   "Success: Implement custom code
   ELSE
   "Handle the HTTP error status code
ENDIF.

일부 Google Maps Platform API의 경우 잘못된 입력으로 API를 호출하면 API에서 HTTP 오류 상태 코드(4XX 또는 5XX) 대신 오류 메시지 및 오류 상태와 함께 HTTP 성공 상태 코드 2XX를 반환합니다. API 응답의 이 오류 메시지와 오류 상태는 문제를 해결하고 잘못된 입력을 수정하는 데 도움이 됩니다.

이러한 Google Maps Platform API의 경우 반환 코드 ev_ret_code 외에도 API 호출 후에 IS_STATUS_OK 메서드를 호출하여 API 응답에서 반환되는 오류 메시지와 오류 상태를 확인합니다. 다음 스니펫에서는 IS_STATUS_OK 메서드를 사용하는 방법의 예시를 보여줍니다.

IF lo_client->is_status_ok( ).
  "Success: Implement custom code
  ELSE
  "Handle the HTTP error status code
ENDIF.

es_err_resp 매개변수는 오류에 대한 추가 정보를 제공합니다. 다음 표에서는 es_err_resp 매개변수의 필드를 설명합니다.

필드
es_err_resp-error_description API에서 수신된 오류 메시지입니다. 이 값은 ev_error_text 매개변수와 동일합니다.
es_err_resp-error SAP HTTP 클라이언트에서 반환된 HTTP 상태 설명입니다.

Google Cloud API에서 반환된 오류 처리

다음 안내에 따라 Google Cloud API에서 반환된 오류를 처리합니다.

  • 일반적인 오류 코드: Google Cloud API에서 반환되는 일반적인 오류 및 그 원인에 대한 자세한 내용은 오류 코드를 참조하세요.

  • 상세 오류 캡처: ABAP SDK for Google Cloud로 자세한 오류 정보를 캡처하려면 SDK 클래스 메서드에서 내보내기 매개변수 es_raw를 사용하여 이 매개변수를 String 유형의 변수로 매핑합니다. 이 변수는 API에서 발생한 자세한 오류 메시지와 특정 위반을 포함하는 JSON 응답을 포함합니다.

  • 상세 오류 보기: 자세한 오류 정보를 보려면 다음 방법 중 하나를 사용합니다.

    • Debugger: 추가 분석을 위해 ABAP 디버거 도구 내에서 JSON 응답을 저장하는 변수의 콘텐츠를 봅니다.
    • SAP GUI: 보고서 프로그램 내에서 오류를 시각적으로 표현하려면 ABAP 클래스 cl_demo_output=>display( lv_response )를 사용합니다. 보고서 프로그램에서 API 메서드를 사용 중이고 프로그램 실행이 포그라운드 모드인 경우 ABAP 클래스 cl_demo_output=>display_json( lv_response )을 사용합니다.

      다음 코드 스니펫에서는 오류가 발생할 경우 API 응답을 표시하는 방법을 보여줍니다.

      DATA lv_response  TYPE string,
        TRY.
            lo_translate = NEW #( iv_key_name = 'DEMO_TRANSLATE' ).
            lo_translate->translate_translations
              EXPORTING
                is_input    = ls_input
              IMPORTING
                es_raw      = lv_response
                es_output   = ls_output
                ev_ret_code = lv_ret_code
                ev_err_text = lv_err_text
                es_err_resp = ls_err_resp.
            IF lo_translate->is_error( lv_ret_code ) = abap_true.
              " Display API response in case of an error
              cl_demo_output=>display_json( lv_response ).
            ENDIF.
          CATCH /goog/cx_sdk INTO lo_exception.
            lv_err_text = lo_exception->get_text( ).
        ENDTRY.
      

  • API별 문서: 일부 Google Cloud API는 개별 문서 내에서 자세한 오류 정보 및 문제 해결 안내를 제공합니다. API와 관련된 오류를 해결하려면 해당 API와 관련된 문서를 참조하세요(예: Pub/Sub, Document AI, Cloud Storage).

예외

잘못된 SDK 구성 또는 HTTP 통신 오류와 같이 API 메서드 호출 중 예기치 않은 오류가 발생하면 SDK가 /GOOG/CX_SDK 유형의 클래스 예외를 발생시킵니다. 코드에서 이 예외를 발견하고 적절한 오류 처리 로직을 작성해야 합니다.

예외 처리

예외 클래스의 get_text 메서드를 호출하여 오류 메시지를 가져올 수 있습니다. 예외 클래스에서 반환되는 오류 메시지에는 다음 형식이 포함됩니다.

/GOOG/MSG : Return_Code - Error_Message

오류 원인과 해결 단계는 Return_Code 값에 따라 달라집니다.

Return_Code의 값 오류 원인 해결 방법
461 ABAP SDK for Google Cloud는 특정 반환 코드 461을 사용하여 특정 설치 및 구성 단계가 잘못 완료되지 않았거나 잘못 완료되었음을 알립니다. 해당 Error_Message는 오류에 대한 세부정보를 제공합니다. SDK의 설치 및 구성 안내를 신중하게 검토하고 올바르게 수행되었는지 확인해야 합니다.
기타 모든 값 이 반환 코드는 표준 SAP HTTP 클라이언트 클래스에서 마지막 HTTP 오류입니다. 이 오류는 Google REST API 메서드를 호출할 때 SAP ICM에 통신 문제가 발생했음을 나타냅니다. 네트워크, 방화벽, SAP ICM 설정을 신중하게 검토하고 Google Cloud API에 대한 HTTP 호출이 허용되도록 구성되었는지 확인해야 합니다.

ABAP SDK for Google Cloud에서 트리거된 일반적인 오류 메시지와 해결 방법은 문제 해결 가이드를 참조하세요.

로깅

ABAP SDK for Google Cloud를 사용하면 삽입된 로깅 프레임워크를 사용하여 오류 메시지를 로깅할 수 있습니다. 로그 객체 ZGOOG 및 하위 객체 ZABAP_SDK는 로그 구성의 기본 객체로 사용할 수 있는 SDK 전송 파일과 함께 제공됩니다.

개발자는 API 클라이언트 스텁을 인스턴스화하면서 자체 커스텀 로그 객체 및 하위 객체를 전달할 수 있습니다. 이를 위해서는 기본 로그 객체 및 하위 객체 대신 SDK가 커스텀 로그 객체를 사용하도록 지정하는 추가 구성이 필요합니다.

다음 예시에서는 커스텀 로그 객체와 하위 객체가 전달된 호출 코드를 보여줍니다.

TRY.
    CREATE OBJECT lo_api_class
      EXPORTING
        iv_key_name   = 'CLIENT_KEY'
        iv_log_obj    = 'ZSD'            "Application Log Object
        iv_log_subobj = 'ZSD_SALES_ORDERS'. "Subobject
  CATCH /goog/cx_sdk INTO DATA(lo_exception).
      DATA(lv_msg) = lo_exception->get_text( ).
      MESSAGE lv_msg TYPE 'E'.
ENDTRY.

로깅 구성 및 커스텀 로그 객체 만들기에 대한 자세한 내용은 애플리케이션 로깅을 참조하세요.

데이터 유형 매핑

다음 표에는 Google API 검색 서비스 및 해당 ABAP 데이터 유형에서 지원하는 typeformat 값의 전체 목록이 나와 있습니다.

Google API 검색 서비스에서 지원되는 typeformat 값에 대한 자세한 내용은 유형 및 형식 요약을 참조하세요.

유형 값 형식 값 ABAP 데이터 유형 의미
모두 TYPE REF TO DATA 이 속성에는 모든 유형이 있을 수 있습니다. JSON 스키마 사양에 따라 정의됩니다.
배열 TABLE TYPE WITH NON UNIQUE KEYS 값의 JavaScript 배열입니다. 항목 속성은 배열 값의 스키마를 나타냅니다. JSON 스키마 사양에 따라 정의됩니다.
부울 ABAP_BOOL 불리언 값('true' 또는 'false') JSON 스키마 사양에 따라 정의됩니다.
정수 int32 INT4 부호 있는 32비트 정수입니다. 최솟값은 -2,147,483,648이고 최댓값은 2,147,483,647(포함)입니다.
정수 uint32 INT4 부호 없는 32비트 정수입니다. 최솟값은 0이고 최댓값은 4,294,967,295(포함)입니다.
숫자 double /GOOG/NUM_DOUBLE(문자열) 배정밀도 64비트 IEEE 754 부동 소수점입니다.
숫자 float /GOOG/NUM_FLOAT(문자열) 단일 정밀도 32비트 IEEE 754 부동 소수점입니다.
객체 유형 JavaScript 객체입니다. JSON 스키마 사양에 따라 정의됩니다.
문자열 STRING 임의의 문자열입니다. JSON 스키마 사양에 따라 정의됩니다.
문자열 byte STRING URL 및 파일 이름 안전 알파벳("web-safe" 또는 "base64url"이라고도 함)으로 인코딩된, base64로 인코딩된 바이트의 패딩된 문자열입니다. RFC 4648에 의해 정의됩니다.
문자열 date STRING YYYY-MM-DD 형식의 RFC 3339 날짜입니다. JSON 스키마 사양에 정의됩니다.
문자열 date-time STRING RFC 3339 타임스탬프입니다(UTC 시간). yyyy-MM-ddTHH:mm:ss.SSSZ 형식입니다. 밀리초 부분('.SSS')은 선택사항입니다. JSON 스키마 사양에 정의됩니다.
문자열 google-datetime STRING RFC 3339 타임스탬프입니다(UTC 시간). yyyy-MM-ddTHH:mm:ss.SSSZ 형식입니다. 밀리초 부분('.SSS')은 선택사항입니다.
문자열 google-duration STRING 문자열은 접미사 's'(초를 나타냄)로 끝나고 뒤에 초 수가 나오며 나노초는 분수 초로 표시됩니다. 마침표는 항상 쉼표가 아닌 소수점으로 사용됩니다.
문자열 google-fieldmask STRING 필드 이름을 쉼표로 구분하는 문자열입니다. 필드 이름은
하위 카멜 이름 지정 규칙으로 표시됩니다.
문자열 int64 STRING 부호 있는 64비트 정수입니다. 최솟값은 -9,223,372,036,854,775,808이고 최댓값은 9,223,372,036,854,775,807(포함)입니다.
문자열 uint64 STRING 부호 없는 64비트 정수입니다. 최소값은 0이고 최댓값은(2^64)-1(포함)입니다.

데모 프로그램

ABAP SDK for Google Cloud에는 SDK를 사용하여 Google 서비스를 사용하는 방법을 보여주는 여러 데모 프로그램이 포함되어 있습니다. 데모 프로그램은 /GOOG/DEMO 패키지에 있습니다.

데모 프로그램에서는 다음과 같은 다양한 Google 서비스를 다룹니다.

  • Document AI
  • Pub/Sub
  • Cloud Translation
  • Cloud Storage
  • Secret Manager

데모 프로그램은 ABAP SDK for Google Cloud를 사용하는 방법을 배울 수 있는 좋은 방법입니다. 또한 구성을 테스트할 수 있는 좋은 방법입니다. 데모가 포함된 프로그램 문서에서는 각 데모에 대한 추가 세부정보를 제공합니다.

데모 프로그램에 액세스하려면 다음 단계를 수행합니다.

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

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

  2. ABAP SDK for Google Cloud > 데모로 이동합니다.

API 요청 및 응답의 직렬화 및 역직렬화

기본적으로 ABAP SDK for Google Cloud는 API 요청 및 응답의 마샬링 및 언마샬링을 처리합니다. 각 Google Cloud API의 ABAP 클래스에는 메서드의 입력 및 출력을 생성하기 위한 임베딩된 ABAP 유형이 있습니다. 요청 및 응답에 대해 커스텀 변환을 구현하려면 SDK에 제공된 SAP 비즈니스 부가기능(BAdI)이 포함된 개선 지점을 활용할 수 있습니다.

커스텀 변환 구현

SDK와 함께 제공되는 개선 지점 /GOOG/ES_TRANSFORM_JSON에는 다음과 같은 BAdI 정의가 포함되어 있습니다.

  • /GOOG/BADI_SERIALIZE_JSON: 커스텀 직렬화 로직을 구현합니다.
  • /GOOG/BADI_DESERIALIZE_JSON: 커스텀 역직렬화 로직을 구현합니다.

이러한 BAdI 구현에서 특정 변환 로직을 작성할 수 있습니다. 이러한 BAdI의 인터페이스에는 가져오기 매개변수로 IV_METHOD_NAME이 포함됩니다. 이 매개변수를 사용해서 IF…ENDIF 블록을 사용하여 각 API 및 API 메서드의 변환 로직을 분리합니다. 구현 블록에서 내보내기 매개변수 EV_HANDLEDX로 설정합니다.

커스텀 변환을 구현하려면 다음 단계를 수행합니다.

  1. /GOOG/BADI_SERIALIZE_JSON에 대해 개선 구현을 만듭니다.

    • API 요청 변환을 위해 구현 클래스가 포함된 BAdI /GOOG/BADI_SERIALIZE_JSON 구현을 만듭니다.
    • API 응답 변환을 위해 구현 클래스가 포함된 BAdI /GOOG/BADI_DESERIALIZE_JSON 구현을 만듭니다.
  2. 변환을 작성해야 하는 API 메서드의 메서드 ID를 확인합니다. 메서드 ID는 다음 항목의 연결로 구성됩니다.

    • 클래스 속성 상수 C_SERVICE_NAME의 값
    • # 문자
    • 변환을 구현해야 하는 API 클래스 메서드에 대한 설명

    예를 들어 Pub/Sub 주제에 메시지를 게시하기 위한 변환을 작성하려는 경우 메서드 ID가 pubsub:v1#pubsub.projects.topics.publish입니다.

  3. BAdI의 메서드 구현에서 다음을 수행합니다.

    1. 메서드 ID에 대해 IF….ENDIF block 아래에 커스텀 변환을 작성합니다.
    2. 내보내기 매개변수 EV_HANDLEDX로 설정합니다.

      EV_HANDLEDX로 설정되지 않았으면 SDK의 기본 마샬링 및 언마샬링 로직이 적용됩니다.

커스텀 변환 로직은 런타임 중에 호출됩니다. 커스텀 변환을 사용할 때는 SDK에 제공된 기본 직렬화 및 역직렬화 로직을 건너뜁니다.

네임스페이스

모든 Google 제공 코드는 예약된 네임스페이스 /GOOG/ 아래에 배치됩니다.

코드 마법사

코드 마법사는 ABAP SDK for Google Cloud에서 제공하는 API 클라이언트 스텁의 모든 공개 메서드에 대한 개발을 가속화하는 데 도움이 됩니다. 코드 마법사는 ABAP 개발에 사용된 pattern 옵션과 비슷합니다. 하지만 ABAP pattern 외에도 코드 마법사가 다음 작업을 지원합니다.

  • 모든 필수 데이터 선언을 생성합니다.
  • 메서드 가져오기 매개변수를 작성하기 위해 코드에 자리 표시자를 제공합니다.
  • 기본 응답 및 예외 처리를 생성합니다.
  • ABAP 7.5 구문 선택, HTTP 연결 열기 및 닫기를 위한 블록 추가 및 제거와 같은 형식으로 추가적인 맞춤설정 및 기능을 제공합니다.
  • 생성된 코드의 복사 옵션을 제공합니다.

코드 마법사는 요구사항에 따라 수정할 수 있는 코드 프레임만 제공합니다. 코드 마법사는 SAP S/4HANA 및 SAP ECC 구문을 모두 지원합니다.

코드 마법사에 액세스하려면 다음 단계를 수행합니다.

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

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

  2. ABAP SDK for Google Cloud > 유틸리티 > 코드 마법사로 이동합니다.

다음 예시는 Pub/Sub 클라이언트 스텁 /GOOG/CL_PUBSUB_V1의 API 메서드 CREATE_TOPICS에 대해 생성된 상용구 코드를 보여줍니다.


 DATA:
   lv_p_projects_id TYPE string,
   lv_p_topics_id   TYPE string,
   ls_input         TYPE /goog/cl_pubsub_v1=>ty_041.

 TRY.

* Open HTTP Connection
     DATA(lo_client) = NEW /goog/cl_pubsub_v1( iv_key_name = 'client_key' ).

* Populate relevant parameters
* lv_p_projects_id = 'string_value'.
* lv_p_topics_id = 'string_value'.
* ls_input = .

* Call API method
     CALL METHOD lo_client->create_topics
       EXPORTING
         iv_p_projects_id = lv_p_projects_id
         iv_p_topics_id   = lv_p_topics_id
         is_input         = ls_input
       IMPORTING
*        es_raw           =
         es_output        = DATA(ls_output)
         ev_ret_code      = DATA(lv_ret_code)
         ev_err_text      = DATA(lv_err_text)
         es_err_resp      = DATA(ls_err_resp).

     IF /goog/cl_http_client=>is_success( lv_ret_code ).
       MESSAGE 'Success' TYPE 'S'.
     ELSE.
       MESSAGE lv_err_text TYPE 'E'.
     ENDIF.

* Close HTTP Connection
     lo_client->close( ).

   CATCH /goog/cx_sdk INTO DATA(lo_exception).
     MESSAGE lo_exception->get_text( ) TYPE 'E'.
 ENDTRY.

지원 받기

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