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.
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 .