XI 3.0 AF-Modul DynamicConfiguration: dc.nameLength; dc.valueLength
Hi everybody,
according to SAP Note 974481 I wonder what the purpose of the moduleparameters:
dc.nameLength and dc.valueLength is?
What sense does it make to restrict the length of
dc.nameLength = maximal length of the name and
dc.valueLength = maximal length of the value?
What is meant by dc.nameLength and dc.valueLength?
Could you give a sample?
Thanks
regards
Mario
Hi,
Happy you find Koneki different than editors. We have try hard to bring IDE features in Koneki, the counterpart of that are things such as blinking syntax coloration but workaround exists as Simon explain to you.
Workaround are not perfect and in your case the solution should be to have partial AST generation that can work even if the code contains errors. Doing this on a dynamic language is kind of tricky. We haven't find a solution so far but if you have any clue about that, you are welcome.
Marc
Similar Messages
-
FileName in Sender File Adapter Module
Hi Folks,
In my sender file adapter have written a module to read the picked file name. The protocol used is NFS.
Notice that the file name read in the module has the absolute path, including the directory path. E.g The file name xyz has to be picked from source directory
XIServer\Outbound. In the module when I retrieve the file name, it comes up as
XIServer\Outbound\xyz. Is this expected behaviour?
I was expecting just the file name<xyz> to be retrieved.
Thanks,
AnandHI,
Create an UDF and write this code.
DynamicConfiguration conf = (DynamicConfiguration) container.getTransformationParameters().get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);
DynamicConfigurationKey key =
DynamicConfigurationKey.create("http://sap.com/xi/XI/System/File","FileName");
String ourSourceFileName = conf.get(key);
return ourSourceFileName;
in Adapter u will have Adapter specific parameters check the file name check box.
Using this UDF u will get the file name at target side.
Regards,
Phani. -
Adapter Module Receiver File Adapter
Hi All,
I am getting file name in the Mapping in my target structure in a field FILENAME and i want to use this field to create a file at the target with the name as the value in FILENAME.
I have to develop this by using Adapter Module.
Note : This can be done by Variable Substitution and Dynamic Configuration UDF.But i want to implement the same by using adapter module.
Can somebody help me out in getting the FILENAME from mapping inside the module process method of module.
Thanks,
ZabiTry this..
private Map param;
DynamicConfiguration conf = (DynamicConfiguration) param.get(
StreamTransformationConstants.DYNAMIC_CONFIGURATION);
DynamicConfigurationKey KEY_FILENAME = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/File","FileName");
String Filename = conf.get(KEY_FILENAME);[/code]
Thanks
Sebin -
How to set JMS Header Property without using DynamicConfiguration.
Hi,
My Scenario is: PDF File -->XI -->JMS
I need to send the PDF file as it is to JMS receiver, which shouldn't be a problem. The problem is I need to set the same file name in the Receiver JMS header property.
So to do this I am using DynamicConfiguration in message mapping but when File Adapter picks the PDF file (as it is) I get the run time mapping error which is quite obvious since message mapping expects the data in xml format.
Do you have any idea if I can avoid the message mapping and set the Dynamic Configuration somewhere else (not sure if java mapping can help here) or if there is some Module available to set file name in JMS header.
Note: PDF File name is dynamic.
Thanks!I am on XI 3.0. I am not good in java.. can someone give an example?
Update:-
I have done some changes to my code and now it is working for me. Since I don't have much knowledge in Java (except writing UDFs )so don't know how good this coding is but defiantly this is my first step to learn Java APIs. Thanks to everyone for their comments & suggestions!!
If any improvement in below code can be done please let me know.
package com.sap.xi;
import com.sap.aii.mapping.api.*;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
import com.sap.aii.mapping.api.StreamTransformation;
import com.sap.aii.mapping.api.StreamTransformationException;
import org.xml.sax.helpers.DefaultHandler;
public class JMSHeaderMapping extends DefaultHandler implements StreamTransformation{
private Map param;
public void setParameter(Map map)//to access message header data during runtime
param = map;
if(param == null)
param = new HashMap();
public void execute(InputStream in, OutputStream out) //This method is used to run the mapping
throws StreamTransformationException
DynamicConfiguration dynamicconfiguration = (DynamicConfiguration)param.get("DynamicConfiguration");
DynamicConfigurationKey key = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/File", "FileName");
String MyFileName = dynamicconfiguration.get(key);
DynamicConfigurationKey key1 = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/JMS","DCJMSMessageProperty0");
dynamicconfiguration.put(key1, MyFileName);
byte[] inbyte = null;
try {
// convert InputStream into byte stream
int bufsize = in.available();
inbyte = new byte[bufsize];
in.read(inbyte);
// convert byte stream into OutputStream
out.write(inbyte);
catch (Throwable t){
t.printStackTrace();
Edited by: Sarvesh Singh on May 9, 2011 8:47 PM -
How to access Adapter Specific Message Attribute in my own adapter module
Hi,
I'm developing a mail adapter customer module. Now I have a requirement about getting the CC information from mail. Even if I
checked the option of "use mail package" when configing sender Mail Adapter, I still can not get CC information in my module
because it is not included in mail package.
I got to know CC information is included in ASMA(Adapter Specific Message Attribute), but how can I access ASMA in my module?
Till now I know there are two ways to access ASMA
1. use AF_Modules/DynamicConfigurationBean XI standard module to access ASMA.I did it as below:
add this module in front of my own module, then set key: write http://sap.com/xi/XI/System/Mail SHeaderCC and value :
<b>message.refToMessageId</b>(which message property should be put here?). I'm trying to get it by message.getRefToMessageId() in my
own module. But what happens is not as I expected, I get null instead of CC information. Which step I did wrong?
2. use mapping api
DynamicConfiguration conf = (DynamicConfiguration) <b>container</b>
.getTransformationParameters()
.get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);
DynamicConfigurationKey key = DynamicConfigurationKey.create(
http://sap.com/xi/XI/System/Mail,
SHeaderCC);
but how can I get <b>container</b> object in my module?
Is there any other way to access ASMA in customer module?
Thankshi,
>>>>but how can I access ASMA in my module?
have a look at this blog:
/people/daniel.graversen/blog/2006/10/05/dynamic-configuration-in-adapter-modules
and try getMessageProperty
it's also here:
in Adapter-Specific Message Attributes link
http://help.sap.com/saphelp_nw04/helpdata/en/17/50d440e14f8431e10000000a1550b0/frameset.htm
Regards,
michal
<a href="/people/michal.krawczyk2/blog/2005/06/28/xipi-faq-frequently-asked-questions"><b>XI / PI FAQ - Frequently Asked Questions</b></a> -
Reading Dynamic Configuration information in side adapter module.
Hi All,
We are writing an adapter module for one of our receiver adapter.
On the Sender side we have a file adapter whose adapter specific properties are checked. So the message has the file name in the Dynamic configuration.
Now we need to read this file name from dynamic configuration inside our adapter module for receiver adapter.
If any one can tell us how to do this we would be really thankful.
Thanks
AbinashBhavesh,
When we use the follwoing code inside mapping
DynamicConfiguration conf = (DynamicConfiguration) container.getTransformationParameters().get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);
the conf object gets populated
but inside our adapter module we ares using
Map param;
DynamicConfiguration conf = (DynamicConfiguration)
param.get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);
DynamicConfigurationKey key = DynamicConfigurationKey.create
("http://sap.com/xi/XI/System/File","FileName");
String ourSourceFileName = conf.get(key);
Now the question is from where the <b>object of par</b>am will initialize.
I think we need to get container object from some where, but don't know how to get it as inside mapping the container object is passed as method argument.
Thanks
Abinash -
Problem while using module DynamicConfigurationBean
Hi experts
I am doing a file-to-file bypass (<b>without any mapping involved</b>) scenario.My input file name is <comanycode>.<date>.<timestamp>.dat and I want output filename as <companycode>constant.<date><timestamp>.dat To achive this I used <b>Dynamic configuration bean module</b> along with variable substitution but its appending the whole file name however i want only the first four letter of the input file namei.e company code.So plz guide me that wheather using this bean extracting some part of the file name is possible or not?
Is there is any other way to extract some part of the file name without doing any mapping i.e without the help of payload? Plz guide me as its urgent.
Regard
NehaNeha,
DynamicConfiguration Bean will allow you to set the values,but if I understand right you want to perfrom substring operations etc on the data in the file.
To do this, you would need a write a Custom Module.
Regards
Bhavesh -
Adapter module for file renaming
Hi all,
I want to rename a file before writing into target directory. Is it possible to do this using adapter module? Im using File adapter at the sender and receiver.
I tried renaming the file using DynamicConfiguration method.I want some custom constants to be added to the file name. I want to know if file renaming is possible by writing an Adapter module ..
ThanksRahul~
Writing a module would be too much effort deploying and using..Instead u can use a dummy mapping to target and use a piece of Java code for transformation..
chk my blog will save u effort..XSL may not be required in ur case
/people/sriram.vasudevan3/blog/2005/11/21/effective-xsl-for-multimapping-getting-source-filenames-in-legacy-legacy-scenarios -
Debugging JMS adapter with Module Configuration
Hi.
I have a problem debugging my JMS adapter with module configuration.
All I get from the Message Monitor is a status "System Error", and no error category or error message.
I know there's an error in my Module configuration design, since it works fine without.
My configuration looks like this:
PROCESSING SEQUENCE:
1 localejbs/AF_Modules/MessageTransformBean Local Enterprise Bean XML2Plain
2 localejbs/SAP XI JMS Adapter/ConvertMessageToBinary Local Enterprise Bean convert_XI2Bin
3 localejbs/SAP XI JMS Adapter/SendBinarytoXIJMSService Local Enterprise Bean exit
MODULE CONFIGURATION:
XML2Plain Transform.Class com.sap.aii.messaging.adapter.Conversion
XML2Plain Transform.ContentType text/plain;charset=utf-8
XML2Plain xml.conversionType StructXML2Plain
XML2Plain xml.addHeaderLine 0
XML2Plain xml.recordsetStructure STARTRECORD,DATARECORD,SERVICEYDELSERRECORD,SLUTRECORD
XML2Plain xml.STARTRECORD.fieldFixedLengths 2,8,6,7,10,7,3,3
XML2Plain xml.DATARECORD.fieldFixedLengths 2,8,6,4,35,17,7,7,7,5,5,5,18,18,18,18,18,18,18,18,18,9
XML2Plain xml.SERVICEYDELSERRECORD.fieldFixedLengths 2,8,6,4,3,20,18,18,18
XML2Plain xml.SLUTRECORD.fieldFixedLengths 2,8,6,7,10,7
XML2Plain xml.STARTRECORD.fixedLengthTooShortHandling Cut
XML2Plain xml.DATARECORD.fixedLengthTooShortHandling Cut
XML2Plain xml.SERVICEYDELSERRECORD.fixedLengthTooShortHandling Cut
XML2Plain xml.SLUTRECORD.fixedLengthTooShortHandling Cut
The structure of the message looks like this:
<STARTRECORD> (occurence = 1)
<DATARECORD> (occurence = 1..unbounded)
--- <SERVICEYDELSERRECORD> (occurence = 0..unbounded)
<SLUTRECORD> (occurence = 1)
I've crosschecked every field, and it length and all looks like it should!
The worst part is the one not getting the reason why it fails. Any way I can get this information?
I've tried to look in the Adapter Framework log, but I have no clue where to look for anything usefull.
Help
Regards PeterHello,
Below is the module configuration in my JMS sender channel:
Check Message Local Enterprise Bean key
ConvertJMSMessageToBinary Local Enterprise Bean convert_JMS2Bin
ConvertBinaryToXMBMessage Local Enterprise Bean convert_Bin2XI
CallSapAdapter Local Enterprise Bean call_AF_MS
CheckMessage is a custom module which does some check on the incoming message.
Now what I want to know is at which position should I include the DynamicConfiguration Bean? Should it be included at position 1 or at position 2 or someother position?
~Thanks. -
See Burger Error in BICMODULE-module:Adapter call failed. Reason: null
Hello All,
Scenario IDOC to File using Seeburger BIC problems in in my receiver adapter when converting from XML to EDI.
Error is:
"Message processing failed. Cause: Error in BICMODULE-module:Adapter call failed. Reason: null"
The Seeburger modules used in my receiver adapter:
1 localejbs/CallBicXIRaBean Local Enterprise Bean BIC_MT
2 localejbs/CallBicXIRaBean Local Enterprise Bean BIC
3 localejbs/Seeburger/FileStore Local Enterprise Bean ARCHIVE_EDI
4 CallSapAdapter Local Enterprise Bean 0
with following module configurations
BIC destDelimiter @http://seeburger.com/xi/bic/destDelimiter
BIC destSourceMsg source
BIC destTargetMsg MainDocument
BIC dynamicConfiguration true
BIC newLine true
BIC useAttribIfSet true
BIC_MT PartnerLookup on
BIC_MT destSourceMsg MainDocument
BIC_MT destTargetMsg MainDocument1
BIC_MT mappingName XML_Generic_ANSI_X12_to_DB_MT_OUT
BIC_MT saveSourceMsg source
Can some one tell me why there is an Error and what additional module configurations it requires .
Thank you,Hi,
If possible go to mapping in BIC designer Tool and execute the same by passing your payload there...
if you encounter any errors then there might be a problem with mapping developed...or can be payload..
Also check the parameter used for destSourceMsg source ...is that the source message which contains the payload ?
HTH
Rajesh -
Converting Sender File as attachment using PayloadSwapBean module
Hi Expert,
I have a scenario where I have to pick up a file from PI & send it to another PI server as an attachement using XI Adapter.
I went through SDN & found several messages describing configuration for attachement for mail & SOAP adapter.
I attached PayloadSwapBean in my sender File channel & passed keyname as Conent-Disposition & keyValue as attachment however I dont see file being converted as an attachment in SXMB_MONI. It still shows it as main payload.
Please help me on how to convert a sender file payload into attachement. I would like to keep attachment name same as file name. Let me know how we can do that. I also noticed that on receiver XI adapter (which I would be using to send data to next PI system), you can't attach modules. Let me know if there is some other standard way of achieving this requirement.
Thanks
Regards
SushilHi Stefan,
No, I dont see dynamic configuration values in second PI system. I am able to see them in first system.
Hi Amol,
Do you see dynamic configuration in second PI? I am still referring ASMA in second PI system as file parameters? Should it be HTTP header? (How are you referring ASMA in second PI). Below is my code which give me null at run time.
DynamicConfiguration dCon =(DynamicConfiguration) container.getTransformationParameters().get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);
DynamicConfigurationKey dKey = DynamicConfigurationKey.create("http:/"+"/sap.com/xi/XI/System/File","Directory");
String FileDirectory = dCon.get(dKey);
return FileDirectory; -
ABAP Table for DynamicConfiguration details of XML message in SXMB_MONI
Dear All
I have a requirement where I have to read the value from DCJMSCorreleationID property of message which is recorded in SXMB_MONI based on the SAP PI message ID.
I have 2 interfaces as below
Interface one (INT1) : JMS-PI-ECC --->Inbound interface to ECC when message is received on PI it will have DCJMSCorreleationID populated with some ID as shown below
Go to SXMB_MONI -->Inbound Message ---> SOAP Header --->DynamicConfiguration
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<SAP:DynamicConfiguration SOAP:mustUnderstand="1" xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
<SAP:Record namespace="http://sap.com/xi/XI/System/JMS" name="DCJMSCorreleationID">
a26c4276-9d5e-11e3-ba87-000004238292
</SAP:Record>
<SAP:Record namespace="http://sap.com/xi/XI/Message/30/general" name="senderAgreementGUID">dd3fb7c6b983314293e14ba59df1ad45</SAP:Record></SAP:DynamicConfiguration>
Interface Two (INT2):-ECC-PI-JMS----> Outbound from ECC where I am passing a SAP PI Message ID for INT1 in one of the field
Can I read this DCJMSCorreleationID for INT1 when INT2 is executed and have message ID for INT1 ?
Where are these SOAP hearder porperties like DCJMSCorreleationID are stored on ABAP table?Thanks Jörg for your reply
I have a back up plan for ZTable approach but the only concern there is RFC calls for read and write
we have implemented a FM which gives the original payload using a std SAP functional modules FM SXMB_GET_XI_MESSAGE_INT and ECATT_CONV_XSTRING_TO_STRING
But I am looking for the SOAP Header information for DCJMSCorreleationID
So if there is anything which will help to read this DCJMSCorreleationID property easily form existing message SOAP header is really helpful -
XI AF API call failed. Module exception: Java Mapping
Hi Experts,
I have faced a typical error for one of my interface. The Scenario is SOAP to SOAP and we are performing SOAP Lookup before sending the data to Target web service. We are using one Java Mapping 'FileIns_lookupLoad.java --- com/fi/' and performing the SOAP Lookup from within the code. In the Lookup Communication channel we are using 'Axis' as message protocol and passing couple of values through Module Key parameters. We have same ESR and ID objects in Development, Quality and Production (as per Version ID and History).
Now the problem is Lookup is failing only in Development but Quality and Production is working fine. I have replaced Quality CC URL with the development WSDL URL, but that worked fine. That means Development Web Service is good. We are getting the below error in Dev:
<SAP:Stack>StreamTransformationException triggered by application mapping program com/fi/FileIns_lookupLoad; Look Up Failed</SAP:Stack>
Trace : *
<Trace level="1"
type="T"> Some Thing Wrong in LookUpError when calling an adapter by using the communication channel CC_IN_SOAP_GEInsuranceLoadLookup1 (Party: , Service: BusService_GE, Object ID: 4214805c52893ef9b0b3f0ef0902fe9e) XI AF API call failed. Module exception: 'while trying to invoke the method org.apache.axis.types.URI.toString() of an object returned from com.sap.xi.XI.Message._30.QualifiedName.getNamespace()'. Cause Exception: 'while trying to invoke the method org.apache.axis.types.URI.toString() of an object returned from com.sap.xi.XI.Message._30.QualifiedName.getNamespace()'. </Trace>
<Trace level="1" type="T">*** END APPLICATION TRACE ***</Trace>
<Trace level="1" type="T">Java mapping com/fi/FileIns_lookupLoad has thrown a StreamTransformationException. Thrown: com.sap.aii.mapping.api.StreamTransformationException: Look Up Failed at com.fi.FileIns_lookupLoad.execute(FileIns_lookupLoad.java:282) at com.fi.FileIns_lookupLoad.transform(FileIns_lookupLoad.java:74) at com.sap.aii.ib.server.mapping.execution.JavaMapping.executeStep(JavaMapping.java:92) at com.sap.aii.ib.server.mapping.execution.Mapping.execute(Mapping.java:60) at com.sap.aii.ib.server.mapping.execution.SequenceMapping.executeStep.................................................
................................................................................<Trace level="1" type="T">Application mapping program com/fi/FileIns_lookupLoad throws a stream transformation exception: Look Up Failed Thrown: com.sap.aii.ib.core.mapping.execution.ApplicationException: Application mapping program com/fi/FileIns_lookupLoad throws a stream transformation exception: Look Up Failed at com.sap.aii.ib.server.mapping.execution.JavaMapping.executeStep(JavaMapping.java:95) at com.sap.aii.ib.server.mapping.execution.Mapping.execute(Mapping.java:60) at com.sap.aii.ib.server.mapping.execution.SequenceMapping.executeStep(SequenceMapping.java:40) at com.sap.aii.ib.server.mapping.execution.Mapping.execute
I have already checked with Basis and as per them JDK and Java versions are identical in Dev, QAS and Prod. It seems something is wrong with 'XI AF API' which we are calling from the channel. If we totally ignore Lookup process and send direct data, it is working fine. Target CC is also using Axis.
Sequence in CC: afreq ->xireq ->wssec2 ->xires ->afres
For any more information please let me know.
Thanks,
Nabendu.Hi Anupam,
The Java Mapping code is same in Dev , QAS and Prod. Also the versions of the JAR is same.
Please find the code below.
package com.fi;
import java.util.HashMap;
import com.sap.aii.mapping.api.AbstractTrace;
import com.sap.aii.mapping.api.AbstractTransformation;
import com.sap.aii.mapping.api.StreamTransformation;
import com.sap.aii.mapping.api.StreamTransformationConstants;
import com.sap.aii.mapping.api.MappingTrace;
import com.sap.aii.mapping.api.StreamTransformationException;
import com.sap.aii.mapping.api.DynamicConfiguration;
import com.sap.aii.mapping.api.DynamicConfigurationKey;
import com.sap.aii.mapping.api.TransformationInput;
import com.sap.aii.mapping.api.TransformationOutput;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.*;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.*;
import org.w3c.dom.views.AbstractView;
import org.xml.sax.SAXException;
import java.io.ByteArrayInputStream;
import com.sap.aii.mapping.lookup.*;
/*import com.sap.aii.utilxi.hmis.server.HmisEnvironment.Accessor;
//import com.sap.aii.utilxi.lock.api.LockServiceException;
//import com.pmintl.pppimes.RFCLookup.javamapping.*;
//import java.io.FileInputStream;
//import java.io.FileOutputStream;*/
import java.text.DateFormat;
import java.text.SimpleDateFormat;
//import java.text.ParseException;
import java.util.Date;
import java.io.*;
public class FileIns_lookupLoad extends AbstractTransformation{
private Map param = null;
private AbstractTrace trace = getTrace();
String senderService = null;
String inParamChannel = null;
String inParamBusService = null;
//3. Each JAVA Mapping using program 7.1 API must implement the method
// transform(TransformationInput in, TransformationOutput out)
// as oppose to execute Method in earlier version.
public void transform(TransformationInput arg0, TransformationOutput arg1) throws StreamTransformationException {
// TODO Auto-generated method stub
//4. An info message is added to trace. An instance of trace of object is obtained by calling
// the getTrace method of class AbstractTransformation
inParamChannel = arg0.getInputParameters().getString("COMM_CHANNEL");
inParamBusService = arg0.getInputParameters().getString("BUS_SERVICE");
getTrace().addInfo("Input Parameter: " + inParamChannel);
getTrace().addInfo("Input Parameter: " + inParamBusService);
this.execute(arg0.getInputPayload().getInputStream(),
arg1.getOutputPayload().getOutputStream());
//5. Input payload is obtained by using arg0.getInputPayload().getInputStream()
* @param args
public static void main(String[] args) {
// TODO Auto-generated method stub
public void execute(InputStream in, OutputStream out)
throws StreamTransformationException {
// TODO Auto-generated method stub
try
//Get The Trace
// trace = (AbstractTrace)param.get(StreamTransformationConstants.MAPPING_TRACE );
trace = getTrace();
getTrace().addInfo("Java Mapping Started");
DocumentBuilderFactory ifactory = DocumentBuilderFactory.newInstance();
DocumentBuilder ibuilder = ifactory.newDocumentBuilder();
Document IDoc = ibuilder.parse(in);
Document TDoc = ibuilder.newDocument();
String mrnVal = "";
trace.addInfo("Preparing Target Doc");
Element message = TDoc.createElementNS("urn:Medtronic.com:CATS_Patient_Transactions","n1:Mt_Insurance");
Node tRoot = TDoc.appendChild(message);
//trace.addInfo(tRoot.getNodeName());
Element sRoot = (Element)IDoc.getFirstChild();
//trace.addInfo(sRoot.getNodeName());
NodeList nl = sRoot.getChildNodes();
// trace.addInfo("Len"+nl.getLength());
//// for(int i=0;i<nl.getLength();i++)
// Node n1 = TDoc.importNode(nl.item(i), true);
// trace.addInfo("Adding Child Nodes");
// trace.addInfo(nl.item(i).getNodeName());
// tRoot.appendChild(n1);
NodeList lmrn = sRoot.getElementsByTagName("Mrn");
if(lmrn != null)
Node n1 = TDoc.importNode(lmrn.item(0), true);
Element e1 = (Element)lmrn.item(0);
//trace.addInfo(e1.getNodeName());
mrnVal = e1.getTextContent();
tRoot.appendChild(n1);
NodeList lfsc = sRoot.getElementsByTagName("Fsc");
if(lfsc != null)
for(int i=0;i<lfsc.getLength();i++){
Element n1=TDoc.createElement(lfsc.item(i).getNodeName());
tRoot.appendChild(n1);
Node fieldch = TDoc.createElement("Fields");
n1.appendChild(fieldch);
NodeList chl = lfsc.item(i).getChildNodes();
trace.addInfo("len11"+chl.getLength());
for(int j=0;j<chl.getLength();j++){
if(!chl.item(j).getNodeName().equals("FscNumber")&&!chl.item(j).getNodeName().equals("Priority")){
if(chl.item(j).hasChildNodes()){
trace.addInfo(chl.item(j).getNodeName());
Element fscfield = TDoc.createElement("FSCField");
fieldch.appendChild(fscfield);
NodeList FUQl = chl.item(j).getChildNodes();
for(int p =0;p<FUQl.getLength();p++){
//trace.addInfo(" i: "+i+" J: "+j+" P: "+p);
if(FUQl.item(p).getNodeName().equals("FUQNumber")){
//Node tFUQ = TDoc.createElement("FUQNumber");
//tFUQ.setTextContent(FUQl.item(p).getTextContent());
fscfield.setAttribute("FUQNumber", FUQl.item(p).getTextContent());
if(FUQl.item(p).getNodeName().equals("Value")){
Node tVal = TDoc.createElement("Value");
tVal.setTextContent(FUQl.item(p).getTextContent());
fscfield.appendChild(tVal);
//Node tName = TDoc.createElement("Field");
//tName.setTextContent(chl.item(j).getNodeName());
fscfield.setAttribute("Field", chl.item(j).getNodeName());
// Node fuqch = chl.item(j).getFirstChild();
// Node valch = fuqch.getNextSibling();
// if(fuqch!=null){
// Node tFUQ = TDoc.createElement("FUQNumber");
// tFUQ.setTextContent(fuqch.getTextContent());
// fscfield.appendChild(tFUQ);
// if(valch!=null){
// Node tVal = TDoc.createElement("Value");
// tVal.setTextContent(valch.getTextContent());
// fscfield.appendChild(tVal);
// Node tName = TDoc.createElement("Filed");
// tName.setTextContent(chl.item(j).getNodeName());
// fscfield.appendChild(tName);
else{
//Node numch =TDoc.importNode(chl.item(j), true);
//Element e1 =(Element)n1;
if(chl.item(j).getNodeName().equals("FscNumber")){
n1.setAttribute("Number", chl.item(j).getTextContent());
if(chl.item(j).getNodeName().equals("Priority")){
n1.setAttribute("Priority", chl.item(j).getTextContent());
//tRoot.appendChild(lfsc.item(0));
// Element e1 = (Element)lfsc.item(0);
// trace.addInfo(e1.getNodeName());
// mrnVal = e1.getNodeValue();
/////Start of Look Up Code////
//Preparing Input String
String lookUpRequest = "<LoadPatientFullInsuranceDetail><Mrn>"+mrnVal+"</Mrn></LoadPatientFullInsuranceDetail>";
trace.addInfo("Request");
trace.addInfo(lookUpRequest);
SystemAccessor acc;
Channel channel;
Payload lookupResult;
try
channel = LookupService.getChannel(inParamBusService, inParamChannel);
trace.addInfo("Got the channel");
acc = LookupService.getSystemAccessor(channel);
trace.addInfo("Got The Channel and Accessor");
InputStream ist = new ByteArrayInputStream(lookUpRequest.getBytes());
XmlPayload payload = LookupService.getXmlPayload(ist);
if(acc != null){
trace.addInfo("Got The Channel and Accessor");
trace.addInfo("Executing The Webservice");
lookupResult = acc.call(payload);
trace.addInfo("End of Executing The Webservice");
trace.addInfo(lookupResult.toString());
if(lookUpRequest!=null){
trace.addInfo("Responce is not null");
InputStream rist = lookupResult.getContent();
Document lresDoc = ibuilder.parse(rist);
Node n1 = lresDoc.getFirstChild();
trace.addInfo(n1.getNodeName());
if(n1.getNodeName().endsWith("LoadPatientFullInsuranceDetailResponse"))
Node ch1 = n1.getFirstChild();
trace.addInfo(ch1.getNodeName());
NodeList lookupnl = ch1.getChildNodes();
//trace.add
for(int i=0;i<lookupnl.getLength();i++)
Node n2 = TDoc.importNode(lookupnl.item(i), true);
trace.addInfo("Adding Child Nodes");
trace.addInfo(lookupnl.item(i).getNodeName());
tRoot.appendChild(n2);
else{
throw new StreamTransformationException("Error in Look Up"+n1.getTextContent());
//while(ch1.hasChildNodes() && !ch1.getNodeName().equals("FSCS")){
else{
trace.addWarning("Responce is null");
throw new LookupException();
catch(LookupException le)
trace.addWarning("Some Thing Wrong in LookUp"+le.getMessage());
throw new StreamTransformationException("Look Up Failed");
Transformer transformer = TransformerFactory.newInstance().newTransformer();
// StreamResult reqResult = new StreamResult(new StringWriter());
DOMSource source = new DOMSource(TDoc);
Result result = new StreamResult(out);
transformer.transform(source,result);
catch(StreamTransformationException ste)
throw new StreamTransformationException(ste.getMessage());
catch(Exception e){
trace.addInfo(e.getMessage());
finally{ -
Message Header value is not written to DynamicConfiguration
Hi Forum,
I have a scenario on a PI 7.11 SP06, where a SOAP message is sent via HTTP to a SAP WAS Java.
The response contains in header a parameter"set-cookie" which has to be written in dynamic configuration.
For example: Set-Cookie: JSESSIONID=DF4D3F35636D8E3549490B678SAP9403229; Path=/
Therefore, i use SOAP adapter with axis extension, but the "set-cookie" content is not written to dynamicconfiguration.
Here is my axis adapter configuration. Do you see something wrong here?
**Processing Sequence**
1 AF_Adapters/axis/AFAdapterBean afreq
2 AF_Adapters/axis/HandlerBean xireq----------------------O/B Handler
3 AF_Adapters/axis/HandlerBean trp--------------------------- HTTPSender
4 AF_Adapters/axis/HandlerBean dcres----------------------This is for Dynamic Configuration (read)
5 AF_Adapters/axis/HandlerBean xires------------------------O/BHandler
6 AF_Adapters/axis/AFAdapterBean afres
**Module Configuration**
dcres handler.type java:com.sap.aii.axis.xi.XI30DynamicConfigurationHandler
dcres key.1 read http://sap.com/xi/XI/System/HTTP SetCookie
dcres location.1 header
dcres value.1 set-cookie
trp handler.type java:com.sap.aii.adapter.axis.ra.transport.http.HTTPSender
trp module.pivot true
xireq handler.type java:com.sap.aii.axis.xi.XI30OutboundHandler
xires handler.type java:com.sap.aii.axis.xi.XI30OutboundHandler
I followed the [How To Guide|http://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/b092777b-ee47-2a10-17b3-c5f59380957f] which is unfortunately for 7.0.
Also i tried with "set-cookie" and "Set-Cookie" without success. I have written a small java test which is accessing
this service and I can see parameter "set-cookie" in the header. So with small letters should be okay.
I have also read this very similar [sdn thread|DynamicConfiguration to Message Header;.
Tests with writing constants to dynamicconfiguration works without any problem.
I'm not sure if i have the correct handler classes. Is there any documentation about the handlers?
Any help is very appreciated.
Thanks in forward and best regards,
SigiHi all,
thanks for response.
I'm aware of these functions so I tried the test to create a dummy entry in header and read it from there.
So first i used which wrote constant to ASMA
dcres1 key.1 insert http://sap.com/xi/XI/System/HTTP dummy
dcres1 value.1 12345
Then I used write to move that constant from ASMA to header
dcres2 key.1 write http://sap.com/xi/XI/System/HTTP dummy
dcres2 location.1 header
dcres2 value.1 dummy
Finally i used read on that dummy value, creating a new entry in ASMA based upon that dummy entry
dcres3 key.1 read http://sap.com/xi/XI/System/HTTP SetCookie
dcres3 location.1 header
dcres3 value.1 dummy
So the "read" entry is correct in my origin settings. So now I know that the "set-cookie" header parameter from Java WAS response is not passed through SOAP Axis adapter.
Does anybody know if there are settings which have to be changed in system? Or is that a design as usual, that the set-cookie parameter is not passed to SOAP AXIS HTTP-header params?
Thanks in forward and best regards,
Sigi
Edited by: Siegfried Ertl on Apr 13, 2011 3:06 PM -
Dynamic conifguration for adapter module
com.sap.aii.mapping.api.DynamicConfigurationKey
Class used to create a key object for an adapter-specific attribute. The key object comprises the adapter namespace and the property name.
● com.sap.aii.mapping.api.DynamicConfiguration
Class used to read, change, or delete the value of an adapter-specific attribute. In a method, you use objects of type DynamicConfigurationKey to access the attributesFor Module Processors, check Adapter-Specific Message Attributes of the following link:
http://help.sap.com/saphelp_nw2004s/helpdata/en/17/50d440e14f8431e10000000a1550b0/frameset.htm
The methods to set/get Attributes in Adapter Module are:
Message.setMessageProperty()
Message.getMessageProperty()
The following info can be obtained in javadoc:
getMessageProperty
public java.lang.String getMessageProperty(java.lang.String namespace,
java.lang.String name)
Returns the value of an additional message property, in case that such an value exists.
Parameters:
namespace - The namespace of the property to get.
name - The name of the property to get.
Returns:
The value for the given namespace/name combination, or null, when no such value exists.
setMessageProperty
public void setMessageProperty(java.lang.String namespace,
java.lang.String name,
java.lang.String value)
throws InvalidParamException
Sets an additional message field, if supported by the Message profile implementation. Such additional fields will not be visible as an own table column in the MS message monitoring, since it is to be stored as part of the message header. This mechanism allows different protocol implementations to support more message fiels, as per default available in the MS Message interface. Such fields can be accessed through this API method, without casting to the specific Message implementation.
Parameters:
namespace - The namespace of the property to set.
name - The name of the property to set.
value - The value of the property to set. When null is given as the value param, an already set value will be deleted.
Throws:
InvalidParamException - If either the length of one of the parameters is too long, or in case of an unknown/not allowed namespace/name combination (but only if the Message implementation has the necessary knowledge about the valid namespace/name pairs).
Also, for an example, check the following blog:
/people/daniel.graversen/blog/2006/10/05/dynamic-configuration-in-adapter-modules
Regards,
Henrique.
Maybe you are looking for
-
How do i change camera raw in cs6?
just upgraded to CS6 on XP system. My new nikon d7100 is not supported in CS5. I have tried uplaoding various new camera raw versions but can not make a change within cs6 as it still only see the outdated version 7. I understand that I need to run ve
-
I am setting up my new iPad mini from my iMac. I have backed up my old ipad so all info has been saved and sinced. I did not get my contacts and apps when the download, or sinc was complete. How do I add them? BTW, the instructions given while ins
-
Caching of adhoc queries=filesystem sometimes at 100%
WLS_PRODUCT_VERSION=10.3.6.0 OS: Red Hat Linux 5 DB: 11.2.0.2.0 OBIEE: 11.1.1.6.2 Hello. When someone runs a silly query via OBIEE we sometimes see .TMP files that have ranged in silly sizes (up to 25GB!) We have been caught by this as the growth is
-
Hi, I am completely new to Arch Linux, and under my first installation I got this error: error: /mnt/var/lib/pacman/current/xorg-fonts-cyrillic-1.0.0-1/des error: /mnt/var/lib/pacman/current/xorg-fonts-cyrillic-1.0.0-1/des error: /mnt/var/lib/pacman/
-
License Problem after formating Hard Drive
Hello, I'm french, so my english isn't very good, I'm sorry for this. I have got a problem with my Adobe Photoshop Elements 8 license. My Grandfather bought this software 5month ago and installed it in his computer. He lend me the CD and I installed