- In the exmaple Master Data Data Read class we used another class, ZCL_MDM_CONN_POOL_ROOT, to establish the connection to MDM. This is just a reusable utility class that caches the API connection and contains logic to map the SAP logon langauge to the MDM Language.
- The complete source code of this class can be downloaded here.
- Class Properties:
![](https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_syY68BhjypWAZEEDphI_kD0D5ozb1U1Axr9NuqbqJ5Cw2kv0RUSGR3MPULBEfvUL9qz8jle7s2CdET7Ts8rpkPZLhWjBxxedmQ3wtdlSmYapmpRQgnnZB121t_tCGAwpNzf9OCkR5KVs93XyPTPgZ1c_P7G_5BpJFErybqlzxOgrjHUBNZ1tPVzH2CsG5zlxvXBAQOnWPWpThm=s0-d)
- Class Private Types:
![](https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_uXbXcpFNdBUT9OZADXq1C2XHrTG8myLs9VHT5xZoD25nM2VUvGGgGgKZx6AQJMRsNnGHLbAGfA41maSn52OEMljx-cTiQhwIMljgGa80P4J6y6A44j9Fy9juC5oIVNc11DKOwAMdGjRFF4Wbd9V3ImhuZbQ4ERUwpRnAV3dkFUbRmO8v2nlaMV02-V5kDI9j9vSyXmZoMvoByP5lhmzw=s0-d)
- Class Attributes:
![](https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_tfiEqjHvVDUa955W4iA7nD_6eM5NjUsNcJPv6c85Kyl1D-cZYsGifs6xav3yJmKIBa6SSGU7SF3Fj2BPei8rWS3v_gJqQd0fe6CGHFXmK7FzvywJy9WJ7X5KpTT0PB_bRKOBIm7buX00kZDhwy_ZHHkbFa5CmN96OCHci_q7xJGC73MuOo40mog6RopGs69rdXhcc9C6swmPGc1g=s0-d)
- Class Methods:
![](https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_skg_7V0UsqU4VIxAgk9BriC6jQI7Q4CcH3EJDm83THnRQhAK1uMbyDS08DTopXSbeoK0u6vtlc4_7EEmcfuPLYsYDZFvmJjyyne3Cc6IAyrLjOHCvXHs3Je1Bsw7O0U_GPlVlBSPLsmg7Fc2KzGxNqxuFAgfAK9ANy7R2kQLqCsOsFtUTT-2IqQ24ef5nQcxUqDOrESPboBQ=s0-d)
- GET_MDM_CONNECTION
METHOD get_mdm_connection.
*@78\QImporting@ LANGUAGE TYPE SYLANGU DEFAULT SY-LANGU
*@78\QImporting@ UNAME TYPE SYUNAME DEFAULT SY-UNAME
*@78\QImporting@ REPOSITORY TYPE MDM_LOG_OBJECT_NAME
*@78\QImporting@ USE_CONNECTION_POOL TYPE BOOLEAN DEFAULT ABAP_TRUE
*@7B\QReturning@ VALUE( API ) TYPE REF TO CL_MDM_GENERIC_API
*@03\QException@ CX_MDM_MAIN_EXCEPTION
IF use_connection_pool = abap_true.
DATA wa_api LIKE LINE OF api_cache.
READ TABLE api_cache INTO wa_api
WITH KEY language = language
uname = uname
repository = repository.
IF sy-subrc = 0.
****Cached Connection Record is found, make sure the API reference is bound
IF wa_api-api IS BOUND.
api = wa_api-api.
GET TIME STAMP FIELD wa_api-last_access.
MODIFY TABLE api_cache FROM wa_api.
ELSE.
****Not bound - Delete the Connection Record and Create a New Instance
DELETE api_cache WHERE language = language
AND uname = uname
AND repository = repository.
api = zcl_mdm_conn_pool_root=>create_mdm_connection(
language = language
uname = uname
repository = repository
use_connection_pool = use_connection_pool ).
ENDIF.
ELSE.
****No Cached Record - Create a New Instance
api = zcl_mdm_conn_pool_root=>create_mdm_connection(
language = language
uname = uname
repository = repository
use_connection_pool = use_connection_pool ).
ENDIF.
ELSE.
****By Pass the Connection Pool and create a one-off Instance
api = zcl_mdm_conn_pool_root=>create_mdm_connection(
language = language
uname = uname
repository = repository
use_connection_pool = use_connection_pool ).
ENDIF.
ENDMETHOD.
- CREATE_MDM_CONNECTION
METHOD create_mdm_connection.
*@78\QImporting@ LANGUAGE TYPE SYLANGU DEFAULT SY-LANGU
*@78\QImporting@ UNAME TYPE SYUNAME DEFAULT SY-UNAME
*@78\QImporting@ REPOSITORY TYPE MDM_LOG_OBJECT_NAME
*@78\QImporting@ USE_CONNECTION_POOL TYPE BOOLEAN DEFAULT ABAP_TRUE
*@7B\QReturning@ VALUE( API ) TYPE REF TO CL_MDM_GENERIC_API
*@03\QException@ CX_MDM_MAIN_EXCEPTION
DATA mdm_language TYPE mdm_cdt_language_code.
mdm_language = zcl_mdm_conn_pool_root=>expand_mdm_language( language ).
**** Instantiate the API with our repository key from the dialog
CREATE OBJECT api
EXPORTING
iv_log_object_name = repository.
****Connect to the Repository
api->mo_accessor->connect( mdm_language ).
IF use_connection_pool = abap_true.
DATA wa_api LIKE LINE OF api_cache.
wa_api-api = api.
wa_api-language = language.
wa_api-uname = uname.
wa_api-repository = repository.
GET TIME STAMP FIELD wa_api-last_access.
INSERT wa_api INTO TABLE api_cache.
ENDIF.
ENDMETHOD.
- EXPAND_MDM_LANGUAGE
METHOD expand_mdm_language.
*@78\QImporting@ LANGUAGE TYPE SYLANGU DEFAULT SY-LANGU Language Key of Current Text Environment
*@7B\QReturning@ VALUE( MDM_LANGUAGE ) TYPE MDM_CDT_LANGUAGE_CODE MDM: CDT language code
CASE language.
WHEN c_english.
mdm_language-language = 'eng'.
mdm_language-country = 'US'.
mdm_language-region = 'USA'.
when c_german.
mdm_language-language = 'ger'.
mdm_language-country = 'DE'.
* mdm_language-region = 'USA'.
WHEN OTHERS.
****Use the repository Default
CLEAR mdm_language.
ENDCASE.
ENDMETHOD.