HTTP Request

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

HTTP Request

Beitrag von carlie (ForumUser / 49 / 0 / 2 ) » 23. Aug 2019 20:28

Hallo,

ich muss zum ersten mal ein Eventhandler programmieren. der Handler soll aus dem bereich Änderungsdienst Daten lesen und zurück bekommen.
Der SICF Knoten wird von einer WEB ablikation gerufen.

http://<SAP-SYSTEM>/ecn/pdvecn?ecn=O04711UU

die geschriebene Klasse schaut so aus.

Code: Alles auswählen.

 data:
       l_string type string,
       it_ECN_DATA type  TIHTTPNVP.

  l_string = server->request->GET_CDATA( ).

  server->request->GET_FORM_FIELDS(
*  exporting
*    FORMFIELD_ENCODING = 0    " CO_FORMFIELD_ENCODING_RAW / _ENCODED
*    SEARCH_OPTION      = 3    " CO_BODY_BEFORE_QUERY_STRING or others
    changing
      FIELDS             =   it_ECN_DATA  " Form-Felder
  ).

  DATA: lv_change_no      TYPE AENNR.
  DATA: lt_change_header  TYPE  AENR_API02.
  FIELD-SYMBOLS <wa_ECN_DATA>     LIKE LINE OF it_ECN_DATA.
*FIELD-SYMBOLS <wa_change_header>  LIKE LINE OF lt_change_header.



* ECN Nummer wird gelesen
  LOOP AT it_ECN_DATA ASSIGNING <wa_ECN_DATA>.
    lv_change_no = <wa_ECN_DATA>-VALUE.
  ENDLOOP.


  CALL FUNCTION 'CCAP_ECN_HEADER_READ'
    EXPORTING
      CHANGE_NO       = lv_change_no
    IMPORTING
      CHANGE_HEADER   = lt_change_header
    EXCEPTIONS
      NO_RECORD_FOUND = 1
*     ERROR           = 2
*     OTHERS          =        3
    .
  IF SY-SUBRC <> 0.
* Implement suitable error handling here
  ENDIF.

und nun muss ich die Daten aus " lt_change_header" wieder per get zurück senden. Das liefern der daten sollte wenn möglich als xml oder json erfolgen.
Ich weiß an dieser Stelle gar nicht ob dies machbar ist.

Der Code funktioniert so weit erst mal, aber ich schaffe es nicht die Daten zurück zu senden. Wie muss ich die Methode erweitern. Ich wäre über Hilfe sehr dankbar.

Gruß


Re: HTTP Request

Beitrag von a-dead-trousers (Top Expert / 3253 / 84 / 820 ) » 23. Aug 2019 20:36

Rückmeldungen laufen doch nicht über den GET Mechanismus 🧐
Sondern über den sogenannten Response und den findest du in

Code: Alles auswählen.

server->response.
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.07
Basis: 7.40

Re: HTTP Request

Beitrag von carlie (ForumUser / 49 / 0 / 2 ) » 24. Aug 2019 16:50

Hallo,

danke für deinen Tipp.
Ich habe das jetzt mal so gelöst. Ich packe alles in einen String und arbeite dannach wie aufgeführt weiter.

Code: Alles auswählen.


*String wird in XString umgewandelt.
  CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
    EXPORTING
      TEXT     = l_resp
*     MIMETYPE = ' '
*      ENCODING = 'utf-8'
    IMPORTING
      BUFFER   = l_respx
    EXCEPTIONS
      FAILED   = 1
      OTHERS   = 2.
  IF SY-SUBRC <> 0.
* Implement suitable error handling here
  ENDIF.

* Binär XString senden.
  server->response->set_status( code = 200 reason = 'OK').
  server->response->set_data( l_respx ).

Einzig die UTF-8 Codierung geht nicht. Da bekomme ich immer eine fehlermeldung. Da muss ich nochmals schauen was hier das Problem ist. Wäre dennoch über erneutes Feedback glücklich, ob das alles so richtig ist.

Gruß

Re: HTTP Request

Beitrag von a-dead-trousers (Top Expert / 3253 / 84 / 820 ) » 25. Aug 2019 11:18

Vielleicht hilft dir die Klasse cl_abap_conv_out_ce weiter.
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.07
Basis: 7.40

Re: HTTP Request

Beitrag von Tron (Top Expert / 1060 / 10 / 217 ) » 26. Aug 2019 11:34

Moin.
Das sieht für mich vielversprechend aus .

Code: Alles auswählen.

 DATA conv TYPE REF TO cl_abap_conv_in_ce.
  DATA buffer(4) TYPE x.
  DATA text(100) TYPE c.
  buffer = '41424332'. "bytes represent ABC2 in UTF-8
  conv = cl_abap_conv_in_ce=>create(
        encoding = 'UTF-8' ).
  conv->convert(
        EXPORTING input = buffer
        IMPORTING data = text ).
  ASSERT text = `ABC2`.
gruß Jens
https://wiki.scn.sap.com/wiki/display/A ... CONV_IN_CE
<:: 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.

Seite 1 von 1

Aktuelle Forenbeiträge

Mini-SAP Einstiegs Logo ändern
vor 12 Stunden von Tron 2 / 157
CSV-Daten in richtige Infotyp-spalte(itab)
Gestern von DeathAndPain 3 / 74
Datum vorbelegen Select-Option in Variante gelöst
Gestern von DeathAndPain 11 / 289
Lookup Tabelle in Methode lesen und erweitern
Gestern von DeathAndPain 10 / 258
BOPF Key auslesen S4
Gestern von Tron 2 / 44

Unbeantwortete Forenbeiträge

CMR-Frachtbrief PDF Druckprogramm S4/HANA
vor 2 Tagen von ichse18577 1 / 44
Absenderland in Transaktion BP setzen
vor 5 Tagen von SAP_ENTWICKLER 1 / 118
Funktionsbaustein QPMK_MSTCHA_VERS_CREATE
vor einer Woche von SAP_ENTWICKLER 1 / 150
OLE 2 Excel Datum konvertieren
vor einer Woche von Kerstin 1 / 117