on 2006 Aug 01 7:49 PM
How to do a jdbc lookup based on a string in the Sender file name?.
For example Sender file name is NYC1010st.csv and CAL2010st.csv
I need to determne dynamically to go to different systems to get data. If NYC then call to System X , If CAL call another system to get data.
My scenario is MATMAS --> XI ---> FTP. Within XI I need to do jdbc look up based on above criteria.
Thanks for any siggestions and help and is appreciated.
Hi Ram,
You need find out the filename as mentioned by Michal and once you have the file name information you can use that in a condition to determine the Communication channel to be used for JDBC lookup.
Step 1: Define two communication channels in ID for different DB systems.
Step 2: Get the File name in UDF using the following code
DynamicConfiguration dynConifg = (DynamicConfiguration) container.getTransformationParameters().get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);
DynamicConfigurationKey key = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/File","FileName");
String sourceFileName = (String)dynConifg .get(key);
Step 3: check the sourceFileName for NYC1010st.csv or CAL2010st.csv and based on that decide your Communication channel to use for lookup.
if(sourceFileName.equals("NYC1010st.csv"))
channel = LookupService.getChannel("BusinessSystemName","CommunicationChannel-DB1");
else
if (sourceFileName.equals("CAL2010st.csv"))
channel = LookupService.getChannel("BusinessSystemName","CommunicationChannel-DB2");
Proceed with rest of the coding and configuration.
Here I am assuming that you know the basics of JDBC lookup.
Regards,
Ananth
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Ram,
For JDBC look up, take a look at this blog,
/people/siva.maranani/blog/2005/08/23/lookup146s-in-xi-made-simpler
If uou are on SP14 and above, to access the filename in maping, in your sender file adapter, select ADAPTER SPECIFIC IDENTIFIERS and then FILENAME.
Then, in you mapping, you can acess the filename using the following code,
DynamicConfiguration conf = (DynamicConfiguration) container.getTransformationParameters().get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);
DynamicConfigurationKey key = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/File","FileName");
// Get Sourcefilename
String oldfilename=conf.get(key);
Regards,
Bhavesh
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
you can get the filename in the mapping in many ways
(adapter specific identifiers) >= SP14
from adapter module < Sp14
Regards,
michal
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Michal, thanks for reply. But How do I correlate the Name I got from File Name to the Server for loookup.
For Example
File Name: NYC1010CS.csv Jdbc adapter should look at Server X
File Nmae: CAL2010CS.csv Jdvc adapter should look at Server Y
etc etc
So based on the file name how should I dynamically determine which server I should goto in Lookup.
Please eloborate as I'm confused and I'm new to Java functions.
As per your message I will get the 3 letter state from file name. Something similar to value mapping does help?
User | Count |
---|---|
62 | |
10 | |
10 | |
6 | |
6 | |
6 | |
5 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.