cancel
Showing results for 
Search instead for 
Did you mean: 

Java Mapping Migration help

Former Member
0 Kudos

Hi Experts,

We have created a Java mapping in PI 7.0. Now we have migrated all the java mapping code to PI 7.1. While conducting regression test on the Interface, the java mapping is not working as per the expected results.

Can you please tell me if i need to modify the Java mapping, If yes can you tell the step by step procedure.

I do have :

- NWDS

- PI 7.1 Mapping Jar file (com.sap.xpi.ib.mapping.lib)

- Old Java Mapping (zip file)

Thanks

Edited by: Ramani Thota on Mar 30, 2010 6:18 AM

Accepted Solutions (1)

Accepted Solutions (1)

rajasekhar_reddy14
Active Contributor
0 Kudos

Hi,

The existing code what you have written in PI7.0 will work fine in PI7.1 without any issues.

But chnaging the code as per PI7.1 it is good,it is very simple,when you import new jar file for java mapping it is not going to support Streamtrasformation method any more,so use Trasformethod,and use JDK1.5 version in NWDS,.

thats it...

REFER BELOW LINK FOR CODE SINNPET IN PI7.1

http://help.sap.com/saphelp_nwpi71/helpdata/EN/43/bc2fd4da1e1bbce10000000a1553f7/content.htm

Regards,

Raj

Edited by: Raja Sekhar Reddy T on Mar 30, 2010 6:22 AM

Former Member
0 Kudos

Hi Raj,

I'm having JDK 1.6, Can you please let me know where i need to modify the below code wrt to PI 7.1

Code:

package mappin1;

import java.io.BufferedReader;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.net.URL;

import java.net.URLConnection;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.Map;

import java.util.Properties;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import javax.xml.transform.Transformer;

import javax.xml.transform.TransformerFactory;

import org.w3c.dom.Document;

import org.w3c.dom.Element;

import org.w3c.dom.Node;

import org.w3c.dom.NodeList;

import org.xml.sax.helpers.DefaultHandler;

import com.sap.aii.mapping.api.MappingTrace;

import com.sap.aii.mapping.api.StreamTransformation;

import com.sap.aii.mapping.api.StreamTransformationConstants;

public class XMLHeaderGenerator extends DefaultHandler implements StreamTransformation {

private Map map;

// private static OutputStream out ;

private static MappingTrace trace;

private static String noProgressToken = "RR";

private String tokenOne = null;

private String tokenOne1 = null;

private String tokenTwo = null;

private String tokenThree = null;

private String fileContent = null;

public static void main(String args[]) throws Exception {

FileInputStream inDataFile1 =

new FileInputStream("C:
Documents and Settings
ram
Desktop
ram
xi_input.txt");

XMLHeaderGenerator xml = new XMLHeaderGenerator();

FileOutputStream outFile =

new FileOutputStream("C:
Documents and Settings
ram
Desktop
hemant
output
ram.xml");

//xml.setParameter(map);

xml.execute(inDataFile1, outFile);

System.out.println("Success");

}

public void setParameter (Map param) {

trace = (MappingTrace) param.get(StreamTransformationConstants.MAPPING_TRACE);

}

public void execute(InputStream in, OutputStream out)

throws com.sap.aii.mapping.api.StreamTransformationException {

// /* **********************Code To Generate The XML Parsing Objects****************************//

//XMLHeaderGenerator xml = new XMLHeaderGenerator();

Document docin = null;

Element root = null;

String keytagvalueTokenOne = null;

String keytagvalueTokenTwo = null;

String keytagvalueTokenThree = null;

String line = null;

BufferedReader inpxml = null;

if(null != trace ){

trace.addInfo("Process Started");

}

try{

if(null != in){

inpxml = new BufferedReader(new InputStreamReader(in));

}

if(null != inpxml){

line = inpxml.readLine();

if(line.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")){

line = inpxml.readLine();

//line = inpxml.readLine();

}

this.fileContent = line;

if(null != line){

int index = line.indexOf(noProgressToken);

if(index != -1){

this.tokenOne1 = line.substring(index + 2, index + 17);

this.tokenOne = tokenOne1.substring(0,tokenOne1.indexOf(" "));

this.tokenTwo = line.substring(index + 17, index + 23);

this.tokenThree = line.substring(index + 37, index + 39);

line = line.substring(index + 0, index + 2);

//this.tokenOne = LTrim(tokenOne1);

// tokenOne = tokenOne1.replaceAll("^
s+","");

}

}

}

}//remove ltr

catch (Exception e) {

e.printStackTrace();

trace.addInfo("11111111111111111111111111111");

}

try{ //remove ltr

if((null != line) && (line.equals(this.noProgressToken))){

DocumentBuilderFactory dbf = null;

DocumentBuilder db = null;

TransformerFactory tf = null;

Transformer transform = null;

InputStream inPropFile1 = null;

// InputStreamReader inPropFile1 = null;

String inptxml = null;

try{ //remove ltr

String nextLine;

while((nextLine = inpxml.readLine()) != null ){

this.fileContent = this.fileContent + "\n" + nextLine;

}

}//remove ltr

catch (Exception e) {

e.printStackTrace();

trace.addInfo("77777777777777777777777777777777");

}

try{ //remove ltr

dbf = DocumentBuilderFactory.newInstance();

db = dbf.newDocumentBuilder();

tf = TransformerFactory.newInstance();

transform = tf.newTransformer();

}//remove ltr

catch (Exception e) {

e.printStackTrace();

trace.addInfo("?????????????????????????????");

}

try{ //remove ltr

InputStream is;

URL url = new URL("ftp://ram:anon@50.222.100.133/Input/prjLog2KNpBeOut.properties");

URLConnection connection = url.openConnection();

//is = connection.getInputStream();

inPropFile1 = connection.getInputStream();

//InputStreamReader reader = new InputStreamReader(is);

// inPropFile1= new InputStreamReader(is);

//BufferedReader buffer = new BufferedReader(reader);

// Read properties file.

//BufferedReader bf = new BufferedReader(new InputStreamReader(inPropFile1));

Properties properties = new Properties();

try {

properties.load(inPropFile1);

// String key = bf.readLine();

keytagvalueTokenOne = properties.getProperty(this.tokenOne);

keytagvalueTokenTwo = properties.getProperty(this.tokenTwo);

keytagvalueTokenThree = properties.getProperty(this.tokenThree);

} catch (IOException e) {

}

//inPropFile1 = (FileInputStream) is;

// inPropFile1 = new FileInputStream("C:
Documents and Settings
ram
Desktop
ram
input_prop.xml");

}//remove ltr

catch (Exception e) {

e.printStackTrace();

System.out.println(e.getMessage());

trace.addInfo("{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{");

trace.addInfo(e.getMessage());

}

// try{ //remove ltr

//

// if(null != inPropFile1){

// docin = db.parse(inPropFile1);

//

// }

// if(null != docin){

// root = docin.getDocumentElement();

// }

//

// NodeList children = null;

// if(null != root){

// children = root.getChildNodes();

// }

//

// NodeList list = children;

// int ctr = 0;

// for (int i=0; i < list.getLength(); i++) {

// Node subnode = list.item(i);

// if ((null != subnode) && subnode.getNodeType() == Node.ELEMENT_NODE) {

// if (subnode.getNodeName().equals(tokenOne)){

// keytagvalueTokenOne = subnode.getChildNodes().item(0).getNodeValue();

// ctr++;

// }

// else if((null != subnode) && subnode.getNodeName().equals(tokenTwo)){

// keytagvalueTokenTwo = subnode.getChildNodes().item(0).getNodeValue();

// ctr++;

// }

// else if((null != subnode) && subnode.getNodeName().equals(tokenThree)){

// keytagvalueTokenThree = subnode.getChildNodes().item(0).getNodeValue();

// ctr++;

// }

// if(ctr == 3){

// i = list.getLength();

// }

// }

// }

//

// }//remove ltr

// catch (Exception e) {

// e.printStackTrace();

// trace.addInfo("222222222222222222222222222222222222");

// }

try{ //remove ltr

String BlobHeader = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><BlobFF Version=\"1.3\"><Header>";

BlobHeader = BlobHeader + "<ThisDocumentIdentifier><DocumentIdentifier>";

Date today;

SimpleDateFormat formatter;

today = new Date();

formatter = new SimpleDateFormat("yyyyMMddhhmmss");

BlobHeader = BlobHeader + this.tokenOne + "_" + this.tokenTwo + "_" + formatter.format(today);

BlobHeader = BlobHeader + "</DocumentIdentifier></ThisDocumentIdentifier><ThisDocumentDateTime><DateTime>";

BlobHeader = BlobHeader + formatter.format(today);

BlobHeader = BlobHeader + "</DateTime></ThisDocumentDateTime>";

BlobHeader = BlobHeader + "<From><PartnerInformation><PartnerIdentifier><Code>";

BlobHeader = BlobHeader + keytagvalueTokenTwo;

BlobHeader = BlobHeader + "</Code></PartnerIdentifier></PartnerInformation></From>";

BlobHeader = BlobHeader + "<To><PartnerInformation><PartnerIdentifier><Code>";

BlobHeader = BlobHeader + keytagvalueTokenOne;

BlobHeader = BlobHeader + "</Code></PartnerIdentifier></PartnerInformation></To>";

BlobHeader = BlobHeader + "</Header><BlobFFBody EncodeMethod=\"\">";

BlobHeader = BlobHeader + "<DocumentFormat FormatDesc=\"LOG2000\">Flat File</DocumentFormat>";

BlobHeader = BlobHeader + "<DocumentType TypeDesc=\"" + this.tokenThree + "\">";

BlobHeader = BlobHeader + keytagvalueTokenThree;

BlobHeader = BlobHeader + "</DocumentType>";

BlobHeader = BlobHeader + "<DocumentBody><![CDATA[";

this.fileContent = this.fileContent.substring(103,this.fileContent.indexOf("</documentbody>"));

//this.fileContent = this.fileContent.substring(this.fileContent.indexOf("<"),this.fileContent.lastIndexOf(">"));

BlobHeader = BlobHeader + this.fileContent;

BlobHeader = BlobHeader + "]]></DocumentBody></BlobFFBody></BlobFF>";

StringBuffer buffer = new StringBuffer();

buffer.append(BlobHeader);

inptxml=buffer.toString();

}//remove ltr

catch (Exception e) {

e.printStackTrace();

trace.addInfo("333333333333333333333333333333333");

}//remove ltr

try {

out.write(inptxml.getBytes());

}

catch (Exception e) {

e.printStackTrace();

trace.addInfo("444444444444444444444444444444");

}

}

else {

System.out.println("Unrecognized beginning to file");

}

}

catch (Exception e) {

e.printStackTrace();

trace.addInfo("Process Terminated: Error in writing out payload");

}

}

}

rajasekhar_reddy14
Active Contributor
0 Kudos

Hi,

Logic point of view no changes required,just change executemthod statement to trasform as i already mentioned,organize your imports accordingly,when you import new java mapping jar file it asks for new imports.

> xml.execute(inDataFile1, outFile);

method to

xml.trasform(inDataFile1, outFile);

> public void execute(InputStream in, OutputStream out)

> throws com.sap.aii.mapping.api.StreamTransformationException {

>

public void transform(TransformationInput in,TransformationOutput out) throws StreamTransformationException

Regards,

Raj

rajasekhar_reddy14
Active Contributor
0 Kudos

Try this one,i havnt tested...

package mappin1;

import java.io.BufferedReader;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.net.URL;

import java.net.URLConnection;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.Map;

import java.util.Properties;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import javax.xml.transform.Transformer;

import javax.xml.transform.TransformerFactory;

import org.w3c.dom.Document;

import org.w3c.dom.Element;

import org.w3c.dom.Node;

import org.w3c.dom.NodeList;

import org.xml.sax.helpers.DefaultHandler;

import com.sap.aii.mapping.api.MappingTrace;

import com.sap.aii.mapping.api.StreamTransformation;

import com.sap.aii.mapping.api.StreamTransformationConstants;

public class XMLHeaderGenerator extends DefaultHandler implements StreamTransformation {

private Map map;

// private static OutputStream out ;

private static MappingTrace trace;

private static String noProgressToken = "RR";

private String tokenOne = null;

private String tokenOne1 = null;

private String tokenTwo = null;

private String tokenThree = null;

private String fileContent = null;

public static void main(String args[]) throws Exception {

FileInputStream inDataFile1 = new FileInputStream("C:
Documents and Settings
ram
Desktop
ram
xi_input.txt");

XMLHeaderGenerator xml = new XMLHeaderGenerator();

FileOutputStream outFile =

new FileOutputStream("C:
Documents and Settings
ram
Desktop
hemant
output
ram.xml");

//xml.setParameter(map);

xml.transform(inDataFile1, outFile);

System.out.println("Success");

}

public void setParameter (Map param) {

trace = (MappingTrace) param.get(StreamTransformationConstants.MAPPING_TRACE);

}

public void transform(

TransformationInput in,

TransformationOutput out)

throws StreamTransformationException {

// /* **********************Code To Generate The XML Parsing Objects****************************//

//XMLHeaderGenerator xml = new XMLHeaderGenerator();

Document docin = null;

Element root = null;

String keytagvalueTokenOne = null;

String keytagvalueTokenTwo = null;

String keytagvalueTokenThree = null;

String line = null;

BufferedReader inpxml = null;

if(null != trace ){

trace.addInfo("Process Started");

}

try{

if(null != in){

inpxml = new BufferedReader(new InputStreamReader(in));

}

if(null != inpxml){

line = inpxml.readLine();

if(line.equals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")){

line = inpxml.readLine();

//line = inpxml.readLine();

}

this.fileContent = line;

if(null != line){

int index = line.indexOf(noProgressToken);

if(index != -1){

this.tokenOne1 = line.substring(index + 2, index + 17);

this.tokenOne = tokenOne1.substring(0,tokenOne1.indexOf(" "));

this.tokenTwo = line.substring(index + 17, index + 23);

this.tokenThree = line.substring(index + 37, index + 39);

line = line.substring(index + 0, index + 2);

//this.tokenOne = LTrim(tokenOne1);

// tokenOne = tokenOne1.replaceAll("^
s+","");

}

}

}

}//remove ltr

catch (Exception e) {

e.printStackTrace();

trace.addInfo("11111111111111111111111111111");

}

try{ //remove ltr

if((null != line) && (line.equals(this.noProgressToken))){

DocumentBuilderFactory dbf = null;

DocumentBuilder db = null;

TransformerFactory tf = null;

Transformer transform = null;

InputStream inPropFile1 = null;

// InputStreamReader inPropFile1 = null;

String inptxml = null;

try{ //remove ltr

String nextLine;

while((nextLine = inpxml.readLine()) != null ){

this.fileContent = this.fileContent + "\n" + nextLine;

}

}//remove ltr

catch (Exception e) {

e.printStackTrace();

trace.addInfo("77777777777777777777777777777777");

}

try{ //remove ltr

dbf = DocumentBuilderFactory.newInstance();

db = dbf.newDocumentBuilder();

tf = TransformerFactory.newInstance();

transform = tf.newTransformer();

}//remove ltr

catch (Exception e) {

e.printStackTrace();

trace.addInfo("?????????????????????????????");

}

try{ //remove ltr

InputStream is;

URL url = new URL("ftp://ram:anon@50.222.100.133/Input/prjLog2KNpBeOut.properties");

URLConnection connection = url.openConnection();

//is = connection.getInputStream();

inPropFile1 = connection.getInputStream();

//InputStreamReader reader = new InputStreamReader(is);

// inPropFile1= new InputStreamReader(is);

//BufferedReader buffer = new BufferedReader(reader);

// Read properties file.

//BufferedReader bf = new BufferedReader(new InputStreamReader(inPropFile1));

Properties properties = new Properties();

try {

properties.load(inPropFile1);

// String key = bf.readLine();

keytagvalueTokenOne = properties.getProperty(this.tokenOne);

keytagvalueTokenTwo = properties.getProperty(this.tokenTwo);

keytagvalueTokenThree = properties.getProperty(this.tokenThree);

} catch (IOException e) {

}

//inPropFile1 = (FileInputStream) is;

// inPropFile1 = new FileInputStream("C:
Documents and Settings
ram
Desktop
ram
input_prop.xml");

}//remove ltr

catch (Exception e) {

e.printStackTrace();

System.out.println(e.getMessage());

trace.addInfo("{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{");

trace.addInfo(e.getMessage());

}

// try{ //remove ltr

//

// if(null != inPropFile1){

// docin = db.parse(inPropFile1);

//

// }

// if(null != docin){

// root = docin.getDocumentElement();

// }

//

// NodeList children = null;

// if(null != root){

// children = root.getChildNodes();

// }

//

// NodeList list = children;

// int ctr = 0;

// for (int i=0; i < list.getLength(); i++) {

// Node subnode = list.item(i);

// if ((null != subnode) && subnode.getNodeType() == Node.ELEMENT_NODE) {

// if (subnode.getNodeName().equals(tokenOne)){

// keytagvalueTokenOne = subnode.getChildNodes().item(0).getNodeValue();

// ctr++;

// }

// else if((null != subnode) && subnode.getNodeName().equals(tokenTwo)){

// keytagvalueTokenTwo = subnode.getChildNodes().item(0).getNodeValue();

// ctr++;

// }

// else if((null != subnode) && subnode.getNodeName().equals(tokenThree)){

// keytagvalueTokenThree = subnode.getChildNodes().item(0).getNodeValue();

// ctr++;

// }

// if(ctr == 3){

// i = list.getLength();

// }

// }

// }

//

// }//remove ltr

// catch (Exception e) {

// e.printStackTrace();

// trace.addInfo("222222222222222222222222222222222222");

// }

try{ //remove ltr

String BlobHeader = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><BlobFF Version=\"1.3\"><Header>";

BlobHeader = BlobHeader + "<ThisDocumentIdentifier><DocumentIdentifier>";

Date today;

SimpleDateFormat formatter;

today = new Date();

formatter = new SimpleDateFormat("yyyyMMddhhmmss");

BlobHeader = BlobHeader + this.tokenOne + "_" + this.tokenTwo + "_" + formatter.format(today);

BlobHeader = BlobHeader + "</DocumentIdentifier></ThisDocumentIdentifier><ThisDocumentDateTime><DateTime>";

BlobHeader = BlobHeader + formatter.format(today);

BlobHeader = BlobHeader + "</DateTime></ThisDocumentDateTime>";

BlobHeader = BlobHeader + "<From><PartnerInformation><PartnerIdentifier><Code>";

BlobHeader = BlobHeader + keytagvalueTokenTwo;

BlobHeader = BlobHeader + "</Code></PartnerIdentifier></PartnerInformation></From>";

BlobHeader = BlobHeader + "<To><PartnerInformation><PartnerIdentifier><Code>";

BlobHeader = BlobHeader + keytagvalueTokenOne;

BlobHeader = BlobHeader + "</Code></PartnerIdentifier></PartnerInformation></To>";

BlobHeader = BlobHeader + "</Header><BlobFFBody EncodeMethod=\"\">";

BlobHeader = BlobHeader + "<DocumentFormat FormatDesc=\"LOG2000\">Flat File</DocumentFormat>";

BlobHeader = BlobHeader + "<DocumentType TypeDesc=\"" + this.tokenThree + "\">";

BlobHeader = BlobHeader + keytagvalueTokenThree;

BlobHeader = BlobHeader + "</DocumentType>";

BlobHeader = BlobHeader + "<DocumentBody><![CDATA[";

this.fileContent = this.fileContent.substring(103,this.fileContent.indexOf("</documentbody>"));

//this.fileContent = this.fileContent.substring(this.fileContent.indexOf("<"),this.fileContent.lastIndexOf(">"));

BlobHeader = BlobHeader + this.fileContent;

BlobHeader = BlobHeader + "]]></DocumentBody></BlobFFBody></BlobFF>";

StringBuffer buffer = new StringBuffer();

buffer.append(BlobHeader);

inptxml=buffer.toString();

}//remove ltr

catch (Exception e) {

e.printStackTrace();

trace.addInfo("333333333333333333333333333333333");

}//remove ltr

try {

out.write(inptxml.getBytes());

}

catch (Exception e) {

e.printStackTrace();

trace.addInfo("444444444444444444444444444444");

}

}

else {

System.out.println("Unrecognized beginning to file");

}

}

catch (Exception e) {

e.printStackTrace();

trace.addInfo("Process Terminated: Error in writing out payload");

}

}

Regards,

Raj

Former Member
0 Kudos

hi,

I have reverted back to the original java code. I think it should work within PI 7.1 right??

thanks

rajasekhar_reddy14
Active Contributor
0 Kudos

Hi Ramani,

It will definetly work,but make sure that use old java mapping jar file while genarating jar file.

Regards,

Raj

Answers (1)

Answers (1)

Former Member
0 Kudos

Answered .. Thanks