Paging bei Datenabholung (API)

Getting started ... Alles für einen gelungenen Start.
6 Beiträge • Seite 1 von 1
6 Beiträge Seite 1 von 1

Paging bei Datenabholung (API)

Beitrag von Bright4.5 (Specialist / 298 / 21 / 1 ) »
Hallo zusammen,

ich würde Daten per API abholen von einem exteren System, mit diesem Codefragment:

Code: Alles auswählen.


     CALL METHOD cl_http_client=>create_by_url
        EXPORTING
          proxy_service      = '8080'
*         ssl_id             =
*         sap_username       =
*         sap_client         =
        IMPORTING
          client             = lo_client
        EXCEPTIONS
          argument_not_found = 1
          plugin_not_active  = 2
          internal_error     = 3
          OTHERS             = 4.
      IF sy-subrc <> 0.
*   Implement suitable error handling here
      ENDIF.


      CALL METHOD lo_client->authenticate(
        EXPORTING
          proxy_authentication = 'X'
          client               = '200'
          language             = 'D'
                                 ).

      CALL METHOD lo_client->send
        EXCEPTIONS
          http_communication_failure = 1
          http_invalid_state         = 2
          http_processing_failed     = 3
          http_invalid_timeout       = 4
          OTHERS                     = 5.

      IF sy-subrc <> 0.
        RAISE connection_error.
      ENDIF.


      CALL METHOD lo_client->receive
        EXCEPTIONS
          http_communication_failure = 1
          http_invalid_state         = 2
          http_processing_failed     = 3
          OTHERS                     = 4.
Allerdings werden immer nur 10 Datensätze geliefert. Würde es eine Möglichkeit geben, alle Datensätze zu bekommen? Müsste da noch irgendein Parameter gepflegt werden?

Vielen Dank im Voraus.

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Paging bei Datenabholung (API)

Beitrag von Radinator (ForumUser / 68 / 11 / 7 ) »
Könntest du eventuell die eigentliche Anbfrage auch noch dazu packen? Der Code zeigt lediglich die Erstellung des Request Objects, hat aber keinerlei Infos über das Query.

Meine Vermutung: Entweder hast du in der Anfrage (wenn es sich um einen HTTP GET Aufruf handelt) die Kontrolle über das Paging (oder nicht) bzw wie viele Resultate zurück gegeben werden oder der Service gibt halt nur maximal 10 Ergebnise pro Aufruf zurück.
Zuletzt geändert von Radinator am 08.04.2025 13:31, insgesamt 1-mal geändert.

Re: Paging bei Datenabholung (API)

Beitrag von a-dead-trousers (Top Expert / 4445 / 226 / 1196 ) »
Das dürfte an der eingesetzten API liegen.
Vermutlich muss man da noch zusätzliche Parameter mitliefern wieviele Datensätze man haben möchte und der Default-Wert scheint 10 zu sein. Am besten beim Hersteller nachfragen was man angeben muss. Die Infos müssen dann entsprechend im Objekt "lo_client->request" vor dem SEND/RECEIVE eingefügt werden.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Paging bei Datenabholung (API)

Beitrag von Bright4.5 (Specialist / 298 / 21 / 1 ) »
Hallo zusammen,

ja, also nach der Abfrage ist hier noch der folgende Code von mir:

Code: Alles auswählen.


      " Holen der Daten in XSTRING-Format
      DATA(lv_bin) = CONV xstring( lo_client->response->get_data( ) ).


      DATA: lt_data2  TYPE TABLE OF x255,
            lv_len    TYPE i,
            ls_result TYPE string,
            ls_compare_string TYPE string.
*            ls_id_orig  TYPE string.


      CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
        EXPORTING
          buffer        = lv_bin
        IMPORTING
          output_length = lv_len
        TABLES
          binary_tab    = lt_data2.


      CALL FUNCTION 'SCMS_BINARY_TO_STRING'
        EXPORTING
          input_length = lv_len
        IMPORTING
          text_buffer  = ls_result "here, you find the truth!
        TABLES
          binary_tab   = lt_data2.

und hier habe ich dann immer nur 10 Datensätze.

Ich hätte gedacht, dass man das bei den Parametern irgendwie einstellen kann.

Re: Paging bei Datenabholung (API)

Beitrag von Radinator (ForumUser / 68 / 11 / 7 ) »
Das beantwortet leider immer noch nicht die Frage WIE genau du die externe API aufrufst.

Gehst du her und machst nen HTTP GET Request? Also nen Call auf example.com/test/demo_form.php?name1=value1&name2=value2 oder auf eine andere Weise?

Re: Paging bei Datenabholung (API)

Beitrag von Bright4.5 (Specialist / 298 / 21 / 1 ) »
Hallo zusammen,

okay, ich hätte es jetzt gelöst und es war eigentlich extrem einfach.

Ich musste dem Ganzen, das nur bei der URL mitgeben, wieiviele Datensätze ich habe möchte, wobei es von dem externen System (nach Rücksprache) auf einen gewissen Satz beschränkt war :).

Seite 1 von 1

Aktuelle Forenbeiträge

Erweiterung in ME51N/ME52N:
vor 7 Stunden von ABAPlerv 1 / 26
Erweiterung in ME51N/ME52N:
vor 7 Stunden von ABAPlerv 1 / 18
DIN Norm Klassifizierung
Gestern von Radinator 2 / 2624
Login Daten Management
vor 2 Tagen von sap_enthusiast gelöst 5 / 801

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Erweiterung in ME51N/ME52N:
vor 7 Stunden von ABAPlerv 1 / 26
Erweiterung in ME51N/ME52N:
vor 7 Stunden von ABAPlerv 1 / 18
DIN Norm Klassifizierung
Gestern von Radinator 2 / 2624
Login Daten Management
vor 2 Tagen von sap_enthusiast gelöst 5 / 801

Unbeantwortete Forenbeiträge

Erweiterung in ME51N/ME52N:
vor 7 Stunden von ABAPlerv 1 / 26
Erweiterung in ME51N/ME52N:
vor 7 Stunden von ABAPlerv 1 / 18