Anwendungsentwicklung mit der lokalen oder einer beliebigen Cloud-Version des ABAP SDK for Google Cloud

Dieses Dokument enthält nützliche Informationen und Ressourcen, mit denen Sie SAP-Anwendungen mit der lokalen oder einer beliebigen Cloud-Edition des ABAP SDK for Google Cloud entwickeln können.

Dieses Dokument richtet sich an SAP ABAP-Entwickler.

Eine vollständige Liste der Clientbibliotheken, die die lokale oder eine Cloud-Version des ABAP SDK for Google Cloud bereitstellt, finden Sie unter Lokale oder Cloud-Version des ABAP SDK for Google Cloud-Clientbibliotheken.

Einzelfenster der Interaktion

Jede Google Cloud API, die im ABAP SDK for Google Cloud aktiviert ist, wird durch eine ABAP-Klasse dargestellt, die im Paket /GOOG/CLIENT enthalten ist. Eine ABAP-Klasse besteht aus mehreren öffentlichen Methoden und jede dieser öffentlichen Methoden entspricht einer Google Cloud API-Methode. Jede öffentliche Methode besteht außerdem aus den Parametern IMPORTING und EXPORTING. Eine ABAP-Klasse enthält auch benutzerdefinierte Datentypen, mit denen die Parameter IMPORTING und EXPORTING erstellt und zugeordnet werden können. Diese benutzerdefinierten Datentypen ordnen sich den API-Schemadefinitionen zu.

Bei jeder Interaktion mit einer Google Cloud-Ziel-API dient die entsprechende ABAP-Klasse als einziger Interaktionspunkt. Wir bezeichnen dieses Konzept als Einzelfenster der Interaktion, das alle zugrunde liegenden Komplexitäten der Interaktion mit einer Google Cloud API abschirmt und eine vereinfachte Benutzeroberfläche darstellt. Dank dieser vereinfachten Schnittstelle können Sie sich auf die Entwicklung der mit dem SDK entwickelten Geschäftslösungen konzentrieren, ohne sich um die zugrunde liegenden SDK-Features kümmern zu müssen.

Einzelfenster der Interaktion

Interaktionsablauf

Für den Aufruf einer API-Methode verfügen Sie über den folgenden Interaktionsablauf:

  1. Verbinden Sie sich mit einer API.
  2. Erstellen Sie eine Eingabeanfrage mit den ABAP-Typen.
  3. Rufen Sie eine API-Methode auf.
  4. Parsen Sie Fehler und Ausnahmen.
  5. Lesen Sie die Antwort mit den ABAP-Typen.

Entwicklerinteraktion

API-Client-Stub

Eine typische API-Client-Stub-Klasse besteht aus den folgenden Abschnitten:

  • Die ABAP-Typen, die den API-Schemas zugeordnet sind. Sie verwenden ABAP-Typen, um eine Eingabeanfrage zu erstellen und die Antwort zu parsen.
  • Die Konstanten und Attribute für die interne oder externe Nutzung.
  • Die API-Methoden für die Interaktion mit API-Ressourcen.

Klassenstruktur

Features

Das ABAP SDK for Google Cloud hat folgende Features:

  • HTTP-Kommunikation: das SDK stellt eine HTTP-Verbindung zu den API-Endpunkten her.
  • Anfrage-Marshaling: das SDK konvertiert Daten in ABAP-Typen in JSON-Nutzlast, die als Anfragetext gesendet wird.
  • Verarbeitung von Fehlern und Ausnahmen: das SDK verarbeitet die von der API zurückgegebenen Rückgabecodes und Fehlermeldungen und löst gegebenenfalls Ausnahmen aus.
  • Unmarshalling-Antwort: das SDK konvertiert die JSON-Nutzlast im Antworttext in die entsprechenden ABAP-Typen zurück.
  • Lokales Fehler-Logging: das SDK protokolliert Fehlermeldungen mithilfe des Logging-Frameworks.

API-Design und API Explorer

Von Google veröffentlichte APIs folgen einem ressourcenorientierten Design. Weitere Informationen zum API-Design von Google finden Sie in der API-Designanleitung.

Das ABAP SDK for Google Cloud ermöglicht die Einbindung in die von Google veröffentlichten REST-basierten APIs.

Der API Explorer ist ein Tool, mit dem Sie Google Cloud API-Methoden testen können, ohne Code zu schreiben. Verwenden Sie dieses Tool, um die APIs und die erforderlichen Eingabeparameter zu untersuchen, die Sie an die entsprechenden ABAP-Methoden übergeben möchten.

Codekonstrukte

Erläutert die Codekonstrukte, die Sie zum Erstellen Ihrer ABAP-Programme mit dem ABAP SDK for Google Cloud verwenden.

Constructor

Zuerst instanziieren Sie die API-Klasse, die Sie verwenden möchten. Der Konstruktor jeder API-Klasse hat ein ähnliches Muster wie im folgenden Beispiel:

    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

Parameter importieren

In der folgenden Tabelle werden die Importparameter eines Methodenkonstruktors erläutert:

Parametername Typ Erforderlich/Optional Beschreibung
iv_key_name /GOOG/KEYNAME Erforderlich Geben Sie den Clientschlüssel aus der Konfiguration an, die Sie zum Erstellen einer Verbindung zu Google Cloud verwenden. Informationen zur Konfiguration des Clientschlüssels finden Sie unter Authentifizierung.
iv_log_object balobj_d Optional Geben Sie das Anwendungslog-Objekt an, mit dem Sie die vom SDK generierten Fehler speichern. Informationen zur Logging-Konfiguration finden Sie unter Anwendungs-Logging.
iv_log_subobject balsubobj Optional Geben Sie das Anwendungslog-Unterobjekt an, mit dem Sie die vom SDK generierten Fehler speichern. Informationen zur Logging-Konfiguration finden Sie unter Anwendungs-Logging.

API-Methode

Beim ressourcenorientierten Design von Google Cloud APIs ist eine API-Methode eine Aktion, die für eine von der API veröffentlichte Ressource ausgeführt werden kann.

Wenn beispielsweise Topics eine Ressource ist, die von der Pub/Sub API veröffentlicht wird, dann ist topics.get eine API-Methode, die eine Aktion für die Ressource Topics darstellt, um die Konfiguration eines Themas abzurufen.

Informationen zum Zuordnen einer ABAP-Klassenmethode zu einer API-Methode finden Sie in der Methodenbeschreibung, die dem folgenden Muster folgt:<resource>.<method_verb>.

Die Methodenbeschreibung für eine Pub/Sub-Methode lautet beispielsweise pubsub.projects.topics.get.

  • projects.topics: der Ressourcenname.
  • get: die Methodenaktion.

SAP-Benutzeroberfläche mit der Methodenbeschreibung

Der Name einer ABAP-Methode, die einer API-Aktion zugeordnet ist, folgt dem folgenden Muster:<method_verb>_<resource>.

Ein ABAP-Methodenname für Pub/Sub lautet beispielsweise: GET_TOPICS.

  • GET: die Methodenaktion.
  • TOPICS: der Ressourcenname.

Eine ABAP-Methode besteht aus den folgenden Abschnitten, die den REST API-Methoden zugeordnet sind:

Methodenname

Parameter importieren

Eine API-Methode kann die folgenden Importparameter haben. Diese Parameter sind optional. Sie können die Parameter basierend auf den Anforderungen einer API-Methode übergeben, die Sie verwenden müssen.

Parametername Typ Kategorie Beschreibung

iv_q_<name>

(0 bis n)

String Abfrageparameter

Die Abfrageparameter werden an den API-Endpunkt nach (?) angehängt.

Sie werden zum Definieren der Sortierung, der Paginierung oder des Filters verwendet.

Es können 0 bis n Abfrageparameter vorhanden sein.

iv_p_<name>

(0 bis n)

String Pfadparameter

Die Pfadparameter sind Teil des Endpunkts.

Sie werden verwendet, um auf bestimmte REST API-Ressourcen zu verweisen.

Es können 0 bis n Pfadparameter vorhanden sein.

is_input

(0 bis 1)

TY_CODE (Klassentyp) Eingabestrukturparameter

Die als Anfragetext übergebenen Daten können mithilfe der Eingabestruktur zugeordnet werden.

Die REST API akzeptiert die JSON-Nutzlast als Anfragetext. Der Parameter ist ein vollständig typisierter Parameter, der in die JSON-Nutzlast der API-Klasse konvertiert wird und der Entwickler muss nicht mit JSON arbeiten.

Informationen zu den ABAP-Typen zum Zuordnen der Daten finden Sie in den verfügbaren Klassentypen. Beispiel: Der Typ /GOOG/CL_PUBSUB_V1=>TY_041 ist der REST-Ressource Thema zugeordnet, die als JSON-Nutzlast an die Methode CREATE_TOPICS übergeben wird.

Eine Methode kann maximal einen Anfragetextparameter haben. Einige Methoden haben keinen Anfragetext.

Parameter exportieren

Eine API-Methode unterstützt folgende Exportparameter:

Parametername Typ Kategorie Beschreibung
es_raw daten Rohausgabe

Dieser Parameter enthält die von der API-Methode zurückgegebene JSON-Antwort (Fehler oder Erfolg). Ordnen Sie diesen Parameter einer Variable des Typs String zu, um den JSON-Antwortstring zu erhalten.

In Fällen, in denen die Antwort einen anderen Typ hat, z. B. xstring für die Dateiausgabe in /goog/cl_storage_v1->get_objects( ), gibt der Parameter einen entsprechenden Wert zurück.

Verwenden Sie diesen Parameter für erweiterte Szenarien der Fehlerbehebung oder für erweiterte API-Szenarien.

es_output TY_CODE (Klassentyp) Ausgabestruktur

Die JSON-Antwort wird in die ABAP-Struktur deserialisiert und mit diesem typisierten Exportparameter zurückgegeben.

Sie können diese Methode als primäre Methode verwenden, um die API-Antworten mithilfe von ABAP-Konstrukten zu lesen.

ev_ret_code I (Ganzzahl) Rückgabecode

Der Rückgabecode, mit dem Sie prüfen können, ob die API-Methodenausführung erfolgreich ihre Funktionalität ausführen konnte.

Weitere Informationen finden Sie unter API-Rückgabecodes, Fehler und Ausnahmen.

ev_err_text String Fehlertext

Wenn der Methodenaufruf fehlgeschlagen ist, enthält dieser Parameter die Fehlermeldung, mit der Sie den Grund für den Fehler ermitteln.

Weitere Informationen finden Sie unter API-Rückgabecodes, Fehler und Ausnahmen.

ev_err_resp
  • Fehlertyp = CHAR 60
  • Fehlerbeschreibung = STRING
Fehlerantwort

Der Parameter enthält zusätzliche Informationen zum Fehler.

Weitere Informationen finden Sie unter API-Rückgabecodes, Fehler und -Ausnahmen.

Klassentyp

Google Cloud APIs verwenden JSON als primäres Format für den Datenaustausch. Das ABAP SDK for Google Cloud bietet ABAP-Typen, die dem JSON-Schema zugeordnet sind, das von den Google Cloud APIs erwartet wird.

Diese ABAP-Typen und die zugehörigen Tabellentypen sind als Klassentypen in jeder vom SDK bereitgestellten API-Klasse verfügbar.

Das folgende Beispiel zeigt den Klassentyp für die Pub/Sub API-Klasse /GOOG/CL_PUBSUB_V1.

Klassentyp

Die Beschreibung des Klassentyps TY_041 unter /GOOG/CL_PUBSUB_V1 wird der REST-Ressource Topic zugeordnet, die als JSON-Nutzlast an die Methode CREATE_TOPICS übergeben wird.

ABAP Doc-Kommentare werden allen Client-API-Klassen hinzugefügt. Wenn Sie ABAP-Entwicklertools für SAP NetWeaver (ADT) für die Entwicklung verwenden, enthalten diese Kommentare Beschreibungen der Klassentypen.

API-Rückgabecodes, Fehler und Ausnahmen

Wenn beim Aufruf der API-Methode der ABAP-Klasse ein Fehler auftritt, übergibt das ABAP SDK for Google Cloud die Fehlerinformationen mithilfe der SDK-Exportparameter oder durch Auslösen von Ausnahmen an das aufrufende Programm.

Name der Rückgabeantwort

API-Rückgabecode und Fehler

Google Cloud APIs verwenden ein Fehlermodell, das eine konsistente Nutzererfahrung über verschiedene APIs hinweg bietet. Wenn eine Google Cloud API-Methode aus dem SDK aufgerufen wird, enthalten die folgenden Parameter den Rückgabecode und die Nachrichten der API:

Verwenden Sie die Methode IS_SUCCESS, um den Status eines API-Aufrufs zu prüfen. Sie können den Wert von ev_ret_code verwenden, um festzustellen, ob ein API-Aufruf erfolgreich war. Falls ev_ret_code = 2XX zutrifft, gilt der Methodenaufruf im Allgemeinen als erfolgreich. Bei allen anderen Werten wird der Methodenaufruf als nicht erfolgreich eingestuft.

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

Für einige Google Maps Platform APIs gibt die API einen HTTP-Erfolgsstatuscode 2XX mit einer Fehlermeldung und einem Fehlerstatus zurück, wenn Sie eine API mit ungültigen Eingaben aufrufen, anstatt eines HTTP-Fehlerstatuscodes (4XX oder 5XX). Diese Fehlermeldung und der Fehlerstatus in der API-Antwort können Ihnen bei der Fehlersuche helfen und ungültige Eingaben beheben.

Prüfen Sie für solche Google Maps Platform APIs zusätzlich zum Rückgabecode ev_ret_code die Fehlermeldung und den Fehlerstatus, die in der API-Antwort zurückgegeben werden. Rufen Sie dazu die Methode IS_STATUS_OK nach der API auf. Das folgende Snippet zeigt ein Beispiel für die Verwendung der Methode IS_STATUS_OK:

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

Der Parameter es_err_resp enthält zusätzliche Informationen zum Fehler. In der folgenden Tabelle werden die Felder im Parameter es_err_resp erläutert.

Feld Wert
es_err_resp-error_description Von der API empfangene Fehlermeldung. Dieser Wert entspricht dem Parameter ev_error_text.
es_err_resp-error Vom SAP-HTTP-Client zurückgegebene HTTP-Statusbeschreibung.

Umgang mit Fehlern, die von Google Cloud APIs zurückgegeben werden

Verwenden Sie die folgende Anleitung zur Behandlung der von Google Cloud APIs zurückgegebenen Fehler:

  • Häufig auftretende Fehlercodes: Informationen zu häufigen Fehlern, die von Google Cloud APIs zurückgegeben werden, sowie deren Ursache finden Sie unter Fehlercodes.

  • Detaillierten Fehler erfassen: Verwenden Sie den Exportparameter es_raw aus den SDK-Klassenmethoden und ordnen Sie diesen Parameter zu, um detaillierte Fehlerinformationen mit dem ABAP SDK für Google Cloud für eine Variable vom Typ String zu erfassen. Diese Variable enthält eine JSON-Antwort mit detaillierten Fehlermeldungen und bestimmten Verstößen, die von den APIs auftreten.

  • Detaillierte Fehler ansehen: Verwenden Sie eine der folgenden Methoden, um detaillierte Fehlerinformationen aufzurufen:

    • Debugger: Rufen Sie den Inhalt der Variablen auf, die die JSON-Antwort im ABAP-Debugger-Tool enthält, um weitere Analysen durchzuführen.
    • SAP-GUI: Verwenden Sie die ABAP-Klasse cl_demo_output=>display( lv_response ) zur visuellen Darstellung des Fehlers in einem Berichtsprogramm. Verwenden Sie die ABAP-Klasse cl_demo_output=>display_json( lv_response ), wenn Sie die API-Methoden in einem Berichtsprogramm verwenden und die Programmausführung im Vordergrundmodus erfolgt.

      Das folgende Code-Snippet zeigt, wie die API-Antwort bei einem Fehler angezeigt wird:

      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-spezifische Dokumentation: Einige Google Cloud APIs enthalten detaillierte Fehlerinformationen und Anleitungen zur Fehlerbehebung in der jeweiligen Dokumentation. Informationen zum Beheben eines Fehlers im Zusammenhang mit einer API finden Sie in der Dokumentation zu dieser API, z. B. Pub/Sub, Document AI und Cloud Storage.

Ausnahmen

Wenn während eines API-Methodenaufrufs ein unerwarteter Fehler auftritt, z. B. eine falsche SDK-Konfiguration oder ein HTTP-Kommunikationsfehler, löst das SDK eine Klassenausnahme vom Typ /GOOG/CX_SDK aus. Sie müssen diese Ausnahme im Code abfangen und eine entsprechende Fehlerbehandlungslogik schreiben.

Ausnahme behandeln

Sie können die Fehlermeldung abrufen, indem Sie die Methode get_text der Ausnahmeklasse aufrufen. Die von der Ausnahmeklasse zurückgegebene Fehlermeldung hat folgendes Format:

/GOOG/MSG : Return_Code - Error_Message

Die Ursache des Fehlers und der Schritte zur Lösung hängt vom Wert von Return_Code ab.

Wert von Return_Code Fehlerursache Lösung
461 Das ABAP SDK for Google Cloud verwendet den speziellen Rückgabecode 461, um anzugeben, dass ein bestimmter Installations- und Konfigurationsschritt nicht ausgeführt oder falsch abgeschlossen wurde. Eine entsprechende Error_Message enthält weitere Details zum Fehler. Lesen Sie die Installations- und Konfigurationsanleitungen für das SDK sorgfältig und sorgen Sie dafür, dass sie ordnungsgemäß ausgeführt werden.
Beliebiger anderer Wert Dieser Rückgabecode ist der letzte HTTP-Fehler der Standard-SAP-HTTP-Clientklasse. Dieser Fehler weist darauf hin, dass beim Aufrufen einer Google REST API-Methode beim SAP ICM ein Kommunikationsproblem aufgetreten ist. Prüfen Sie Ihre Netzwerk-, Firewall- und SAP ICM-Einstellungen sorgfältig und achten Sie darauf, dass Konfigurationen HTTP-Aufrufe an Google Cloud APIs zulassen.

Typische Fehlermeldungen, die im ABAP SDK for Google Cloud ausgelöst werden, sowie deren Lösung finden Sie in der Anleitung zur Fehlerbehebung.

Logging

Mit dem ABAP SDK for Google Cloud können Sie Fehlermeldungen mithilfe eines eingebetteten Logging-Frameworks protokollieren. Das Logobjekt ZGOOG und das Unterobjekt ZABAP_SDK werden mit den SDK-Transportdateien bereitgestellt, die Sie als Standardobjekte für Logkonfigurationen verwenden können.

Als Entwickler können Sie Ihre eigenen benutzerdefinierten Logobjekte und -unterobjekte übergeben, während Sie den API-Client-Stub instanziieren. Dies erfordert eine zusätzliche Konfiguration, die das SDK anweist, Ihre benutzerdefinierten Logobjekte anstelle des standardmäßigen Logobjekts und -unterobjekts zu verwenden.

Das folgende Beispiel zeigt einen Aufrufcode mit übergebenem benutzerdefiniertem Logobjekt und -unterobjekt:

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.

Weitere Informationen zum Konfigurieren von Logging und zum Erstellen benutzerdefinierter Logobjekte finden Sie unter Anwendungs-Logging.

Datentypzuordnung

Die folgende Tabelle enthält eine vollständige Liste der type und format-Werte, die vom Google APIs Discovery Service und dem entsprechenden ABAP-Datentyp unterstützt werden.

Weitere Informationen zu den vom Google APIs Discovery Service unterstützten type- und format-Werten finden Sie unter Zusammenfassung von Typen und Formaten.

Typwert Formatwert ABAP-Datentyp Bedeutung
Beliebig TYPE REF TO DATA Das Attribut kann einen beliebigen Typ haben. Wird durch die JSON-Schemaspezifikation definiert.
array TABLE TYPE WITH NON UNIQUE KEYS Ein JavaScript-Array von Werten. Das Element „items“ gibt das Schema für die Arraywerte an. Wird durch die JSON-Schemaspezifikation definiert.
boolean ABAP_BOOL Ein boolescher Wert, entweder "true" oder "false". Wird durch die JSON-Schemaspezifikation definiert.
integer int32 INT4 Eine vorzeichenbehaftete 32-Bit-Ganzzahl. Sie hat einen Mindestwert von -2.147.483.648 und einen maximalen Wert von 2.147.483.647 (einschließlich).
integer uint32 INT4 Eine vorzeichenlose 32-Bit-Ganzzahl. Sie hat einen Mindestwert von 0 und einen maximalen Wert von 4.294.967.295 (einschließlich).
Zahl double /GOOG/NUM_DOUBLE (string) Eine 64-Bit-IEEE 754-Gleitkommazahl mit doppelter Genauigkeit.
Zahl float /GOOG/NUM_FLOAT (string) Eine 32-Bit-IEEE 754-Gleitkommazahl mit einfacher Genauigkeit.
Objekt TYPES Ein JavaScript-Objekt. Wird durch die JSON-Schemaspezifikation definiert.
String STRING Ein beliebiger String. Wird durch die JSON-Schemaspezifikation definiert.
String Byte STRING Ein aufgefüllter base64-codierter String aus Byte, der mit einem URL-sicheren und Dateinamen-sicheren Alphabet (auch als "web-safe" oder "base64url" bezeichnet) codiert ist. Definiert durch RFC 4648.
String Datum STRING Ein RFC3339-Datum im Format JJJJ-MM-TT. Wird in der JSON-Schemaspezifikation definiert.
String date-time STRING Ein RFC 3339-Zeitstempel in UTC-Zeit. Im Format JJJJ-MM-TTTHH:mm:ss.SSSZ. Der Millisekundenteil (".SSS") ist optional. Wird in der JSON-Schemaspezifikation definiert.
String google-datetime STRING Ein RFC 3339-Zeitstempel in UTC-Zeit. Im Format JJJJ-MM-TTTHH:mm:ss.SSSZ. Der Millisekundenteil (".SSS") ist optional.
String google-duration STRING Ein String endet mit dem Suffix "s" (in Sekunden), wobei die Anzahl von Sekunden vorangestellt wird. Dabei werden die Nanosekunden als Sekundenbruchteile angegeben. Der Punkt wird immer als Dezimalzeichen verwendet, nicht das Komma.
String google-fieldmask STRING Ein String, bei dem Feldnamen durch ein Komma getrennt sind. Feldnamen werden
in Namenskonventionen mit kleingeschriebener Camel-Case-Schreibweise dargestellt.
String int64 STRING Eine vorzeichenbehaftete 64-Bit-Ganzzahl. Sie hat einen Mindestwert von -9.223.372.036.854.775.808 und einen Höchstwert von 9.223.372.036.854.775.807 (einschließlich).
String uint64 STRING Eine vorzeichenlose 64-Bit-Ganzzahl. Sie hat einen Mindestwert von 0 und einen Höchstwert von (2^64)-1 (einschließlich).

Demoprogramme

Das ABAP SDK for Google Cloud enthält mehrere Demoprogramme, die Ihnen zeigen, wie Sie Google-Dienste mit dem SDK nutzen. Die Demoprogramme befinden sich im Paket /GOOG/DEMO.

Die Demoprogramme umfassen eine Vielzahl von Google-Diensten, z. B.:

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

Die Demoprogramme sind eine gute Möglichkeit, um mehr über die Verwendung des ABAP SDK for Google Cloud zu erfahren. Sie eignen sich außerdem hervorragend zum Testen Ihrer Konfiguration. Die Programmdokumentation mit Demos enthält zusätzliche Details zu jeder Demo.

Führen Sie die folgenden Schritte aus, um auf die Demoprogramme zuzugreifen:

  1. Führen Sie in der SAP-GUI den Transaktionscode /GOOG/SDK_IMG aus.

    Alternativ können Sie den Transaktionscode SPRO ausführen und dann auf SAP-Referenz-IMG klicken.

  2. Gehen Sie zu ABAP SDK for Google Cloud > Demos.

Serialisierung und Deserialisierung von API-Anfragen und -Antworten

Das ABAP SDK for Google Cloud übernimmt standardmäßig das Marshalling und Unmarshalling von API-Anfragen und -Antworten. Jede ABAP-Klasse für eine Google Cloud API hat eingebettete ABAP-Typen, um die Eingabe und Ausgabe der Methoden zu bilden. Zur Implementierung einer benutzerdefinierten Transformation von Anfrage und Antwort können Sie den Optimierungsspot mit SAP BAdI-Definitionen (Business Add-In) verwenden, die mit dem SDK geliefert werden.

Benutzerdefinierte Transformation implementieren

Der mit dem SDK gelieferte Optimierungsspot /GOOG/ES_TRANSFORM_JSON enthält die folgenden BAdI-Definitionen:

  • /GOOG/BADI_SERIALIZE_JSON: zum Implementieren der benutzerdefinierten Serialisierungslogik.
  • /GOOG/BADI_DESERIALIZE_JSON: zum Implementieren der benutzerdefinierten Deserialisierungslogik.

Sie können eine spezifische Transformationslogik in Implementierungen dieser BAdIs schreiben. Die Schnittstellen dieser BAdIs haben IV_METHOD_NAME als Importparameter. Mit diesem Parameter trennen Sie die Transformationslogik für jede API und API-Methode mithilfe von IF…ENDIF-Blöcken. Legen Sie im Implementierungsblock den Exportparameter EV_HANDLED auf X fest.

So implementieren Sie die benutzerdefinierte Transformation:

  1. Erstellen Sie für /GOOG/BADI_SERIALIZE_JSON eine Optimierungsimplementierung:

    • Zur Transformation von API-Anfragen erstellen Sie eine Implementierung für BAdI /GOOG/BADI_SERIALIZE_JSON mit einer Implementierungsklasse.
    • Zum Transformieren von API-Antworten erstellen Sie eine Implementierung für BAdI /GOOG/BADI_DESERIALIZE_JSON mit einer Implementierungsklasse.
  2. Ermitteln Sie die Methoden-ID der API-Methode, für die Sie die Transformation schreiben müssen. Die Methoden-ID ist eine Verkettung aus folgenden Elementen:

    • Der Wert der Klassenattributkonstante C_SERVICE_NAME.
    • Das Zeichen #.
    • Die Beschreibung der API-Klassenmethode, für die Sie die Transformation implementieren müssen.

    Wenn Sie beispielsweise Transformationen zum Veröffentlichen von Nachrichten in einem Pub/Sub-Thema schreiben möchten, lautet die Methoden-ID pubsub:v1#pubsub.projects.topics.publish.

  3. Führen Sie bei der Methodenimplementierung des BAdI folgende Schritte aus:

    1. Schreiben Sie als Methoden-ID Ihre benutzerdefinierte Transformation unter einem IF….ENDIF block.
    2. Legen Sie für den Exportparameter EV_HANDLED den Wert X fest.

      Wenn EV_HANDLED nicht auf X eingestellt ist, wird die Standard-Marshalling- und Unmarshalling-Logik des SDK angewendet.

Die benutzerdefinierte Transformationslogik wird während der Laufzeit aufgerufen. Wenn Sie benutzerdefinierte Transformationen verwenden, wird die mit dem SDK gelieferte Standardlogik für Serialisierung und Deserialisierung übersprungen.

Namespace

Der gesamte von Google bereitgestellte Code wird im reservierten Namespace /GOOG/ abgelegt.

Codeassistent

Der Codeassistent hilft Ihnen, die Entwicklung für alle öffentlichen Methoden der API-Client-Stubs zu beschleunigen, die vom ABAP SDK for Google Cloud bereitgestellt werden. Der Codeassistent ähnelt der Option pattern, die in der ABAP-Entwicklung verwendet wird. Neben der ABAP-pattern liefert der Codeassistent jedoch auch durch folgende Maßnahmen Unterstützung:

  • Generiert alle erforderlichen Datendeklarationen.
  • Stellt Platzhalter im Code zum Erfassen von Importparametern von Methoden bereit.
  • Generiert eine grundlegende Antwort- und Ausnahmeverarbeitung.
  • Bietet zusätzliche Anpassungen und Funktionen in Form der Auswahl der ABAP 7.5-Syntax. Dabei werden Blöcke zum Öffnen und Schließen von HTTP-Verbindungen hinzugefügt und entfernt.
  • Bietet eine Kopieroption für den generierten Code.

Der Codeassistent bietet nur einen Codeframe, den Sie gemäß Ihren Anforderungen ändern können. Der Codeassistent unterstützt sowohl SAP S/4HANA als auch die SAP ECC-Syntax.

Führen Sie die folgenden Schritte aus, um auf den Codeassistenten zuzugreifen:

  1. Führen Sie in der SAP-GUI den Transaktionscode /GOOG/SDK_IMG aus.

    Alternativ können Sie den Transaktionscode SPRO ausführen und dann auf SAP-Referenz-IMG klicken.

  2. Gehen Sie zu ABAP SDK for Google Cloud > Dienstprogramme > Codeassistent.

Das folgende Beispiel zeigt den Boilerplate-Code, der für die API-Methode CREATE_TOPICS des Pub/Sub-Client-Stubs /GOOG/CL_PUBSUB_V1 erstellt wurde:


 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.

Support kontaktieren

Wenn Sie Hilfe bei der Behebung von Problemen mit dem ABAP SDK für Google Cloud benötigen, gehen Sie so vor: