Quantcast
Channel: SCN : All Content - Process Integration (PI) & SOA Middleware
Viewing all articles
Browse latest Browse all 7030

File to File scenario to transfer a .CSV file adding a BOM using java mapping in PI.

$
0
0

Hi Experts,

 

I have a file to file scenario in which i have to pickup a ".CSV" file and transfer it as it is to another location in SAP PI 7.1 .The challenge is that i have to add a UTF-8 BOM . So, i followed the below steps :

 

1)Create a data type, message  for input and output  with dummy structure.

 

Both input and output Message type the similar structure as below.

 

DT.png

2) Two service interfaces , one for inbound and another for outbound  as in any normal scenario.

3)Operational mapping with a java mapping class to add UTF-8 BOM

 

public class AddBOM  implements StreamTransformation  {

 

  private Map  param = null;

  private MappingTrace trace = null;

 

 

  public void execute(InputStream inStream, OutputStream outStream)

  throws StreamTransformationException {

  // TODO Auto-generated method stub

//BufferedReader to read inputStream

 

BufferedReader br=new BufferedReader(new InputStreamReader(inStream));

 

 

//Trace object declaration

AbstractTrace trace = null;

 

 

    trace =

    (AbstractTrace) param.get(

        StreamTransformationConstants.MAPPING_TRACE);

 

 

  String reading=null;

  StringBuffer buf=new StringBuffer();

  String CSV_content;

 

 

  try

  {

  while((reading=br.readLine())!=null)

  {

 

  buf.append(reading);

  buf.append(System.getProperty("line.separator"));

  }

 

  CSV_content=buf.toString();

 

  //Character array to add UTF-8 BOM in CSV

 

  char[] c = {0xEF, 0xBB, 0xBF};

 

  for(int i=0; i<3; i++)

  {

  outStream.write(c[i]);

  }

 

  outStream.write(CSV_content.getBytes());

  outStream.flush();

 

  }

 

  catch (Exception e) {

  // TODO: handle exception

 

  trace.addDebugMessage(e.getMessage());

  }

 

  }

 

 

  public void setParameter(Map Param) {

  // TODO Auto-generated method stub

  if (param == null) {

         this.param = new HashMap();

     }

  }

  }

 

4. Created an ICO with OM implementing the above java mapping.

 

But, when the scenario is tested it throws me an error  "Error.com.sap.aii.adapter.xi.routing.RoutingException:Unable to parse XML message payload to extract operation for receiver determinationorg.xml.sax.SAXParseException:Content is not allowed in prolog" .

 

Can you experts kindly help me  to know if this adding BOM is possible only if i do FCC forming the exact XML structure and is there any possibility to add BOM using java mapping without converting using FCC as i am not doing any change between source and target .csv files except adding this BOM .


Viewing all articles
Browse latest Browse all 7030

Trending Articles