In this simplified example a GET_ENTITYSET implementation is adapted to support the last-modified and cache control functionality.
METHOD products_get_entityset. DATA: lv_if_modified_since TYPE tzntstmps. ** Set the max-age for the cache es_response_context-max_age = 3600. ** Set the last-modified time stamp. This is only a very simplified example - in reality the last-modified time stamp must reflect the last change of the business data es_response_context-last_modified = 20121127094140. "Year 2012 Nov 27 09:41:40 ** Get time stamp of if-modified-since request header lv_if_modified_since = io_tech_request_context->get_if_modified_since( ). ** Calculate the value for is-not-modified es_response_context-is_not_modified = /iwbep/if_mgw_conv_srv_runtime~check_if_is_not_modified( iv_if_modified_since = lv_if_modified_since iv_last_modified = es_response_context-last_modified ). ** Entity set data does not need to be returned if is-not-modified is ABAP_TRUE IF es_response_context-is_not_modified <> /iwbep/if_mgw_appl_types=>gcs_modification_status-is_not_modified. CALL FUNCTION 'BAPI_EPM_PRODUCT_GET_LIST' TABLES headerdata = et_entityset. ENDIF. ENDMETHOD.