Show TOC Anfang des Inhaltsbereichs

Hintergrunddokumentation Parallelisierung von Requests  Dokument im Navigationsbaum lokalisieren

Achtung

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

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:

parameters: listen type c default space,

            times  type i default '1',

 

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

*Receive via listen (#times parallel requests)

do times times.

  if not listen is initial.

    call method client->listen

      receiving  client = cclient

      exceptions http_communication_failure  = 1

                 http_no_open_connection     = 2

                 others                      = 3.

  if sy-subrc <> 0.

    call method client->get_last_error

      importing code    = subrc

                message = dummy.

    write: / listen’,

           / 'code: ', subrc, 'message: ', dummy.

    exit.

  endif.

 

Die eintreffenden Antworten werden wieder den Requests zugeordnet.

* Assigning the responses to the requests

* If there are more requests, process all responses

    client = cclient.

    call method client->receive

exceptions http_communication_failure  = 1

           http_invalid_state          = 2

           http_processing_failed      = 3

           others                      = 4.

  if sy-subrc <> 0.

    call method client->get_last_error

       importing code    = subrc

                 message = dummy.

    write: / 'communication_error( receive )',

           / 'code: ', subrc, 'message: ', dummy.

    exit.

  endif.

...

enddo.

 

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.

  

Ende des Inhaltsbereichs