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.
Interaktionsablauf
Für den Aufruf einer API-Methode verfügen Sie über den folgenden Interaktionsablauf:
- Verbinden Sie sich mit einer API.
- Erstellen Sie eine Eingabeanfrage mit den ABAP-Typen.
- Rufen Sie eine API-Methode auf.
- Parsen Sie Fehler und Ausnahmen.
- Lesen Sie die Antwort mit den ABAP-Typen.
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.
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.
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:
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> ( |
String | Abfrageparameter | Die Abfrageparameter werden an den API-Endpunkt nach ( Sie werden zum Definieren der Sortierung, der Paginierung oder des Filters verwendet. Es können |
iv_p_<name> ( |
String | Pfadparameter | Die Pfadparameter sind Teil des Endpunkts. Sie werden verwendet, um auf bestimmte REST API-Ressourcen zu verweisen. Es können |
is_input ( |
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 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 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 |
|
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
.
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.
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:
ev_ret_code
: Rückgabe- oder Fehlercode in der Antwort.ev_error_text
: Fehlermeldung in der Antwort, falls vorhanden.es_raw
: Rohfehlerantwort, wenn ein API-Methodenaufruf fehlgeschlagen ist.
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 TypString
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-Klassecl_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.
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:
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.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:
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.
- Zur Transformation von API-Anfragen erstellen Sie eine Implementierung für BAdI
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
.- Der Wert der Klassenattributkonstante
Führen Sie bei der Methodenimplementierung des BAdI folgende Schritte aus:
- Schreiben Sie als Methoden-ID Ihre benutzerdefinierte Transformation unter einem
IF….ENDIF block
. Legen Sie für den Exportparameter
EV_HANDLED
den WertX
fest.Wenn
EV_HANDLED
nicht aufX
eingestellt ist, wird die Standard-Marshalling- und Unmarshalling-Logik des SDK angewendet.
- Schreiben Sie als Methoden-ID Ihre benutzerdefinierte Transformation unter einem
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:
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.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:
Weitere Informationen finden Sie im Leitfaden zur Fehlerbehebung für ABAP SDK für Google Cloud.
In den Cloud-Foren können Sie Ihre Fragen stellen und über die ABAP SDK für Google Cloud mit der Community sprechen.
Erfassen Sie alle verfügbaren Diagnoseinformationen und wenden Sie sich an Cloud Customer Care. Informationen zur Kontaktaufnahme mit Customer Care finden Sie unter Support für SAP in Google Cloud.