cancel
Showing results for 
Search instead for 
Did you mean: 

Attachment (pdf) into base64Binary element

Former Member
0 Kudos

Hello guys,

i have problem with my Integration Process (IP). Inside IP is already defined some business flow.

In the begining of IP is received message with attached PDF file, and directly in second step this attachment is removed in abap code.

That was OK, but now I have to make this IP bigger and in other branch in the end of IP I have to call another system.

This new system ( through WS) is expecting inside ipnut XSD also element FILE (Base64Binary) and another element with HASH of this file.

Can you describe how can I

> use java mapping in transformation so as to load attached pdf file and convert it into base64Binary format.

> use java mapping to make hash of mentioned file.

I have no idea how code should looklike.

Marek

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

hi guys,

really no idea how to help?

based on what I found at different topics, I created my own User-Defined function:

imports: com.sap.aii.mapping.api.*;java.io.*;com.sap.aii.utilxi.base64.api.*;com.sap.aii.mapping.api.StreamTransformation;java.util.*;

public void readAttachment(ResultList result,Container container){

         String fileNameFromFileAdapterASMA;

         int len;

         Map param;

         byte[] buffer = new byte[1024*5000];

         ByteArrayOutputStream baos = new ByteArrayOutputStream();

         String str2 = null;

               DynamicConfiguration conf = (DynamicConfiguration)  container.getTransformationParameters().get("DynamicConfiguration");

               DynamicConfigurationKey KEY_FILENAME =                DynamicConfigurationKey.create("http://sap.com/xi/XI/System/File","FileName");

               fileNameFromFileAdapterASMA = conf.get(KEY_FILENAME);

             

if (fileNameFromFileAdapterASMA == null)

               {

                    fileNameFromFileAdapterASMA = "ToBase64.txt";

               }

                     try

          {

                    InputStream is = new FileInputStream(new File(fileNameFromFileAdapterASMA));

               while ((len = is.read(buffer)) > 0)

               baos.write(buffer, 0, len);

               str2 = Base64.encode(baos.toByteArray());     //buffer);

          result.addValue(new String(str2));

          }

          catch(Exception e)

          {

               e.printStackTrace();

          }

}

output of this function is assigned into element FILE, which is type: xsd:base64Binary.

But when message was sent, I received following error:

Do you have any IDEA what am i doing wrong PLEASE?

  <?xml version="1.0" encoding="utf-8" ?>

  <MappingTrace>

  <Trace level="1" type="T">Mapping-Namespace:http://ness.com/IS-U/faktura24</Trace>

  <Trace level="1" type="T">Mapping-Name:IM_PARSE_FILE_4_RPG</Trace>

  <Trace level="1" type="T">Mapping-SWCV:121C46C016F211D99B5BC0140A114C15</Trace>

  <Trace level="1" type="T">Mapping-Step:1</Trace>

  <Trace level="1" type="T">Mapping-Type:JAVA</Trace>

  <Trace level="1" type="T">Mapping-Program:com/sap/xi/tf/_MM_FILE_4_RPG_</Trace>

  <Trace level="2" type="T">Call method execute of the application Java mapping com.sap.xi.tf._MM_FILE_4_RPG_</Trace>

  <Trace level="1" type="T">RuntimeException during appliction Java mapping com/sap/xi/tf/_MM_FILE_4_RPG_</Trace>

  <Trace level="1" type="T">com.sap.aii.utilxi.misc.api.BaseRuntimeException: RuntimeException in Message-Mapping transformation: Cannot produce target element /ns0:Messages/ns0:Message2/ns2:MT_File_4_RPG/FILE. Check xml instance is valid for source xsd and target-field mapping fulfills requirements of target xsd at com.sap.aii.mappingtool.tf3.AMappingProgram.start(AMappingProgram.java:428) at com.sap.aii.mappingtool.tf3.Transformer.start(Transformer.java:142) at com.sap.aii.mappingtool.tf3.AMappingProgram.execute(AMappingProgram.java:120) at com.sap.aii.ibrun.server.mapping.JavaMapping.executeStep(JavaMapping.java:64) at com.sap.aii.ibrun.server.mapping.Mapping.execute(Mapping.java:92) at com.sap.aii.ibrun.server.mapping.MappingHandler.run(MappingHandler.java:90) at com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler.handleMappingRequest(MappingRequestHandler.java:95) at com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler.handleRequest(MappingRequestHandler.java:68) at com.sap.aii.ibrun.sbeans.mapping.MappingServiceImpl.processFunction(MappingServiceImpl.java:79) at com.sap.aii.ibrun.sbeans.mapping.MappingServiceObjectImpl0_0.processFunction(MappingServiceObjectImpl0_0.java:131) at sun.reflect.GeneratedMethodAccessor762.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:331) at com.sap.engine.services.ejb.session.stateless_sp5.ObjectStubProxyImpl.invoke(ObjectStubProxyImpl.java:187) at $Proxy349.processFunction(Unknown Source) at sun.reflect.GeneratedMethodAccessor1292.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:331) at com.sap.engine.services.rfcengine.RFCDefaultRequestHandler.call(RFCDefaultRequestHandler.java:284) at com.sap.engine.services.rfcengine.RFCDefaultRequestHandler.handleRequest(RFCDefaultRequestHandler.java:219) at com.sap.engine.services.rfcengine.RFCJCOServer$J2EEApplicationRunnable.run(RFCJCOServer.java:254) at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37) at java.security.AccessController.doPrivileged(Native Method) at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:104) at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:176) Root Cause: com.sap.aii.mappingtool.tf3.IllegalInstanceException: Cannot produce target element /ns0:Messages/ns0:Message2/ns2:MT_File_4_RPG/FILE. Check xml instance is valid for source xsd and target-field mapping fulfills requirements of target xsd at com.sap.aii.mappingtool.tf3.AMappingProgram.processNode(AMappingProgram.java:307) at com.sap.aii.mappingtool.tf3.AMappingProgram.processNode(AMappingProgram.java:333) at com.sap.aii.mappingtool.tf3.AMappingProgram.processNode(AMappingProgram.java:333) at com.sap.aii.mappingtool.tf3.AMappingProgram.processNode(AMappingProgram.java:333) at com.sap.aii.mappingtool.tf3.AMappingProgram.start(AMappingProgram.java:423) at com.sap.aii.mappingtool.tf3.Transformer.start(Transformer.java:142) at com.sap.aii.mappingtool.tf3.AMappingProgram.execute(AMappingProgram.java:120) at com.sap.aii.ibrun.server.mapping.JavaMapping.executeStep(JavaMapping.java:64) at com.sap.aii.ibrun.server.mapping.Mapping.execute(Mapping.java:92) at com.sap.aii.ibrun.server.mapping.MappingHandler.run(MappingHandler.java:90) at com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler.handleMappingRequest(MappingRequestHandler.java:95) at com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler.handleRequest(MappingRequestHandler.java:68) at com.sap.aii.ibrun.sbeans.mapping.MappingServiceImpl.processFunction(MappingServiceImpl.java:79) at com.sap.aii.ibrun.sbeans.mapping.MappingServiceObjectImpl0_0.processFunction(MappingServiceObjectImpl0_0.java:131) at sun.reflect.GeneratedMethodAccessor762.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:331) at com.sap.engine.services.ejb.session.stateless_sp5.ObjectStubProxyImpl.invoke(ObjectStubProxyImpl.java:187) at $Proxy349.processFunction(Unknown Source) at sun.reflect.GeneratedMethodAccessor1292.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:331) at com.sap.engine.services.rfcengine.RFCDefaultRequestHandler.call(RFCDefaultRequestHandler.java:284) at com.sap.engine.services.rfcengine.RFCDefaultRequestHandler.handleRequest(RFCDefaultRequestHandler.java:219) at com.sap.engine.services.rfcengine.RFCJCOServer$J2EEApplicationRunnable.run(RFCJCOServer.java:254) at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37) at java.security.AccessController.doPrivileged(Native Method) at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:104) at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:176)</Trace>

  <Trace level="1" type="T">Runtime exception occurred during execution of application mapping program com/sap/xi/tf/_MM_FILE_4_RPG_: com.sap.aii.utilxi.misc.api.BaseRuntimeException; RuntimeException in Message-Mapping transformation: Cannot produce target element /ns0:Messages/ns0:Message2/ns2:MT_File_4_RPG/FILE. Check xml instance is valid for source xsd and target-field mapping fulfills requirements of target xsd</Trace>

  <Trace level="1" type="T">com.sap.aii.ibrun.server.mapping.MappingRuntimeException: Runtime exception occurred during execution of application mapping program com/sap/xi/tf/_MM_FILE_4_RPG_: com.sap.aii.utilxi.misc.api.BaseRuntimeException; RuntimeException in Message-Mapping transformation: Cannot produce target element /ns0:Messages/ns0:Message2/ns2:MT_File_4_RPG/FILE. Check xml instance is valid for source xsd and target-field mapping fulfills requirements of target xsd at com.sap.aii.ibrun.server.mapping.JavaMapping.executeStep(JavaMapping.java:73) at com.sap.aii.ibrun.server.mapping.Mapping.execute(Mapping.java:92) at com.sap.aii.ibrun.server.mapping.MappingHandler.run(MappingHandler.java:90) at com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler.handleMappingRequest(MappingRequestHandler.java:95) at com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler.handleRequest(MappingRequestHandler.java:68) at com.sap.aii.ibrun.sbeans.mapping.MappingServiceImpl.processFunction(MappingServiceImpl.java:79) at com.sap.aii.ibrun.sbeans.mapping.MappingServiceObjectImpl0_0.processFunction(MappingServiceObjectImpl0_0.java:131) at sun.reflect.GeneratedMethodAccessor762.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:331) at com.sap.engine.services.ejb.session.stateless_sp5.ObjectStubProxyImpl.invoke(ObjectStubProxyImpl.java:187) at $Proxy349.processFunction(Unknown Source) at sun.reflect.GeneratedMethodAccessor1292.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:331) at com.sap.engine.services.rfcengine.RFCDefaultRequestHandler.call(RFCDefaultRequestHandler.java:284) at com.sap.engine.services.rfcengine.RFCDefaultRequestHandler.handleRequest(RFCDefaultRequestHandler.java:219) at com.sap.engine.services.rfcengine.RFCJCOServer$J2EEApplicationRunnable.run(RFCJCOServer.java:254) at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37) at java.security.AccessController.doPrivileged(Native Method) at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:104) at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:176) Root Cause: com.sap.aii.utilxi.misc.api.BaseRuntimeException: RuntimeException in Message-Mapping transformation: Cannot produce target element /ns0:Messages/ns0:Message2/ns2:MT_File_4_RPG/FILE. Check xml instance is valid for source xsd and target-field mapping fulfills requirements of target xsd at com.sap.aii.mappingtool.tf3.AMappingProgram.start(AMappingProgram.java:428) at com.sap.aii.mappingtool.tf3.Transformer.start(Transformer.java:142) at com.sap.aii.mappingtool.tf3.AMappingProgram.execute(AMappingProgram.java:120) at com.sap.aii.ibrun.server.mapping.JavaMapping.executeStep(JavaMapping.java:64) at com.sap.aii.ibrun.server.mapping.Mapping.execute(Mapping.java:92) at com.sap.aii.ibrun.server.mapping.MappingHandler.run(MappingHandler.java:90) at com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler.handleMappingRequest(MappingRequestHandler.java:95) at com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler.handleRequest(MappingRequestHandler.java:68) at com.sap.aii.ibrun.sbeans.mapping.MappingServiceImpl.processFunction(MappingServiceImpl.java:79) at com.sap.aii.ibrun.sbeans.mapping.MappingServiceObjectImpl0_0.processFunction(MappingServiceObjectImpl0_0.java:131) at sun.reflect.GeneratedMethodAccessor762.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:331) at com.sap.engine.services.ejb.session.stateless_sp5.ObjectStubProxyImpl.invoke(ObjectStubProxyImpl.java:187) at $Proxy349.processFunction(Unknown Source) at sun.reflect.GeneratedMethodAccessor1292.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:331) at com.sap.engine.services.rfcengine.RFCDefaultRequestHandler.call(RFCDefaultRequestHandler.java:284) at com.sap.engine.services.rfcengine.RFCDefaultRequestHandler.handleRequest(RFCDefaultRequestHandler.java:219) at com.sap.engine.services.rfcengine.RFCJCOServer$J2EEApplicationRunnable.run(RFCJCOServer.java:254) at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37) at java.security.AccessController.doPrivileged(Native Method) at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:104) at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:176) Root Cause: com.sap.aii.mappingtool.tf3.IllegalInstanceException: Cannot produce target element /ns0:Messages/ns0:Message2/ns2:MT_File_4_RPG/FILE. Check xml instance is valid for source xsd and target-field mapping fulfills requirements of target xsd at com.sap.aii.mappingtool.tf3.AMappingProgram.processNode(AMappingProgram.java:307) at com.sap.aii.mappingtool.tf3.AMappingProgram.processNode(AMappingProgram.java:333) at com.sap.aii.mappingtool.tf3.AMappingProgram.processNode(AMappingProgram.java:333) at com.sap.aii.mappingtool.tf3.AMappingProgram.processNode(AMappingProgram.java:333) at com.sap.aii.mappingtool.tf3.AMappingProgram.start(AMappingProgram.java:423) at com.sap.aii.mappingtool.tf3.Transformer.start(Transformer.java:142) at com.sap.aii.mappingtool.tf3.AMappingProgram.execute(AMappingProgram.java:120) at com.sap.aii.ibrun.server.mapping.JavaMapping.executeStep(JavaMapping.java:64) at com.sap.aii.ibrun.server.mapping.Mapping.execute(Mapping.java:92) at com.sap.aii.ibrun.server.mapping.MappingHandler.run(MappingHandler.java:90) at com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler.handleMappingRequest(MappingRequestHandler.java:95) at com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler.handleRequest(MappingRequestHandler.java:68) at com.sap.aii.ibrun.sbeans.mapping.MappingServiceImpl.processFunction(MappingServiceImpl.java:79) at com.sap.aii.ibrun.sbeans.mapping.MappingServiceObjectImpl0_0.processFunction(MappingServiceObjectImpl0_0.java:131) at sun.reflect.GeneratedMethodAccessor762.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:331) at com.sap.engine.services.ejb.session.stateless_sp5.ObjectStubProxyImpl.invoke(ObjectStubProxyImpl.java:187) at $Proxy349.processFunction(Unknown Source) at sun.reflect.GeneratedMethodAccessor1292.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:331) at com.sap.engine.services.rfcengine.RFCDefaultRequestHandler.call(RFCDefaultRequestHandler.java:284) at com.sap.engine.services.rfcengine.RFCDefaultRequestHandler.handleRequest(RFCDefaultRequestHandler.java:219) at com.sap.engine.services.rfcengine.RFCJCOServer$J2EEApplicationRunnable.run(RFCJCOServer.java:254) at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37) at java.security.AccessController.doPrivileged(Native Method) at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:104) at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:176)</Trace>

  <Trace level="1" type="T">com/sap/xi/tf/_MM_FILE_4_RPG_com.sap.aii.utilxi.misc.api.BaseRuntimeExceptionRuntimeException in Message-Mapping transformatio~</Trace>

  </MappingTrace>