on 03-22-2011 12:11 PM
Hi all,
we developed a custom transaction into our ECC 6.0 system to remotely retreive data coming from MDM (7.1 SP05) and show them to the user. The 2 systems phisically reside in different datacenters, so running in the same WAN but in 2 different AD domains and 2 different ip networks.
In short the transaction is working using the standard MDM ABAP API functionalities and getting the MDM data using the following methods:
.....
CALL METHOD lr_api->mo_accessor->connect
......
CALL METHOD lr_api->mo_core_service->query
......
CALL METHOD lr_api->mo_core_service->retrieve
.......
CALL METHOD lr_api->mo_accessor->disconnect.
This is working, but with awful performances. for example to get a subset of materials (around 500 codes) it takes more than 1 minute, and the quantity of data transfered from MDM to ECC (around 30 KB) is not justifying this time.
Please be so kind to suggest any kind of activity that I can perform to improve the situation.
Thanks in advance.
Hello Rinox
MDM spent much time for connection installation.
Open your connection when you start session and close when session have been finished
Don't close your connection all time.
Regards
Kanstantsin Chernichenka
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Kanstantsin,
Thanks for your answer.
In fact this is what we do. We first call method lr_api->mo_accessor->connect in the beginning of a function module, then we do our job (materials selection and info retrival) and at the end we close the connection to MDM thru method lr_api->mo_accessor->disconnect.
What I noted is that, during the rfc activity, a lot of tcp ports are opened on MDM side and then small packets are sent to the ECC system. I don't know if this is a normal behaviour and could be the reaso of the performance problem... maybe this is a way to parallelize the MDM extraction activity, but could introduce delay while preparing this packets.
Maybe there're some settings on the MDM side that can be done to "optimize" the size of the network packets sent to the ECC system. Or maybe I'm wrong and this is not the reason of my problems.
Regards,
Rinox
Hi all,
no answers till today unfortunately. I would like to better clarify the situation so maybe it could help you expert to get possible solutions.
As told, we're currently developing a transaction inside our ECC 6.0 system to remotely retreive the Materials Classification tree from the MDM system, and then allowing the users to have the list of the MDM materials according to the selected commodity (class). In short the transaction is replicating a subset of functionalities available with MDM Data Manager (class search), and the data retrival is performed only with standard methods made available wiht the MDM_TECH addon:
- CALL METHOD lr_api->mo_accessor->connect
- CALL METHOD lr_api->mo_core_service->query
- CALL METHOD lr_api->mo_core_service->retrieve
- CALL METHOD lr_api->mo_accessor->disconnect
According to the ABAP API programming best practices, the process has been managed thru the following 4 steps:
1. retreive the list of MDM material by class code
2. retreive for the selected materials some attributes in a MDM lookup table,
3. retreive, material by material, the list of SAP material code (included in a MDM lookup table different from point 2.),
4. retreive, material by material, the list of SAP material country (included in a MDM lookup table different from point 2. and 3.),
Thus we can say that, while point 1 executes only 1 selection, points 2., 3. and 4. have to perform n single selections, where n is the number of materials belonging to the selected commodity.
Unfortunately, for some (not huge) classes, the transaction takes too much time and this is not justified neither by the number of materials selected nor by the volumes of data transferred from MDM to ECC. Please note that largest classes contain up to 3000 materials, that is in any case a limited number.
Question is: considering that the problem seems to be related to the way the ABAP API can retreive the data from different lookup tables, is there a way to perform this with "global selections" instead of having to perform "single selections" material by material? Also do you know if some MDS.ini parameters aloow to speed up such kind of selections?
Thanks!
Hi There,
After making connection, using Query statement, you are getting all catergoy IDs.
Instead of passing each and every category ID to Retrieve statement, It would be better to send all Category IDs at one shot and retrieve all CategoryID text.
So at one call you are getting Category texts or descriptions.
I am also doing same thing, but I am displaying Tree Strure and all attribute Text values on WebDynPro-ABAP Form.
If this is not the answere expecting please give more details, I will try to figure out the probelm.
I am trying to retreieve date from MDM to ECC using ABAP API.I am getting the below dump.
Short text
An exception occurred that was not caught.
What happened?
The exception 'CX_MDM_PROVIDER' was raised, but it was not
along
the call hierarchy.
Since exceptions represent error situations and this error
adequately responded to, the running ABAP program
'CL_MDM_PROVIDER_71_SP00_PL00==CP' has to be
terminated.
What can you do?
Note down which actions and inputs caused the error.
To process the problem further, contact you SAP system
administrator.
Using Transaction ST22 for ABAP Dump Analysis, you can loo
at and manage termination messages, and you can also
keep them for a long time.
Error analysis
An exception occurred that is explained in detail below.
The exception, which is assigned to class 'CX_MDM_PROVIDER', was not caught in
procedure "GET_LOC_SUPP" "(METHOD)", nor was it propagated by a RAISING clause.
Since the caller of the procedure could not have anticipated that the
exception would occur, the current program is terminated.
The reason for the exception is:
Internal error: field 'SEARCH_GROUPS' not found; contact your system
administrator
Please check at this point I am getting dump:
LT_SEARCH_TUPLE_PATH
Table IT_1806[0x12]
\CLASS=CL_MDM_PROVIDER_71_SP00_PL00\METHOD=IF_MDM_CORE_SERVICES~QUERY\DATA=LT_SEARCH_TUPLE_PAT
Table reference: 1612
TABH+ 0(20) = 000000000000000007000000579D710000000000
TABH+ 20(20) = 0000064C0000070E000000000000000CFFFFFFFF
TABH+ 40(16) = 04000138000F44A0000424E403000000
store = 0x0000000000000000
ext1 = 0x07000000579D7100
shmId = 0 (0x00000000)
id = 1612 (0x0000064C)
label = 1806 (0x0000070E)
fill = 0 (0x00000000)
leng = 12 (0x0000000C)
loop = -1 (0xFFFFFFFF)
xtyp = TYPE#000300
occu = 4 (0x00000004)
accKind = 1 (ItAccessStandard)
idxKind = 0 (ItIndexNone)
uniKind = 2 (ItUniNo)
keyKind = 1 (default)
cmpMode = 12 (ILLEGAL)
occu0 = 1
stMode = 0
groupCntl = 0
rfc = 0
unShareable = 0
mightBeShared = 0
sharedWithShmTab = 0
isShmLockId = 0
isUsed = 1
isCtfyAble = 1
hasScndKeys = 0
hasRowId = 0
scndKeysOutdated = 0
scndUniKeysOutdated = 0
LV_MESS
field 'SEARCH_GROUPS' not found
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
6666622544544545455522667266766222222222222222222222222222222222222222222222222222222222222222
695C407351238F72F50370EF406F5E4000000000000000000000000000000000000000000000000000000000000000
SY-REPID
I am picking the data from MAIN TABLE MDM_SUPPLIER_MAP and below is the code.
CALL METHOD lv_mdm_api->mo_core_service->query
EXPORTING
*Main Table
iv_object_type_code = 'MDM_SUPPLIER_MAP' "#EC NOTEXT
* it_query = lt_query
IMPORTING
et_result_set = lt_result_set.
Please suggest solution to get the records from MDM to ECC.
When I am tring to replace the abpove with the below code it is working.But in this case I need to retreive all the data instead of using DO and ENDO.Could any please suggest solution.
DO 10 TIMES.
APPEND sy-index TO keys.
ENDDO.
CALL METHOD lv_mdm_api->mo_core_service->retrieve_simple
EXPORTING
iv_object_type_code = 'MDM_SUPPLIER_MAP'
it_keys = keys
IMPORTING
et_ddic_structure = result_ddic
User | Count |
---|---|
86 | |
10 | |
10 | |
9 | |
7 | |
7 | |
6 | |
5 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.