Enhancement spot /IWFND/ES_MGW_DEST_FINDER is provided to help you in dynamically calculating which system alias should be used. You can therefore use this enhancement spot to overwrite or enhance the standard routing for a service. Alternatively, you can use this enhancement spot to control the traffic from the SAP Gateway system to a backend system, so as to limit the load on that backend system.
The enhancement spot needs the following input:
OData service ID
User ID
Result of the standard routing in the form of a list of system aliases
List of HTTP request parameters which is only provided for data requests and not for metadata requests.
The enhancement sport returns a list of system aliases with the following fields:
system_alias of TYPE /iwfnd/defi_system_alias.
This has to be defined with the standard implementation guide activity for system aliases.
user_role of TYPE /iwfnd/defi_role_name.
This field is filled according to the standard routing in the implementation guide which has the role as an optional “filer”. Note that this field can be empty.
is_default of TYPE /iwfnd/mgw_inma_default_alias.
If the table contains only one entry this can be empty. If the table contains more than one entry exactly one entry must be flagged as default.
That system alias is used for all normal (non multi destination composition) requests.
That system alias is used for multi destination composition requests in case of CREATE, metadata or function imports of multiplicity 1.
The service created in the backend system is as follows:
Technical Service Name: |
/IWBEP/TEA_TEST_APPLICATION |
External Service Name: |
TEA_TEST_APPLICATION |
Version: |
0001 |
The service registered on the SAP Gateway system is as follows:
Namespace: |
/IWBEP/ |
External Service Name: |
TEA_TEST_APPLICATION |
Version: |
0001 |
Technical Service Name: |
ZTEA_TEST_APPLICATION (provided during registration) |
Service Document Identifier: |
ZTEA_TEST_APPLICATION_0001 (technical service name plus version) |
The URI would be as follows: URI = /sap/opu/odata/iwbep/TEA_TEST_APPLICATION/TeamCollection
The BAdI input would be as follows:
IV_USER |
=MRMEYER |
IV_SERVICE_ID |
= ZTEA_TEST_APPLICATION_0001 |
Table of system aliases containing the result of the standard routing |
The BAdI output would then be a table of system aliases which were changed by the BADI (or not changed) as a result of the standard routing.
Sample coding throwing an exception in case of too much load on the backend system:
… RAISE EXCEPTION TYPE /iwfnd/cx_mgw_dest_finder EXPORTING textid = /iwfnd/cx_mgw_dest_finder=>backend_load_too_high http_status_code = /iwfnd/cx_mgw_dest_finder=>gc_status_service_unavailable system_alias = lv_system_alias.