Ansicht
Dokumentation

CL_HTTP_IDOC_XML_REQUEST - IDOC_XML-Eingang über HTTP

CL_HTTP_IDOC_XML_REQUEST - IDOC_XML-Eingang über HTTP

CPI1466 during Backup   CL_GUI_FRONTEND_SERVICES - Frontend Services  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Funktionalität

1. Eingang

SAP liefert für den IDoc_XML-Eingang den Service IDoc_XML aus, der in der Transaktion SICF aktiviert werden muss.

In dem Service ist die Klasse CL_HTTP_IDOC_XML_REQUEST als Handler eingetragen.

1.1. Klasse CL_HTTP_IDOC_XML_REQUEST

In dieser Klasse wird das Interface IF_HTTP_EXTENSION implementiert.

Das Interface enthält nur die Methode HANDLE_REQUEST.

Der Methode wird der Parameter Server vom Typ IF_HTTP_SERVER übergeben.

1.2. Implementierung der Methode

  • Holen der Daten: data = server->request->get_cdata( ).
  • Vorbereitung zum Füllen der Response-Daten
  • cf 'IDOC_INBOUND_XML_VIA_HTTP'
  • HTML-Antwort aufbereiten
  • wenn eine Exception ausgelöst wurde, wird ein Rollback Work durchgeführt.
  • Zurücksenden der Response-Daten

1.3. IDOC_INBOUND_XML_VIA_HTTP

  • übergeben wird der Datenstrom vom Type String.
  • in 'parse_data' wird der String in ein mini-dom gewandelt
  • dann wir über den Mini-Dom gelaufen und nacheinander alle Knoten gelesen
  • 1.Knoten und 2. Knoten werden als Erstes gelesen
  • danach in einer Do-Schleife alle IDocs:
  • zuerst der Kontrollsatz und dann alle dahinter kommenden Datensätze

  • wenn ein IDoc komplett gelesen wurde, wird dieses IDoc auf der DB abgespeichert

Hier wird eine Prüfung durchgeführt, ob das IDoc schon einmal gespeichert wurde.

perform one_idoc_store

(IDOC_INBOUND_WRITE_TO_DB)

Die Verknüpfung zwischen Eingangs-IDoc-Nr. und neuer Nummer wird daraufhin weggeschrieben.

Wenn ein IDoc nicht abgespeichert werden kann, dann wird der Funktionsbaustein mit message raising verlassen.

Wenn das IDoc abgespeichert werden konnte und sofort an die Anwendung übergeben werden soll, wird es in die interne Tabelle für die Übergabe geschrieben.

Nachdem alle IDocs abgespeichert wurden, wird nachgesehen, ob ein IDoc sofort an die Anwendung übergeben werden soll. Wenn ja, wird das Ereignis der File-Schnittstelle ausgelöst.

Es wird ein Commit Work und anschließend ein Dequeue_all durchgeführt.

2. Ausgang

Pflegen Sie den Ausgang für HTTP-IDocs wie folgt:

2.1. Pflege einer HTTP-Destination

Hier sollten alle Werte (auch die Anmeldedaten) vollständig gepflegt werden.

2.2. Pflege eines HTTP-IDoc-Ports

Pflegen Sie folgende Einstellungen über die Transaktion WE21:

  • Content-Type (text/xml bzw. application/x-sap.idoc, wenn Sie den SAP Business Connector verwenden)

2.2.1 Definition der HTTP-Version

Die Version des HTTP-Protokolls können Sie für jede Destination über die Transaktion SM59 definieren (Spezielle Optionen):

  • HTTP-Protokoll: Version 1.0 oder 1.1

2.3. Partnervereinbarung

Tragen Sie einen HTTP-Port ein.

2.4. Anstarten des Funktionsbausteins IDOCS_OUTPUT_VIA_XML_HTTP

Im Ausgang wird für den Porttyp '7' der Funktionsbaustein IDOCS_OUTPUT_VIA_XML_HTTP angestartet.

2.5. Arbeitsweise des Bausteins

Es wird ein DOM pro IDoc aufgebaut und dann in einen XString gewandelt.

Für die gesamte Übertragung werden alle XStrings konkateniert.

In der Routine 'send_http_request' wird der XString anschließend über HTTP verschickt:

  • Es wird ein Client-Objekt erzeugt.
  • Header wird gefüllt: ~request_method = 'POST'

~server_protocol = wie im Port definiert (s. 2.2)

content-type = wie im Port definiert (s. 2.2)

  • Lesen der Daten der HTTP-Destination (Transaktion SM59), um die URI, den Server und die Service-Nummer abzufragen.
  • Übergeben der Daten an das Client-Objekt.
  • Starten des Versendens: Ruf der Methode send für das Client-Objekt.
  • Empfangen der Return-Daten.
  • Holen der Header-Informationen des Ergebnisses.
  • Auswerten der Header-Informationen.
  • im Feld '~status_code' erscheint der Returncode = 2* (erfolgreich), das IDoc erhält den Status '03'.

Alle anderen werden abgelehnt und aus dem Feld '~status_reason' wird die Fehlermeldung gelesen. Es wird ein Fehlerstatus mit der T100-Meldung EA/096 mit status_code und status_reason geschrieben.

3. Fehlerhandling bei Status '02'

Ein HTTP-IDoc im Status '02' soll nicht automatisch noch einmal versendet werden.

Bisher wurden fehlerhafte IDocs durch den Report RBDAGAIN erneut verarbeitet.

Dieser Report wurde jedoch angepasst und löscht nunmehr alle IDocs im Status 02, die an einen HTTP-Port geleitet werden sollen, aus der Liste der selektierten IDocs.

IDocs an einen HTTP-Port im Status '02' sollen nur manuell über Workitem erneut geschickt werden.

Beziehungen

Beispiel

Hinweise

Weiterführende Informationen






General Data in Customer Master   TXBHW - Original Tax Base Amount in Local Currency  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 6678 Date: 20240424 Time: 064201     sap01-206 ( 64 ms )