Registration

Dear SAP Community Member,
In order to fully benefit from what the SAP Community has to offer, please register at:
http://scn.sap.com
Thank you,
The SAP Community team.
Skip to end of metadata
Go to start of metadata

There were few post in the forum asking how to read the Input Text file in to Single field of the structure. Can this be done using a FCC? NO.

Then how this can be done. This scenario is similar to my wiki post Java Mapping- Convert the Input xml to String. Follow the below steps.

 S2S (Steps to Solution):

1. Configure the sender file adapter to read the source file without any FCC.

2. Create the Message Type.
 

3. Create a Message Interface for the Message Type.

4. Use the following Java code to read the input file and add it to a field of the Message structure. Export this Java Mapping as a Jar file using NWDS and Import the Jar in to IR.

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.util.Map;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Element;
import org.w3c.dom.Document;
import org.w3c.dom.Text;
import com.sap.aii.mapping.api.StreamTransformation;
/*\*
* @author santhosh kumar v
\*/
public class xmlpayload implements StreamTransformation {

public void setParameter(Map param)
{ Map map = param; }

public void execute(InputStream in, OutputStream out)
throws com.sap.aii.mapping.api.StreamTransformationException {
try {

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transform = tf.newTransformer();

Document docout = db.newDocument();

Element root = docout.createElement("MT_Trg");
root.setAttribute("xmlns:ns","urn:Test_File_to_File");
docout.appendChild(root);

Element stringinp = docout.createElement("stringinp");
root.appendChild(stringinp);

//***************\**Code To Read the Input Stream and Convert it to String*\***********************//

BufferedReader inpfile = new BufferedReader(new InputStreamReader(in));
StringBuffer buffer = new StringBuffer();
String line="";
while ((line = inpfile.readLine()) \!= null)
{ buffer.append(line); }
String inptfile=buffer.toString();

Text srcxml = docout.createTextNode(inptfile);
stringinp.appendChild(srcxml);

DOMSource domS = new DOMSource(docout);
transform.transform((domS), new StreamResult(out));

} catch (Exception e)
{ System.out.print("Problem parsing the file: " + e.getMessage()); e.printStackTrace(); }
}
}

5. In the Interface Mapping select both the Source and Target interface as the same message interface that is created.

6. Select the Mapping Program Type as Java Class and choose the java class mapping program.

Input Payload in SXMB_MONI:



 
 
 
 
 
 
 
 
Output Payload in SXMB_MONI:
 

 
 
 
 
 
 
 
 
 
 
 

Hello ,

I did this using graphical mapping and FCC in PI 7.1 ...

3 Comments

  1. Guest

     Hi Santhosh,

         I did exactly as mentioned in your wiki,but I am getting a Linkage error.see below
    - --
     Request Message Mapping
      ->-
    - <SAP Error xmlns:SAP="-http://sap.com/xi/XI/Message/30-" xmlns:SOAP="-http://schemas.xmlsoap.org/soap/envelope/-" SOAP:mustUnderstand="">
      <SAP Category>ApplicationSAP Category>
      <SAP Code area="MAPPING">LINKAGE_ERRORSAP Code>
      <SAP P 1>xmlpayloadSAP P1>
      <SAP P2>test:urn:test_file_to_fileSAP P2>
      <SAP P3>d4224370-e154-11dc-94cd-c763ac1383c5SAP P3>
      <SAP P4>-1SAP P4>
      <SAP AdditionalText />
      <SAP ApplicationFaultMessage namespace="" />
      <SAP Stack>Incompatible class versions (linkage error)SAP Stack>
      <SAP Retry>MSAP Retry>
      SAP Error>

    Can you please guide me how to rectify the error?

  2. Anonymous

    this is possible using FCC

  3. Guest

    Please remove blog with faulty explanation or notes...why are you misguiding readers??????????????????