[ABAP] OData: $top und $skip – Pagingfunktionen implementieren

* https://blogs.sap.com/2017/12/06/display-countfilterorderbyinlinecounttop-and-skip-operations-using-odata-services/
* für SAPUI5-Elemente muss zugehöriges EntitySet in der SEGW auf "Paginierbar" gestellt sein

METHOD xyz_get_entityset.

  ...

* $top und $skip auslesen
    DATA(lv_top) = io_tech_request_context->get_top( ).
    DATA(lv_skip) = io_tech_request_context->get_skip( ).
    DATA(lv_maxrows) = 0.

* lv_maxrows setzen
    IF lv_top > 0.
      lv_maxrows = lv_top + lv_skip.
    ENDIF.

* Daten holen
    SELECT * FROM abc INTO TABLE @et_entityset UP TO @lv_maxrows ROWS.

* überflüssige Daten löschen
    IF NOT lv_skip IS INITIAL.
      DELETE et_entityset TO lv_skip.
    ENDIF.

  ...

ENDMETHOD.

[OData] Übersicht zu OData-Abfrageoptionen (Query-Optionen)

Option       | manuell implementieren
-------------+-----------------------
$count       | nein
$expand      | nein
$filter      | ja
$format      | nein
$inlinecount | ja
$link        | nein
$orderby     | ja
$select      | nein
$skip        | ja
$skiptoken   | ja
$top         | ja
$value       | nein

Links