Value mapping performance using LookUp API
All,
We are using Value mapping look up from an external table using JDBC adapter and Lookup API. The scenario works good, but the performance is a hit for us as it is taking 7 seconds for the first step and the subsequent steps are taking much longer. In the performance header it shows that the steps "DB ENTRY QUEUING" and "DB SPLITTER QUEUING" are taking 90% of the time even though mapping execution is real quick.
We tried the below things which did not help us analyze or isolate the problem.
1. We increased the number of dialog processes from 3 to 8. (Optimal value should be 5)
2. We tested the scenario using Value mapping in ID instead of external table. But it is almost taking the same time in the above two steps mentioned.
I would like to know whether any kind of configuration settings to be done on the server like "specifying connection pool capabilities" etc...
Any pointers would be really appreciated.
Thanks and Regards,
GP
Hi,
Have you seen this weblogs by Prasad recently:
/people/prasad.illapani/blog/2007/03/08/performance-tuning-checks-in-sap-exchange-infrastructure
/people/prasad.illapani/blog/2007/04/20/performance-tuning-checks-in-sap-exchange-infrastructurexi-part-ii
Also are you doing multiple lookups or a single lookup? If you are using multiple lookup for multiple fields which has the same logic then try to use global variables.
---Satish
Similar Messages
-
Best practice to monitor 10gR3 OSB performance using JMX API?
Hi guys,
I need some advice on the best practice to monitor 10gR3 OSB performance using JMX API.
Jus to show I have done my home work, I managed to get the JMX sample code from
http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/jmx_monitoring/example.html#wp1109828
working.
The following is the list of options I am think about:
* Set up: I have a cluster of one 1 admin server with 2 managed servers, which managed server runs an instance of OSB
* What I try to achieve:
- use JMX API to collect OSB stats data periodically as in sample code above then save data as a record to a
database table
Options/ideas:
1. Simplest approach: Run the modified version of JMX sample on the Admin Server to save stats data to database
regularly. I can't see problems with this one ...
2. Use WLI to schedule the Task of collecting stats data regularly. May be overkill if option 1 above is good for production
3. Deploy a simple web app on Admin Server, say a simple servlet that displays a simple page to start/stop and configure
data collection interval for the timer
What approach would you experts recommend?
BTW, the caveats os using JMX in http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/jmx_monitoring/concepts.html#wp1095673
says
Oracle strongly discourages using this API in a concurrent manner with more than one thread or process. This is because a reset performed in
one thread or process is not visible to another threads or processes. This caveat also applies to resets performed from the Monitoring Dashboard of
the Oracle Service Bus Console, as such resets are not visible to this API.
Under what scenario would I be breaking this rule? I am a little worried about its statement
discourages using this API in a concurrent manner with more than one thread or process
Thanks in advance,
SamHi Manoj,
Thanks for getting back. I am afraid configuring aggregation interval from Dashboard doesn't solve problem as I need to collect stats data of endpoint URI or in hourly or daily basis, then output to CSV files so line graphs can be drawn for chosen applications.
Just for those who may be interested. It's not possible to use SQL to query database tables to extract OSB stats for a specified time period, say 9am - 5pm. I raised a support case already and the response I got back is 'No'.
That means using JMX API will be the way to go :)
Has anyone actually done this kind of OSB stats report and care to give some pointers?
I am thinking of using 7 or 1 days as the aggregation interval set in Dashboard of OSB admin console then collects stats data using JMX(as described in previous link) hourly using WebLogic Server JMX Timer Service as described in
http://download.oracle.com/docs/cd/E12840_01/wls/docs103/jmxinst/timer.html instead of Java's Timer class.
Not sure if this is the best practice.
Thanks,
Regards,
Sam -
Search for a Multilingual value in MDM using JAVA API
Good day,
Could you kindly assist.
I am trying to search for a field in MDM, from Portal using JAVA API. I do retrieve the value in English, but the problem is when I am trying to retrieve it in other languages. Please see sample code:
private Search getSearch(MDMConnection mdmconnection,String value, TableId tableid){
Search search =null;
FieldSearchDimension fielddimension=null;
TextSearchConstraint textcontrain=null;
RepositorySchema reposchema =mdmconnection.reposchema;
if(value!=null)
search= new Search(tableid);
fielddimension=new FieldSearchDimension(reposchema.getFieldId("ATTR_VAL_ABBR","TEXT_VALUE"));
textcontrain=new TextSearchConstraint(value,TextSearchConstraint.EQUALS);
search.addSearchItem(fielddimension,textcontrain);
search.setComparisonOperator(Search.AND_OPERATOR);
return search;
Thank you in advance.
Regards,
SimniHi ,
Mdm- Multilingual value in MDM using JAVA API:
you can check the first point as its reagrdign youisue related pdf and soloutions for your question.
1. http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/b0e8aedc-cdfe-2c10-6d90-bea2994455c5?QuickLink=index&overridelayout=true
2. http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/b0e8aedc-cdfe-2c10-6d90-bea2994455c5?QuickLink=index&overridelayout=true
Hope this information helps you in solving the issue!!
Thanks&Regards
AswinChandraGirmaji -
Retriving all records in the value mapping cache using java
Hi,
Is there a way to retrieve all records assuming I properly maintain some values in the value mapping using java? I know and I tried retrieving already using XIVMService.executeMapping but it seems that I can retrieve only 1 value at a time.
For instance, in the value mapping cache I have the following:
Agency Schema Value Context
SENDER KEY 0001&ABC http://xyz.com/ECC/ZTABLE
SENDER KEY 0003& http://xyz.com/ECC/ZTABLE
SENDER KEY 0004&DEF http://xyz.com/ECC/ZTABLE
RECEIVER RESULT Hello http://xyz.com/ECC/ZTABLE
RECEIVER RESULT World http://xyz.com/ECC/ZTABLE
RECEIVER RESULT Hi http://xyz.com/ECC/ZTABLE
Is it possible to retrieve all values under the column Values assuming I know the value Agency, Schema and Context columns using a java program? If yes, can you point where I can find such an example code or if you are pointing to http://help.sap.com/javadocs/NW04S/current/pi/index.html please provide a sample code on how this can be done.
Many thanks.Hi,
Have you seen this weblogs by Prasad recently:
/people/prasad.illapani/blog/2007/03/08/performance-tuning-checks-in-sap-exchange-infrastructure
/people/prasad.illapani/blog/2007/04/20/performance-tuning-checks-in-sap-exchange-infrastructurexi-part-ii
Also are you doing multiple lookups or a single lookup? If you are using multiple lookup for multiple fields which has the same logic then try to use global variables.
---Satish -
How can i access value mapping table using xslt mapping
Hi All,
I have maintained value mapping table in integration directory.I want to access the data from the value mapping table in XSLT mapping using java function.PLease suggest me to do this.
Thanks
Pullarao.Value mapping that thread should solve your query !!!
-
Get Field Values from Table using Java api
I am using the example java code "RetrieveLimitedRecords" that can be found at :
https://help.sap.com/javadocs/MDM71/current/API/index.html
The code give the expected result and retrieves the record count for the main table
Now I want to get the values of the fields for one record
I added the lines:
Record[] records = recordResultSet.getRecords() ;
FieldId[] fields = records[0].getFields();
System.out.println ("Field Length = "+fields.length);
and the output is::
Field Length = 0
How can I get the fields of the record and read their values?
Thanks
NicolasAssuming you want every field, the equivalent of "SELECT *" in SQL, you can use the RepositorySchema object to get a TableSchema, and with that get all FieldIds for the table.
If your RepositorySchema variable is rs it would be something along the lines of:
TableSchema mainTableSchema = rs.getTableSchema(mainTableId);
ResultDefinition rd = new ResultDefinition(mainTableId);
rd.setSelectFields(mainTableSchema.getFieldIds());
Hope this helps,
Greg -
CrEme 4.0 (beta) GUI performance using different API's
Hi
Written a prototype that uses several buttons, a few drop downs,
couple of textfields, one or two small images and a few different
kinds of layouts.
Did this with Swing, AWT and SWT from the Eclipse distribution.
In my prototype I found that SWT is by far the fastest API for a GUI,
everything is just smooth and the startup seems faster too.
Next is AWT, things seem to take twice as much time as with
SWT (and u lose editable drop downs if u cant impl one in AWT yourself).
Swing just feels painful , much slower performance than AWT (not
a surprise tho since it's built on top of AWT).
I recommend everyone to try SWT if your JVM can run it.Just to clarify.
The PDA I used is iPAQ 6340 (64mb RAM, 240x320
display, 65536 colors, TI OMAP1510 CPU up to 168 Mhz afaik) -
Value Mapping Replication for Mass Data - Performance Issues
Hi All,
We are looking into Value Mapping Replication for Mass Data. We have done this for less number of fields.
Now we might have to have 15,000 records in the cache for the Value Mapping. I am not sure how this would effect the Java Cache and Java Engine as a whole.
There might be a situation where we will have to leave the 15K records in the cache table on Java Engine...
Are there any parameters that we can look into just to see how this hits the performance.
Any links/ guidance in the right direction might help me..
regNaveen,
Check jins reply in this thread (they have done with API and without API using graphical but still some issues):
Value mapping performance using LookUp API
---Satish -
Hi all,
I know something about Value Mapping.
And I heard that the Lookups (DB and RFC) are types of Value Mapping.
I am confused how value mapping is related to lookups.
Request you all to provide me some information regd.this.
Thank you.
Regards
Krishna.Hi,
All the links above are quite useful in understanding Value Mapping and RFC lookups.
Both solutions could be used for getting values from R3 tables at runtime. However, there's difference in way both operate.
RFC lookup is performed at runtime, since it is executed from the UDF in message mapping. Thus at runtime, call is made to R3 table and value is fetched.
In value mapping replication, Value Mapping program is run from SAP R3 and values from table are updated in XI Runtime Cache. Thus at runtime, while performing message mapping, call to R3 system is not made. Values are available in XI cache.
Thus, it is quite obvious that Value Mapping is more performace efficient since it doesn't make a call to SAP R3 system for each incoming message. If the table data does not change very frequently(since for every change value mapping scenario has to be run for update of XI cache), and it is not very large, then it is a good option as compared to RFC lookup.
However, in cases where either data is frequently changing in table or the volume of data is too large, RFC lookup should be prefered choice.
Hope it would be helpful.
Thanks,
Bhavish
Kindly award points if comments are useful -
Where we use Conversions? like Fixed Value and Value mapping? and use of th
where we use Conversions? like Fixed Value and Value mapping?
and what is the use of that....Hi
Have a Look at this
/people/community.user/blog/2007/01/08/valuemapping-using-the-graphical-mapping-tool
Value mapping is used to map different representations of an object to each other.
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/9202d890-0201-0010-1588-adb5e89a6638
You can do value mapping both in IR and ID
IR: Message Mapping
http://help.sap.com/saphelp_nw04/helpdata/en/43/c4cdfc334824478090739c04c4a249/content.htm
/people/sreekanth.babu2/blog/2005/01/05/design-time-value-mappings-in-xslt
ID: Tools --> Value Mapping
http://help.sap.com/saphelp_nw04/helpdata/en/13/ba20dd7beb14438bc7b04b5b6ca300/content.htm
Value mapping replication: For uploading data from tables, excel sheet etc. into XI
http://help.sap.com/saphelp_nw04/helpdata/en/2a/9d2891cc976549a9ad9f81e9b8db25/content.htm
Value mapping
/people/siva.maranani/blog/2005/08/23/lookup146s-in-xi-made-simpler
/people/sravya.talanki2/blog/2005/12/21/use-this-crazy-piece-for-any-rfc-mapping-lookups
/people/sap.user72/blog/2005/12/06/optimizing-lookups-in-xi
/people/alessandro.guarneri/blog/2006/03/27/sap-xi-lookup-api-the-killer
Thanks -
hi
sdn experts,
could you please explain about value mapping?
where the value mapping is used?
thanks in advance.Hi Chinna Rao,
Value mapping means mapping the data of some source fields to some target fields, in this mapping data can be transform in the format you required for your target system. You can do a value mapping simply by graphical mapping, using UDF etc
Go thru this thread which talks about value mapping:
Value mapping
Value mapping : value mapping function to map different representations of an object to each other. You save the mapping rules for different objects in a value mapping table.
we have two types ,
And Value mapping is used to map different representations of an object to each other.
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/9202d890-0201-0010-1588-adb5e89a6638
You can do value mapping both in IR and ID
IR: Message Mapping
http://help.sap.com/saphelp_nw04/helpdata/en/43/c4cdfc334824478090739c04c4a249/content.htm
/people/sreekanth.babu2/blog/2005/01/05/design-time-value-mappings-in-xslt
ID: Tools --> Value Mapping
http://help.sap.com/saphelp_nw04/helpdata/en/13/ba20dd7beb14438bc7b04b5b6ca300/content.htm
Value mapping replication: For uploading data from tables, excel sheet etc. into XI
http://help.sap.com/saphelp_nw04/helpdata/en/2a/9d2891cc976549a9ad9f81e9b8db25/content.htm
/people/sreekanth.babu2/blog/2005/02/23/value-mapping-replication
/people/siva.maranani/blog/2005/08/23/lookup146s-in-xi-made-simpler
/people/sravya.talanki2/blog/2005/12/21/use-this-crazy-piece-for-any-rfc-mapping-lookups
/people/sap.user72/blog/2005/12/06/optimizing-lookups-in-xi
/people/alessandro.guarneri/blog/2006/03/27/sap-xi-lookup-api-the-killer
Thanks,
Ram
*Pls reward if you find useful -
Any one there to explain me what is fixed value mapping Coz when i used LOOK UPS , they told me you can used fixed value mapping instead of it , as i was having only to values , please send me a detail explanation abt it thanking you
sridharThere is a lot of difference between fixed value mapping and Lookup:
Fixed value mapping is used when you need to populate the some differnt target value based on some inpur value.
Take example
I have used fixed value M:
My input is ABC
Now for this input I wanted to poupulate some different values.
Suppose when A comes in File it should map the target value to America.
When B come it should map to Belgium
and C -> California
Now come to Looup:
What is Lookup and why we need:
Within an XI mapping it is a common requirement to be able to perform data lookups on-the-fly. In particular, there may be a need to look up some data that is maintained in an R/3 application.
In the error handling topic we have seen the different validations which need to be performed on file. This can be done through Lookup.
Some use cases:
Look up material number from table MARA.
Look up cost center budget.
Look up employee information.
Look up unit-of-measure (UOM) information from table t006a.
Lookup for raising an alert.
The purpose of the lookup may be:
To perform application-level validation of the data, before sending it to the backend.
To populate fields of the XML document with some additional data found in the backend application.
This is a form of value transformation.
The "value mappings" offered by XI are not adequate in this case, since the data would have to be manually entered in the Integration Directory.
There are two ways in which we can do lookup:
Call lookup method from GUI mapping.
Call lookup method from XSLT mapping.
I think u got ur answer
Thnx
Chirag -
Issue with Value Mapping table
Hi
I want to upload a external value mapping table to XI.
I do not want to code for it on the SAP R/3 side. and there might be more than 2000 value mappings. so can we upload a external mapping table.
Is it possible?? if yes, then how??.
Thanks
NikhilXI 3.0
Hi,
first of all one helpful information:
You can see all data of the value mapping tables using the
runtime workbench: Go to the IntegrationBuilder->
Integration Monitoring->Cache Monitoring, select 'Search
for Value-Mapping' and choose your context.
The value mapping tables are located in the J2EE part of
XI. You have to send your value mapping data to an Java proxy
located in the J2EE part. First, the inbound proxies
(synchronous and asynchronous) need to be activated.
There are two urls, named in the docu, you have to call
from a web browser:
(asynchronous replication scenario)
http://<Server>:<Port>/ProxyServer/register?ns=http://sap.com/xi/XI/System&interface=ValueMappingReplicationSynchronous&bean=localejbs/sap.com/com.sap.xi.services/ValueMappingApplicationSynchronous&method=valueMappingReplicationSynchronous
(synchronous replication scenario)
http://<Server>:<Port>/ProxyServer/register?ns=http://sap.com/xi/XI/System&interface=ValueMappingReplication&bean=localejbs/sap.com/com.sap.xi.services/ValueMappingApplication&method=valueMappingReplication
You only need to perform this step once (for each
installation).
If you already have a sender for the mapping data, the
next step is to configure the scenario in the directory
Create a communication channel with
Adapter type: XI
Transport protocol: HTTP 1.0
Message-Protocol: XI 3.0
Adapter-Engine: Integration Server
and host name and http port of the XI J2EE Engine and Path Prefix: /MessagingSystem/receive/JPR/XI
The user XIAPPLUSER has the required permissions.
For an asynchronous communication you can use the
inbound interface ValueMappingReplication from the namespace http://sap.com/xi/XI/System.
In that namespace there are also outbound interfaces you
can use to generate a sender proxy and synchronous
interfaces for the same purpose. Set the created communication channel as the receiver channel.
You may need a mapping and so on depending on your
sender. If you use the provided outbound interfaces there
is no mapping required.
The Data:
You can create your own GUIDs using some function like GUID_CREATE in ABAP. You don't need to declare the context you use. Something like http://mycompany.com/Test should be ok.
A sample in ABAP:
CRM and R3 are the names of the business systems.
data: lcl_value_mapping type ref to co_svmr_value_mapping_rep,
ls_value_mappings type svmr_value_mapping_replication,
ls_item type svmr_value_mapping_rep_item,
lcl_system_fault type ref to cx_ai_system_fault.
ls_item-operation = 'Insert'.
ls_item-group_id = '315286378563858425463215845123548'.
ls_item-context = 'http://Test'.
ls_item-identifier-scheme = 'FormOfAddress'.
ls_item-identifier-agency = 'CRM'. <- Business System A
ls_item-identifier-value = '2'.
append ls_item to ls_value_mappings-value_mapping_replication-item.
ls_item-operation = 'Insert'.
Use the same guid for another value of the same group
ls_item-group_id = '315286378563858425463215845123548'.
ls_item-context = 'http://Test'.
ls_item-identifier-scheme = 'FormOfAddress'.
ls_item-identifier-agency = 'R3'. <- Business System B
ls_item-identifier-value = '1'.
append ls_item to ls_value_mappings-value_mapping_replication-item.
create object lcl_value_mapping.
try.
call method lcl_value_mapping->execute_asynchronous
exporting
output = ls_value_mappings.
commit work.
catch cx_ai_system_fault into lcl_system_fault.
write: 'Error: ', lcl_system_fault->errortext.
endtry.
See the XI documentation at SAP XI Design and Configuration Time -> Configuration -> Value Mapping -> Value mapping Replication for Mass Data.
Hope that helps.
Regards,
Christian -
Lookup API - asynchonous SOAP Adapter Queue
Hi,
I have a question about the queue handling, when you use the Lookup API of the SAP PI. ([Sap Help Lookup API|http://help.sap.com/saphelp_nw04/helpdata/en/cf/406642ea59c753e10000000a1550b0/frameset.htm])
When I call a synchronous Web Service via SOAP within a message mapping via the Lookup API, the synchronous web service is called via the "SOAP_http://sap.com/xi/XI/SystemSend" adapter queue. But "SOAP_http://sap.com/xi/XI/SystemSend" is the asynchronous SOAP sender adapter queue. The threads which handle the calls are not made for handling synchronous calls. If the synchonous web service has a high response time (10 seconds for example). The thread is blocked for this time.
Synchronous threads are not blocked that long.
Is there a way to configure which adapter queue has to be used by the lookup API?
Regards,
TorstenHello,
Regarding the error in the trace:
nested exception is: com.sap.engine.services.deploy.exceptions.ServerDeploymentException: [ERROR CODE DPL.DS.5070] Already started operation with application sap.com/com.sap.aii.adapter.soap.app in the cluster. No other operation with this application is allowed at the moment, because it is locked in the enqueue server or the lock from there has been manually removed. at com.sap.engine.services.ejb3.runtime.impl.DefaultContainerRepository.startApp(DefaultContainerRepository.java:236) at
please see note
1339258 PI Adapter applications locked during start up
You could try restarting the SOAP Adapter applications :
com.sap.aii.adapter.soap.app
com.sap.aii.adapter.soap.lib
from the JEE NWA
-> Operation Management
-> Systems
-> Start and Stop
-> Java EE Applications
http://wiki.sdn.sap.com/wiki/display/XI/start_stop_applications
Regards,
Sarah -
Value Mapping Group in PI 7.1
Hi All,
In PI 7.1 Integration Directory there is one section as "Value Mapping Group".I suppose that it is used if and only if value mapping is used.But I am not using any kind of value mapping so can I skip that section?
Thanks in advance.Hi Abhishek,
THanks for the reply.
I have another query. it is as follows:
Actually I am having the Process Order coming in the source with 5 to 6 relevant fields.Out of these Process Order fields Status is one of the fields.Based on the the StatuS field the BAPIs will be called at the receiver.So can I skip Integrated Configurations as I am imposing the condition on the data in the payload(Source Structure) as Integrated configuration will not be helpful in my scenerio.?
Or shall I skip Sender Agreement ,Receiver Agreement?
Thanks in advance.
Maybe you are looking for
-
How to identify empty InfoObjects used in a Cube
Hello Gurus! I need some help. How do I find empty InfoObjects used in a Cube? I have 20+ Cubes and I need to identify those objects in the cubes, which are empty /not filled/. Statistics Except writing an ABAP Thanks in advance Martin
-
I would like to know where can I find the instruction to install Oracle 10G on a Win XP machine. I have the following disk: 1. - Oracle DB 10G Rel 3 (10.1.0.2) Windows 32 Bits 2. - Oracle 10G Client And I would like to know if I need to install both
-
Lion vs Snow Leopard - Nightmare for me
- user interface *...! - support old applications (Rosetta) *!!! - bilingual setings *!!! - iCloud vs MobielMe vs Mac.com *No Comment Thank You Apple. All benefits of your OS are ...!!! Why Apple, WHY?
-
Hi, We are trying to activate the admin cockpit thru ABAP "RSTCC_ACTIVATE_ADMIN_COCKPIT" and have couple of question. 1. Activate SAPI DataSources ( wat is mean by this) 2. Activate MySelf Source sytem (My source system is already in active, does th
-
Context menu in the Universal Worklist
Hello all, I'm migrating from Portal 7.0 to 7.3, and right now, I'm trying to migrate the UWL configuration. I created the Universal Worklist Systems, I uploaded all the .xml configurations, I re-registered the system, I configurated the UWL iView...