Show TOC

HintergrundParallelisierung von Requests Dieses Dokument in der Navigationsstruktur finden

 

Achtung Achtung

Der obige ABAP-Code stellt ein vereinfachtes Beispiel dar, es handelt sich nicht um eine Vorlage für die professionelle Anwendung.

Ende der Warnung.
Verwendung

Sie haben die Möglichkeit, Requests parallel abzusetzen und auf alle Antworten gleichzeitig zu warten. Die Methode LISTEN ermittelt in diesem Fall, welcher Request aktuell beantwortet wurde.

Dieses Verfahren ist vorteilhaft, wenn viele Requests an verschiedene Server abgesetzt werden, deren Antwortzeit stark differiert.

Aktivitäten

Sie können das obige Programm dazu um die folgenden Zeilen ereitern. Dabei geben Sie zusätzliche Parameter an, die definieren, dass Sie mit der Methode LISTEN arbeiten und wie viele Requests Sie versenden wollen:

Syntax Syntax

  1. parameters: listen type c default space,
  2.             times  type i default '1',
Ende des Codes

Nun wird auf die Antworten der Requests gewartet. Sie werden in der Reihenfolge entgegengenommen, in der sie vom Server zurückkommen.

Syntax Syntax

  1. *Receive via listen (#times parallel requests)
  2. do times times.
  3.   if not listen is initial.
  4.     call method client->listen
  5.       receiving  client = cclient
  6.       exceptions http_communication_failure  = 1
  7.                  http_no_open_connection     = 2
  8.                  others                      = 3.
  9.   if sy-subrc <> 0.
  10.     call method client->get_last_error
  11.       importing code    = subrc
  12.                 message = dummy.
  13.     write: / listen’,
  14.            / 'code: ', subrc, 'message: ', dummy.
  15.     exit.
  16.   endif.
Ende des Codes

Die eintreffenden Antworten werden wieder den Requests zugeordnet.

Syntax Syntax

  1. * Assigning the responses to the requests
  2. * If there are more requests, process all responses
  3.     client = cclient.
  4.     call method client->receive
  5. exceptions http_communication_failure  = 1
  6.            http_invalid_state          = 2
  7.            http_processing_failed      = 3
  8.            others                      = 4.
  9.   if sy-subrc <> 0.
  10.     call method client->get_last_error
  11.        importing code    = subrc
  12.                  message = dummy.
  13.     write: / 'communication_error( receive )',
  14.            / 'code: ', subrc, 'message: ', dummy.
  15.     exit.
  16.   endif.
  17. ...
  18. enddo.
Ende des Codes

Anschließend können Sie eingeben, wie oft ein Request abgesetzt werden soll (Parameter times), und in der Ausgabe sehen Sie, in welcher Reihenfolge die Antworten empfangen wurden. Dies muss nicht die Reihenfolge sein, in der die Requests abgeschickt wurden.