Code: Alles auswählen.
method IF_HTTP_EXTENSION~HANDLE_REQUEST.
DATA: lt_indata TYPE TABLE OF ZTZ_CHB_ROH, "Zum Zwischenspeichern der einkommenden Daten" INT. TAB
lt_ever TYPE TABLE OF EVER, "Zum Zwischenspeichern der EVER-Tabelle" INT. TAB
lt_data TYPE ZTZ_CHB_EVER, "Zum Zwischenspeichern der Daten IDent." STRUKTUR
lv_string TYPE string. "Zum Holen der Daten"
Field-Symbols: <fs_data> TYPE ZTZ_CHB_EVER, "Work-Area für LOOP"
<fs_indata> TYPE ZTZ_CHB_ROH. "Work-Area für
* Body-Daten von JSON als String holen
lv_string = server->request->get_cdata( ).
CONCATENATE '[' lv_string ']' INTO lv_string.
* Empfangene Daten in die benötigte Struktur umwandeln
TRY .
/ui2/cl_json=>deserialize(
EXPORTING
json = lv_string
* pretty_name = /ui2/cl_json=>pretty_mode-camel_case
CHANGING
data = lt_indata ).
ENDTRY.
*Tabelle mit Vertragsdaten in interne Tablle hinzufügen //IDENTIFIKATION CHECK
LOOP AT lt_indata ASSIGNING <fs_indata>.
SELECT VERTRAG VKONTO ANLAGE ADRC~POST_CODE1 "Vertragsnummer, Vertragskonto, Zählernummer, PLZ"
FROM EVER
INNER JOIN FKKVKP ON EVER~VKONTO EQ FKKVKP~VKONT
INNER JOIN BUT020 ON FKKVKP~GPART EQ BUT020~PARTNER
INNER JOIN ADRC ON BUT020~ADDRNUMBER EQ ADRC~ADDRNUMBER
INTO CORRESPONDING FIELDS OF lt_data
WHERE EVER~Vertrag EQ <fs_indata>-Vertragsnummer.
ENDSELECT.
* Einkommende Daten in DB-Tabelle übertragen, wenn Vertragsnummer und PLZ übereinstimmen
IF lt_data-Vertrag EQ <fs_indata>-Vertragsnummer AND lt_data-POST_CODE1 EQ <fs_indata>-PLZ.
MODIFY ZTZ_CHB_ROH FROM TABLE lt_indata.
ENDIF.
ENDLOOP.
** Zählerstand übermitteln
* CALL FUNCTION 'BAPI_MTRREADDOC_UPLOAD'
* EXPORTING
* TABLES
* BAPIEABLU = .
* IMPORTING
endmethod.