cancel
Showing results for 
Search instead for 
Did you mean: 

Null point exception in an UDF for creating dynamic filename

Former Member
0 Kudos

Hi Guys,

             I am getting a Null point exception while using following UDF code you have recommended.

Could you please help identify the cause of the error.

public String setFileName(String var1, Container container) throws StreamTransformationException{

String filename = new String("");

DynamicConfiguration conf1 = (DynamicConfiguration) container.getTransformationParameters().get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);

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

filename = "DD0" + var1 + ".TXT";

conf1.put(key1,filename);

return "";

}

Here is the error.

         Compilation of MM_INVOIC02_TO_DespatchIT successfulException:[java.lang.NullPointerException] in class com.sap.xi.tf._MM_INVOIC02_TO_DespatchIT_ method setFileName[0417318, com.sap.aii.mappingtool.tf7.rt.Context@5c7f9723]com.sap.aii.utilxi.misc.api.BaseRuntimeException: Exception:[java.lang.NullPointerException] in class com.sap.xi.tf._MM_INVOIC02_TO_DespatchIT_ method setFileName[0417318, com.sap.aii.mappingtool.tf7.rt.Context@5c7f9723]at com.sap.aii.mappingtool.tf7.rt.MethodImplementedIteratorHelper.executeMethod(MethodImplementedIteratorHelper.java:184)at com.sap.aii.mappingtool.tf7.rt.FunctionWrapper.calculateCurrentValue(FunctionWrapper.java:99)at com.sap.aii.mappingtool.tf7.rt.AbstractFunctionWrapper.cacheValue(AbstractFunctionWrapper.java:32)at com.sap.aii.mappingtool.tf7.rt.AbstractFunctionWrapper.gotoNextContext(AbstractFunctionWrapper.java:42)at com.sap.aii.mappingtool.tf7.AMappingProgram.processNode(AMappingProgram.java:315)at com.sap.aii.mappingtool.tf7.AMappingProgram.start(AMappingProgram.java:496)at com.sap.aii.mappingtool.tf7.Transformer.start(Transformer.java:134)at com.sap.aii.mappingtool.tf7.AMappingProgram.transform(AMappingProgram.java:628)at com.sap.aii.ibrep.server.mapping.exec.ExecuteXiMappingCommand.transformInternal(ExecuteXiMappingCommand.java:197)at com.sap.aii.ibrep.server.mapping.exec.ExecuteXiMappingCommand.execute(ExecuteXiMappingCommand.java:94)at com.sap.aii.ib.server.mapping.exec.CommandManager.execute(CommandManager.java:43)at com.sap.aii.ibrep.server.mapping.ServerMapService.execute(ServerMapService.java:40)at com.sap.aii.ibrep.server.mapping.MapServiceBean.execute(MapServiceBean.java:40)at sun.reflect.GeneratedMethodAccessor630.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:585)at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal(RequestInvocationContext.java:43)at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:166)at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatesTransition.invoke(Interceptors_StatesTransition.java:19)at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177)at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Resource.invoke(Interceptors_Resource.java:71)at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177)at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.doWorkWithAttribute(Interceptors_Transaction.java:38)at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.invoke(Interceptors_Transaction.java:22)at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177)at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:189)at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatelessInstanceGetter.invoke(Interceptors_StatelessInstanceGetter.java:16)at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177)at com.sap.engine.services.ejb3.runtime.impl.Interceptors_SecurityCheck.invoke(Interceptors_SecurityCheck.java:21)at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177)at com.sap.engine.services.ejb3.runtime.impl.Interceptors_ExceptionTracer.invoke(Interceptors_ExceptionTracer.java:16)at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177)at com.sap.engine.services.ejb3.runtime.impl.DefaultInvocationChainsManager.startChain(DefaultInvocationChainsManager.java:133)at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:164)at $Proxy1505.execute(Unknown Source)at sun.reflect.GeneratedMethodAccessor629.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:585)at com.sap.engine.services.rmi_p4.P4DynamicSkeleton.dispatch(P4DynamicSkeleton.java:234)at com.sap.engine.services.rmi_p4.DispatchImpl._runInternal(DispatchImpl.java:351)at com.sap.engine.services.rmi_p4.server.ServerDispatchImpl.run(ServerDispatchImpl.java:70)at com.sap.engine.services.rmi_p4.P4Message.process(P4Message.java:62)at com.sap.engine.services.rmi_p4.P4Message.execute(P4Message.java:37)at com.sap.engine.services.cross.fca.FCAConnectorImpl.executeRequest(FCAConnectorImpl.java:872)at com.sap.engine.services.rmi_p4.P4Message.process(P4Message.java:53)at com.sap.engine.services.cross.fca.MessageReader.run(MessageReader.java:58)at com.sap.engine.core.thread.execution.Executable.run(Executable.java:108)at          com.sap.engine.core.thread.execution.CentralExecutor$SingleThread.run(CentralExecutor.java:304)Caused by: java.lang.reflect.InvocationTargetExceptionat          sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:585)at com.sap.aii.mappingtool.tf7.rt.MethodImplementedIteratorHelper.executeMethod(MethodImplementedIteratorHelper.java:173)... 47 moreCaused by: java.lang.NullPointerExceptionat com.sap.xi.tf._MM_INVOIC02_TO_DespatchIT_.setFileName(_MM_INVOIC02_TO_DespatchIT_.java:252)... 52 moreRoot Cause:java.lang.reflect.InvocationTargetExceptionat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:585)at com.sap.aii.mappingtool.tf7.rt.MethodImplementedIteratorHelper.executeMethod(MethodImplementedIteratorHelper.java:173)at com.sap.aii.mappingtool.tf7.rt.FunctionWrapper.calculateCurrentValue(FunctionWrapper.java:99)at com.sap.aii.mappingtool.tf7.rt.AbstractFunctionWrapper.cacheValue(AbstractFunctionWrapper.java:32)at com.sap.aii.mappingtool.tf7.rt.AbstractFunctionWrapper.gotoNextContext(AbstractFunctionWrapper.java:42)at com.sap.aii.mappingtool.tf7.AMappingProgram.processNode(AMappingProgram.java:315)at com.sap.aii.mappingtool.tf7.AMappingProgram.start(AMappingProgram.java:496)at com.sap.aii.mappingtool.tf7.Transformer.start(Transformer.java:134)at com.sap.aii.mappingtool.tf7.AMappingProgram.transform(AMappingProgram.java:628)at com.sap.aii.ibrep.server.mapping.exec.ExecuteXiMappingCommand.transformInternal(ExecuteXiMappingCommand.java:197)at com.sap.aii.ibrep.server.mapping.exec.ExecuteXiMappingCommand.execute(ExecuteXiMappingCommand.java:94)at com.sap.aii.ib.server.mapping.exec.CommandManager.execute(CommandManager.java:43)at com.sap.aii.ibrep.server.mapping.ServerMapService.execute(ServerMapService.java:40)at com.sap.aii.ibrep.server.mapping.MapServiceBean.execute(MapServiceBean.java:40)at sun.reflect.GeneratedMethodAccessor630.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:585)at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal(RequestInvocationContext.java:43)at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:166)at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatesTransition.invoke(Interceptors_StatesTransition.java:19)at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177)at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Resource.invoke(Interceptors_Resource.java:71)at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177)at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.doWorkWithAttribute(Interceptors_Transaction.java:38)at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.invoke(Interceptors_Transaction.java:22)at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177)at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:189)at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatelessInstanceGetter.invoke(Interceptors_StatelessInstanceGetter.java:16)at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177)at com.sap.engine.services.ejb3.runtime.impl.Interceptors_SecurityCheck.invoke(Interceptors_SecurityCheck.java:21)at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177)at com.sap.engine.services.ejb3.runtime.impl.Interceptors_ExceptionTracer.invoke(Interceptors_ExceptionTracer.java:16)at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177)at com.sap.engine.services.ejb3.runtime.impl.DefaultInvocationChainsManager.startChain(DefaultInvocationChainsManager.java:133)at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:164)at $Proxy1505.execute(Unknown Source)at sun.reflect.GeneratedMethodAccessor629.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:585)at com.sap.engine.services.rmi_p4.P4DynamicSkeleton.dispatch(P4DynamicSkeleton.java:234)at com.sap.engine.services.rmi_p4.DispatchImpl._runInternal(DispatchImpl.java:351)at com.sap.engine.services.rmi_p4.server.ServerDispatchImpl.run(ServerDispatchImpl.java:70)at com.sap.engine.services.rmi_p4.P4Message.process(P4Message.java:62)at com.sap.engine.services.rmi_p4.P4Message.execute(P4Message.java:37)at com.sap.engine.services.cross.fca.FCAConnectorImpl.executeRequest(FCAConnectorImpl.java:872)at com.sap.engine.services.rmi_p4.P4Message.process(P4Message.java:53)at com.sap.engine.services.cross.fca.MessageReader.run(MessageReader.java:58)at com.sap.engine.core.thread.execution.Executable.run(Executable.java:108)at          com.sap.engine.core.thread.execution.CentralExecutor$SingleThread.run(CentralExecutor.java:304)Caused by: java.lang.NullPointerExceptionat com.sap.xi.tf._MM_INVOIC02_TO_DespatchIT_.setFileName(_MM_INVOIC02_TO_DespatchIT_.java:252)... 52 moreRoot Cause:java.lang.NullPointerExceptionat com.sap.xi.tf._MM_INVOIC02_TO_DespatchIT_.setFileName(_MM_INVOIC02_TO_DespatchIT_.java:252)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:585)at com.sap.aii.mappingtool.tf7.rt.MethodImplementedIteratorHelper.executeMethod(MethodImplementedIteratorHelper.java:173)at com.sap.aii.mappingtool.tf7.rt.FunctionWrapper.calculateCurrentValue(FunctionWrapper.java:99)at com.sap.aii.mappingtool.tf7.rt.AbstractFunctionWrapper.cacheValue(AbstractFunctionWrapper.java:32)at com.sap.aii.mappingtool.tf7.rt.AbstractFunctionWrapper.gotoNextContext(AbstractFunctionWrapper.java:42)at com.sap.aii.mappingtool.tf7.AMappingProgram.processNode(AMappingProgram.java:315)at com.sap.aii.mappingtool.tf7.AMappingProgram.start(AMappingProgram.java:496)at com.sap.aii.mappingtool.tf7.Transformer.start(Transformer.java:134)at com.sap.aii.mappingtool.tf7.AMappingProgram.transform(AMappingProgram.java:628)at com.sap.aii.ibrep.server.mapping.exec.ExecuteXiMappingCommand.transformInternal(ExecuteXiMappingCommand.java:197)at com.sap.aii.ibrep.server.mapping.exec.ExecuteXiMappingCommand.execute(ExecuteXiMappingCommand.java:94)at com.sap.aii.ib.server.mapping.exec.CommandManager.execute(CommandManager.java:43)at com.sap.aii.ibrep.server.mapping.ServerMapService.execute(ServerMapService.java:40)at com.sap.aii.ibrep.server.mapping.MapServiceBean.execute(MapServiceBean.java:40)at sun.reflect.GeneratedMethodAccessor630.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:585)at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal(RequestInvocationContext.java:43)at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:166)at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatesTransition.invoke(Interceptors_StatesTransition.java:19)at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177)at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Resource.invoke(Interceptors_Resource.java:71)at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177)at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.doWorkWithAttribute(Interceptors_Transaction.java:38)at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.invoke(Interceptors_Transaction.java:22)at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177)at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:189)at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatelessInstanceGetter.invoke(Interceptors_StatelessInstanceGetter.java:16)at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177)at com.sap.engine.services.ejb3.runtime.impl.Interceptors_SecurityCheck.invoke(Interceptors_SecurityCheck.java:21)at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177)at com.sap.engine.services.ejb3.runtime.impl.Interceptors_ExceptionTracer.invoke(Interceptors_ExceptionTracer.java:16)at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177)at com.sap.engine.services.ejb3.runtime.impl.DefaultInvocationChainsManager.startChain(DefaultInvocationChainsManager.java:133)at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:164)at $Proxy1505.execute(Unknown Source)at sun.reflect.GeneratedMethodAccessor629.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:585)at com.sap.engine.services.rmi_p4.P4DynamicSkeleton.dispatch(P4DynamicSkeleton.java:234)at com.sap.engine.services.rmi_p4.DispatchImpl._runInternal(DispatchImpl.java:351)at com.sap.engine.services.rmi_p4.server.ServerDispatchImpl.run(ServerDispatchImpl.java:70)at com.sap.engine.services.rmi_p4.P4Message.process(P4Message.java:62)at com.sap.engine.services.rmi_p4.P4Message.execute(P4Message.java:37)at com.sap.engine.services.cross.fca.FCAConnectorImpl.executeRequest(FCAConnectorImpl.java:872)at com.sap.engine.services.rmi_p4.P4Message.process(P4Message.java:53)at com.sap.engine.services.cross.fca.MessageReader.run(MessageReader.java:58)at com.sap.engine.core.thread.execution.Executable.run(Executable.java:108)at          com.sap.engine.core.thread.execution.CentralExecutor$SingleThread.run(CentralExecutor.java:304)Runtime exception when processing target-field mapping          /ns0:MT_DespatchIT_Response; root message: Exception:[java.lang.NullPointerException] in class com.sap.xi.tf._MM_INVOIC02_TO_DespatchIT_ method setFileName[0417318, com.sap.aii.mappingtool.tf7.rt.Context@5c7f9723] 14:48:01 End of test    

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

you cant test this code in message mapping it will output the value at runtime only (and if i am not wrong you are doing the same)..in case you want to test your message mapping just put your DC code under try catch block and test your mapping...

Your code seems fine to me ..just try to execute your scenario end to end it will set the filename dynamically

Former Member
0 Kudos

Amit.. you are right.

I am using test functionality in message mapping to test my mapping. So it don't work that way.

Thanks for that.

Former Member
0 Kudos

Hi Amit,

Basically my requirement to get Filename in idoc segments in order to validate the posting at month end.


Its an File to idoc scenario- GL Posting.


Please check attached UDF and it gives error. Kindly help. Thanks

Answers (5)

Answers (5)

Former Member
0 Kudos

Hi Sam,

Basically my requirement to get Filename in idoc segments in order to validate the posting at month end.


Its an File to idoc scenario- GL Posting.


Please check attached UDF and it gives error. Kindly help. Thanks

Former Member
0 Kudos

hi Sam,

Hope you are not testing it in Test tab of Message mapping. You cannot test dynamic configuration from there.

Secondly, Why are you returning empty value. Use return filename. So your code should be like

DynamicConfiguration conf = (DynamicConfiguration) container.getTransformationParameters().get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);

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

String fileName =  "DD0" + var1 + ".TXT";

conf.put(key, fileName);
key= null;

return fileName;

Hope this helps,

Ankit

markangelo_dihiansan
Active Contributor
0 Kudos

Hello,

Aside from what Amit mentioned, can you confirm that the Enable Adapter-Specific Message Attributes(under advanced tab) is checked in your communication channel and that you have checked FileName for it.

Hope this helps,

Mark

Message was edited by: Mark Angelo Dihiansan

Former Member
0 Kudos

Dear Sam

this is the problem

target-field mapping          /ns0:MT_DespatchIT_Response

Also with which node you have mapped the UDF? Ideally if it not required anywhere else, it should be mapped to the root node,

Regards

Monika


Former Member
0 Kudos

hi ,

have you mapped to target root node ?

ex:- logic(if requited)->udf-> target Rootnode

pls refer below link for ex's:

http://wiki.sdn.sap.com/wiki/display/XI/Combining+three+different+aspects+of+PI+in+one+shot