POST Request mit "Eingabemaske" an eine REST API

Getting started ... Alles für einen gelungenen Start.
6 Beiträge • Seite 1 von 1
6 Beiträge Seite 1 von 1

POST Request mit "Eingabemaske" an eine REST API

Beitrag von sap_koun (ForumUser / 29 / 24 / 0 ) »
Hi SAPler,

ich habe ein Programm geschrieben, dass erfolgreich REST Aufrufe an meinen Heimserver machen kann (dort läuft eine Anwendung, die die REST-API bereitstellt).

Den erfolgreichen Aufruf kriege ich in JSON zurück. Dieser wird konvertiert und in eine interne Tabelle geschrieben. Soweit, so gut!

Ich möchte jetzt einen POST Request machen.
Die Eingabe der Daten soll über eine Eingabemaske (DynPro) erfolgen und in
eine JSON umgewandelt und dann an die REST-API verschickt werden.

Die Antwort soll erstmal "irgendwie" dargestellt werden (wahrscheinlich wieder interne Tabelle erstmal).

Wie mache ich das am besten? (Anbei, ein Screenshot des Layouts)

Wie verknüpfe ich die Buttons mit einer Funktion dahinter?

Ich habe mich an einem Drop-Down-Feld (listbox) versucht und herausgefunden, dieses muss gerade bei Währungen speziell gefüllt werden. Eine Währungstabelle habe ich extra angelegt, mit CURR und CUKY, und dann im PBO versucht diese zu füllen. Hat aber nicht funktioniert:



PROCESS BEFORE OUTPUT.

MODULE STATUS_0100.


CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
ID = CURRENCY
values = lt_value.

PROCESS AFTER INPUT.
MODULE USER_COMMAND_0100.

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: POST Request mit "Eingabemaske" an eine REST API

Beitrag von sap_koun (ForumUser / 29 / 24 / 0 ) »
EDIT:

Eine Frage zu meiner Vorgehensweise:

Sollte ich mich vielleicht vorher entscheiden zwischen ABAP Programm oder DynPro Programm? Und nicht durchmischen? Ernste Frage :)

Re: POST Request mit "Eingabemaske" an eine REST API

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
sap_koun hat geschrieben:
06.06.2022 15:53
Sollte ich mich vielleicht vorher entscheiden zwischen ABAP Programm oder DynPro Programm? Und nicht durchmischen? Ernste Frage :)
Zur Klarstellung:
Ein Dynpro ist eine von mehreren "Oberflächen" zu einem ABAP-Programm. Andere (auf HTML basierende) wären BSP, SAPui, Webdynpro usw.

Für ein Dynpro BRAUCHT man den SAPgui als Client für die Darstellung. Die anderen genannten kann man auch mit einem Webbrowser (oder dem Business Client) aufrufen.

So, um nun mit einem Dynpro die Daten mit dem ABAP-Programm austauschen zu können, musst du für die Feldnamen am Dynpro DIESELBEN Namen wie die (globalen) Variablen in deinem ABAP-Programm verwenden damit die Eingaben vom bzw. die Ausgaben an den Benutzer funktionieren. Das wird aber eigentlich in jeder besseren ABAP/Dynpro Grundschulung bzw. in diversen (Online-)Hilfen hinglänglich beschrieben und daher werde ich hier nicht mehr näher darauf eingehen. Da du ja offensichtlich bereits mit CL_HTTP_CLIENT oder CL_REST_HTTP_CLIENT umzugehen weist, sollte der Hinweis mit der Namensgleichheit auch völlig ausreichend sein.
Mit dem Funktionscode (bei den Buttons einstellbar) funktioniert das genauso. Das Dynprofeld dafür kannst du selbst als "OK-Code" im Dynpro festlegen. Sobald der Benutzer auf den Button klickt wird PAI/PBO ausgelöst und in deinem ABAP Programm findest du den Funktionscode in der Variable zum OK-Code-Feld.

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag (Insgesamt 2):
sap_kounIcke0801

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: POST Request mit "Eingabemaske" an eine REST API

Beitrag von Tron (Top Expert / 1327 / 35 / 332 ) »
Moin.
Für den Fall das Du lieber flexibel sein möchtest bei der Eingabe Oberfläche,
empfehle ich
https://www.bb1.j-gun.de/viewtopic.php?f=40&t=20633
genauer :

Code: Alles auswählen.

 CLEAR gv_ok_code.
  CALL FUNCTION 'POPUP_GET_VALUES_USER_BUTTONS'
    EXPORTING
*     F1_FORMNAME       = ' '
*     F1_PROGRAMNAME    = ' '
*     F4_FORMNAME       = ' '
*     F4_PROGRAMNAME    = ' '
      formname          = 'ACTION'
      programname       = l_repid
      popup_title       = 'Please Enter'
      ok_pushbuttontext = 'Execute'
      icon_ok_push      = lv_icon_ok
      first_pushbutton  = lv_button1
      icon_button_1     = lv_icon1
      second_pushbutton = lv_button2
      icon_button_2     = lv_icon2
*     QUICKINFO_OK_PUSH = ' '
*     QUICKINFO_BUTTON_1              = ' '
*     QUICKINFO_BUTTON_2              = ' '
      start_column      = '2'
      start_row         = '2'
*     NO_CHECK_FOR_FIXED_VALUES       = ' '
    IMPORTING
      returncode        = lv_rc  "space/'A'=Abbruch
    TABLES
      fields            = lt_fields
    EXCEPTIONS
      error_in_fields   = 1
      OTHERS            = 2.
Das popup unterstützt jede DDIC Struktur.
gruß Jens

Folgende Benutzer bedankten sich beim Autor Tron für den Beitrag:
sap_koun

<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Re: POST Request mit "Eingabemaske" an eine REST API

Beitrag von sap_koun (ForumUser / 29 / 24 / 0 ) »
Hi Jens & a_dead_trousers,

Danke für eure hilfreichen Antworten und Vorschläge.

Ich habe mich mittlerweile dazu entschieden, mit Feldern und SELECTIONS-Blöcken im Programm, da ich eigentlich (meiner Meinung nach) nix kompliziertes machen möchte.

Die Aufrufe mit dem CL_HTTP_CLIENT funktionieren ja, ich kann die Resobse auch in eine Tabelle schreiben mittlerweile.

Nun würde ich gerne meinen Screen (die User-Ansicht) und den funktionierenden Rest zusammenkriegen. Bin aber ein totaler Anfänger und suche mir das mit kostenlosen Tutorials zusammen (Wenn ihr einen Kurs habt, gerne auch kostenpflichtig, der genau solche Basics vermittelt, dann bitte her damit! Ich bin von Auswahl online überwältigt und kann die Qualität der Kurse schlecht einschätzen.)

Mit Tabellen kann ich nun einigermaßen umgehen.

Ich würde jetzt gerne einen Push Button kreieren (schon getan, siehe Screenshot). Wenn man diesen drückt, sollen die Eingaben aus den Feldern (z.B. P_BELNR) in eine interne Tabelle geschrieben werden und anschließend deserialisiert, in eine JSON-File umgewandelt, und dann verschickt werden.

Habt ihr ein Tutorial oder Kurs, der die Funktionsweisen der Buttons erklärt?

Für letzteres habe ich folgende vorgehensweise gefunden
Anschließend soll die Response schön dargestellt werden.

https://software-heroes.com/en/blog/aba ... st-request

Habt Ihr ein Tutorial, oder eine Info, wie ich das mit dem Button anstelle?
Finde einfach nichts gutes im Internet.

Ich habe es geschafft, auf Button-Klick eine Message erscheinen zu lassen ('help!')
Aber mehr leider nicht.

Re: POST Request mit "Eingabemaske" an eine REST API

Beitrag von jocoder (Specialist / 343 / 3 / 102 ) »
Selection-Screens sind über Ergeinisbehandler mit dem ABAP-Program verbunden.
Ergeinisbehandler sind die Anweisungen AT SELECTION-SCREEN bzw. START-OF-SELECTION. Die werden nach Benutzerinteraktion mit dem Selektionsbild gerufen (Im Demoprogram DEMO_SELECTION_SCREEN_EVENTS kann das ganze getestet werden).
Pushbuttons rufen AT SELECTION SCREEN auf, wobei sscrfields-ucomm das Kommando des Pushbuttons enthält.

Code: Alles auswählen.

TABLES: sscrfields.

PARAMETERS: p_belnr TYPE belnr_d.
SELECTION-SCREEN PUSHBUTTON text-001
  USER-COMMAND 'SUBMIT'.

AT SELECTION SCREEN.
  IF sscrfields-ucomm = 'SUBMIT'.
    PERFORM submit.
  ENDIF.

FORM submit.

  " hier folgt der REST-API-Call
  DATA(http_client) = cl_http_client=>create_by_url( url = 'https://some.api.com'
    EXCEPTIONS
       OTHERS = 4 ).
  " ...
ENDFORM.
Der Druck des Pushbuttons sorgt dafür, dass die Form-Routine SUBMIT aufgerufen wird. In dieser Form-Routine wird die REST-API aufgerufen, was ich hier nur angedeutet habe.

Folgende Benutzer bedankten sich beim Autor jocoder für den Beitrag:
sap_koun


Seite 1 von 1

Vergleichbare Themen

15
Antw.
3478
Views
POST REQUEST JSON File ABAP
von sap_koun » 10.01.2023 14:25 • Verfasst in ABAP® für Anfänger
16
Antw.
4327
Views
*-Eingabe bei eingabemaske ins Selektionsbild
von patlau » 05.06.2013 09:48 • Verfasst in ABAP® für Anfänger
5
Antw.
1418
Views
Eingabemaske Werte auf Betriebsystemebene abspeichern
von Bit-Devil » 26.11.2018 11:53 • Verfasst in ABAP® für Anfänger
1
Antw.
3952
Views
REST-Schnittstelle mit PUT-methode
von GünterL » 27.11.2023 13:57 • Verfasst in Development Related
10
Antw.
3121
Views
SAP REST API Aufruf Problem / SSL-Zertifikat Überprüfung
von sap_koun » 17.08.2021 18:06 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
vor 2 Tagen von Bright4.5 1 / 579
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2208
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8804