Der obige ABAP-Code stellt ein vereinfachtes Beispiel dar, es handelt sich nicht um eine Vorlage für die professionelle Anwendung.
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.
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.