Hello, if like me you find yourself writing nearly all your own custom data provider class extension methods (in lieu of having SEGW generate them via RFC mapping or etc), you might find this class useful — it will provide skip/top/count functions for any custom DPC GET_ENTITYSET class, with no modifications, simply add the below method call to the end of any such method, no additional coding needed!

 *skip/top/inline zcl_segw_utilities=>skiptopinlinecount( exporting io_tech_request_context = io_tech_request_context changing ct_entityset = et_entityset cs_response_context = es_response_context ).

One caveat — this might not be the best route if you need to do some expensive processing within the initial result set and (for performance) only want to do that processing for the subset of results specified by skip/top, but 90% of the time this works like a Charm.

There might be a more elegant way to accomplish this (suggestions welcome!) but so far it’s been a great little timesaver.


 method skiptopinlinecount. *----------------------------------------------------------------------* * Author: Dave Price * Date: 1/27/2017 * Purpose: Skip/top/inlinecount logic for any DPC ENTITYSET call *----------------------------------------------------------------------* * MODIFICATION LOG * *----------------------------------------------------------------------* * Author Date Transport Description * ------- ---------- ---------- ----------- * *----------------------------------------------------------------------* *******NOTES *skip=5 means start results from the 6th row *top=3 means show the first three results after skipping *so skip=5 and top=3 means return results 6,7,8 data: lt_entityset type ref to data, ls_paging type /iwbep/s_mgw_paging, lv_skip type int4, lv_top type int4. field-symbols:  type any,  type standard table. *create a second internal table like ct_entityset as a field symbol create data lt_entityset like ct_entityset. assign lt_entityset->* to . move ct_entityset[] to . * if skip > 0 retrieve the entries from skip + top - 1, e.g. ls_paging-top = io_tech_request_context->get_top( ). ls_paging-skip = io_tech_request_context->get_skip( ). if io_tech_request_context->has_inlinecount( ) = abap_true. cs_response_context-inlinecount = lines( ct_entityset ). endif. if ls_paging-skip is not initial. lv_skip = ls_paging-skip + 1. endif. if ls_paging-top <> 0 and lv_skip is not initial. lv_top = ls_paging-top + lv_skip - 1. elseif ls_paging-top <> 0 and lv_skip is initial. lv_top = ls_paging-top. else. lv_top = lines( ct_entityset ). endif. if io_tech_request_context->has_inlinecount( ) = abap_true. describe table ct_entityset lines cs_response_context-inlinecount. endif. clear ct_entityset. loop at  assigning  from lv_skip to lv_top. append  to ct_entityset. endloop. endmethod. 

METHOD DEFINITION:

Class ZCL_SEGW_UTILITIES Method SKIPTOPINLINECOUNT Description Skip, Top and Inliine Count functions for any DPC ENTITYSET IO_TECH_REQUEST_CONTEXT Importing Type Ref To /IWBEP/IF_MGW_REQ_ENTITYSET CS_RESPONSE_CONTEXT Changing Type /IWBEP/IF_MGW_APPL_SRV_RUNTIME=>TY_S_MGW_RESPONSE_CONTEXT CT_ENTITYSET Changing Type STANDARD TABLE

New NetWeaver Information at SAP.com

Very Helpfull

User Rating: Be the first one !