This is a test message to test the length of the message box.
Login
|
ABAP Tipp POST Request
Erstellt von Software-Heroes

ABAP Tipp - POST Request erzeugen

3660

Wie kannst du ganz leicht einen POST Request auf eine Domain absetzen und das Ergebnis verarbeiten? Wir zeigen dir wie die REST Anbindung ganz leicht funktioniert.

Werbung


Die Durchführung von POST Requests wird normalerweise bei der Ausführung in einem SAP System nicht benötigt, da für die Anbindung von Schnittstellen zahlreiche andere und sicherere Möglichkeiten zur Verfügung stehen. Der folgende Code sollte dir lediglich zum Üben und Ausprobieren dienen.

 

Kernbestandteil

Für den Kern des Aufrufs verwenden wir die folgenden drei Standardklassen von SAP. Mit diesen kannst du die wichtigsten Aufrufe durchführen und das Ergebnis der Anfrage wieder entgegen nehmen:

  • CL_HTTP_CLIENT
  • CL_HTTP_REQUEST
  • CL_HTTP_RESPONSE

 

Durchführung

Für die Anfrage benötigst du zuerst den Client, dem wir schon einmal die Aufruf-URL übergeben. Per Inline-Deklaration können wir den Client direkt bei Rückgabe im Report anlegen.

CONSTANTS c_url TYPE string VALUE `https://software-heroes.com/api/v1/rest-test/partner`.

cl_http_client=>create_by_url( EXPORTING  url                = c_url
                               IMPORTING  client             = DATA(lo_client)
                               EXCEPTIONS argument_not_found = 1
                                          plugin_not_active  = 2
                                          internal_error     = 3
                                          OTHERS             = 4 ).

 

Als nächsten Schritt musst du die Parameter der URL versorgen. In dem Fall der Vorschau API mit der Methode die ausgeführt werden soll und einem Datenpaket welches die Testdaten enthält. Ebenfalls setzen wir die Methode auf POST, damit auch ein POST Request für die API erzeugt wird. Sind alle Daten versorgt, kannst du über den Client den Send absetzen und die Ziel-URL wird aufgerufen.

DATA(ld_data) = |\{| &
                |    "NAME": "SAP",| &
                |    "DESCRIPTION": "Software from Walldorf",| &
                |    "STATUS": "B",| &
                |    "PRICE": 1500.99,| &
                |    "CURRENCY": "EUR"| &
                |\}|.

lo_client->request->set_method( if_http_request=>co_request_method_post ).
lo_client->request->set_header_field( name  = 'Content-Type' value = 'application/json' ).
lo_client->request->set_header_field( name  = 'Swh-API-Key' value = c_key ).
lo_client->request->set_cdata( ld_data ).

lo_client->send( EXCEPTIONS http_communication_failure = 1
                            http_invalid_state         = 2
                            http_processing_failed     = 3
                            OTHERS                     = 4 ).

 

Nach der Anfrage sollte das Ergebnis eingelesen werden. Über die Antwort Instanz können die Daten in Character Form eingelesen werden, die Daten sind dann Lesbar und nicht in binärer Form.

lo_client->receive(
  EXCEPTIONS
    http_communication_failure = 1
    http_invalid_state         = 2
    http_processing_failed     = 3
    OTHERS                     = 4 ).

DATA(ld_stream) = lo_client->response->get_cdata( ).

 

Zum Abschluss der Verarbeitung muss die Verbindung des Client geschlossen werden und ist damit abgeschlossen. Es können aber ebenso weitere Anfragen an die URL geschickt werden, wenn weitere Kommunikation nötig ist.

lo_client->close( ).

Komplettes Beispiel

Hier ist das vollständige Beispiel, von dem oberen Teil. Vielleicht wirst du Probleme haben unseren Endpunkt aufzurufen, weil die System Einstellungen nicht passen oder der Handshake mit dem Backend nicht funktioniert. Hier gibt es auch jede Menge freie REST Endpunkte zum Probieren, wie hier zum Beispiel.

CONSTANTS c_url TYPE string VALUE `https://software-heroes.com/api/v1/rest-test/partner`.
CONSTANTS c_key TYPE string VALUE `66703~97215F268193~65784`.

cl_http_client=>create_by_url( EXPORTING  url                = c_url
                               IMPORTING  client             = DATA(lo_client)
                               EXCEPTIONS argument_not_found = 1
                                          plugin_not_active  = 2
                                          internal_error     = 3
                                          OTHERS             = 4 ).

DATA(ld_data) = |\{| &
                |    "NAME": "SAP",| &
                |    "DESCRIPTION": "Software from Walldorf",| &
                |    "STATUS": "B",| &
                |    "PRICE": 1500.99,| &
                |    "CURRENCY": "EUR"| &
                |\}|.

lo_client->request->set_method( if_http_request=>co_request_method_post ).
lo_client->request->set_header_field( name  = 'Content-Type' value = 'application/json' ).
lo_client->request->set_header_field( name  = 'Swh-API-Key' value = c_key ).

lo_client->request->set_cdata( ld_data ).

lo_client->send( EXCEPTIONS http_communication_failure = 1
                            http_invalid_state         = 2
                            http_processing_failed     = 3
                            OTHERS                     = 4 ).

lo_client->receive( EXCEPTIONS http_communication_failure = 1
                               http_invalid_state         = 2
                               http_processing_failed     = 3
                               OTHERS                     = 4 ).

DATA(ld_stream) = lo_client->response->get_cdata( ).

lo_client->close( ).

 

Fazit

Nach Rückgabe der Anfrage muss das Ergebnis noch entsprechend als JSON oder XML aufbereitet werden, damit der Report die Daten weiter verarbeiten kann. Beim Aufruf unserer Schnittstelle wird das Ergebnis als JSON zurückgegeben. Wie man in SAP einen JSON String in ein richtiges Format überführt, werden wir dir in einem anderen Tipp zeigen.


Enthaltene Themen:
TippPOST Request
Kommentare (0)



Und weiter ...

Bist du zufrieden mit dem Inhalt des Artikels? Wir posten jeden Dienstag und Freitag neuen Content im Bereich ABAP und unregelmäßig in allen anderen Bereichen. Schaue bei unseren Tools und Apps vorbei, diese stellen wir kostenlos zur Verfügung.


DDIC der Zukunft (Vergleich)

Kategorie - ABAP

Wie geht es eigentlich mit dem DDIC in Zukunft weiter und können wir schon Heute die neuen Features für uns nutzen? In diesem Teil vergleichen wir die Welt von Heute mit der von Morgen und wo du alle Features findest.

03.07.2026

DDIC der Zukunft (Morgen)

Kategorie - ABAP

Wie geht es eigentlich mit dem DDIC in Zukunft weiter und können wir schon Heute die neuen Features für uns nutzen? In diesem Teil werfen wir ein Blick auf Morgen und wie uns CDS Artefakte bei der Modellierung helfen.

30.06.2026

DDIC der Zukunft (Heute)

Kategorie - ABAP

Wie geht es eigentlich mit dem DDIC in Zukunft weiter und können wir schon Heute die neuen Features für uns nutzen? In diesem Teil schauen wir auf den aktuellen Zustand des Dictionary in ABAP.

26.06.2026

ABAP in der Praxis - News App verwenden

Kategorie - ABAP

In diesem Praxisbeispiel schauen wir uns an, wie wir die neue News App im ABAP Environment mit Informationen bestücken können. Dabei analysieren wir die aktuelle ABAP Auslieferung der Anwendung und des Services, um das korrekte Format zu finden.

31.03.2026

ABAP in der Praxis - Objekt Generator

Kategorie - ABAP

In diesem Beispiel schauen wir uns an, wie wir mit der XCO Bibliothek einen wiederverwendbaren Generator erstellen, um uns für unsere Tutorials etwas Arbeit zu sparen und automatisiert DDIC Objekte zu generieren.

09.01.2026