cancel
Showing results for 
Search instead for 
Did you mean: 

Data Type Exception ( i cant capture it or manage it )

former_member572947
Discoverer
0 Kudos

Hi There,

When i introduce some non-numerical characters in a InputField (employeeNumber), and this is mapped and binding to a model (R/3 system, Version 4.6c, rfc: BAPI_ADDRESSEMPGETDETAILEDLIST ; model data type: BAPIP0006-PERNR) a fatal error stop the application execution:

Error stacktrace:

com.sap.aii.proxy.framework.core.DataAccessException: Type conversion error, field EMPLOYEENUMBER, complex type class sap.cantv.bapi_addressemp_change.model4.Bapi_Addressempgetdetailedlist_Input

at com.sap.aii.proxy.framework.core.JcoBaseTypeData.propagateJcoException(JcoBaseTypeData.java:130)

at com.sap.aii.proxy.framework.core.JcoBaseTypeData.setElementValue(JcoBaseTypeData.java:751)

at com.sap.tc.webdynpro.modelimpl.dynamicrfc.DynamicRFCModelClass.setAttributeValueAsString(DynamicRFCModelClass.java:657)

at sap.cantv.bapi_addressemp_change.model4.Bapi_Addressempgetdetailedlist_Input.setEmployeenumber(Bapi_Addressempgetdetailedlist_Input.java:192)

at sap.cantv.bapi_addressemp_change.wdp.IPublicBAPI_ADDRESSEMP_CHANGE$IReadElement.wdpSetObject(IPublicBAPI_ADDRESSEMP_CHANGE.java:3349)

at com.sap.tc.webdynpro.progmodel.context.MappedNodeElement.wdpSetObject(MappedNodeElement.java:75)

at com.sap.tc.webdynpro.progmodel.context.AttributePointer.setObject(AttributePointer.java:222)

at com.sap.tc.webdynpro.clientserver.data.DataContainer.transportPendingUserInput(DataContainer.java:1196)

at com.sap.tc.webdynpro.clientserver.data.DataContainer.transportPendingUserInput(DataContainer.java:404)

at com.sap.tc.webdynpro.clientserver.cal.ClientComponent.transport(ClientComponent.java:547)

at com.sap.tc.webdynpro.clientserver.cal.ClientApplication.transport(ClientApplication.java:623)

at com.sap.tc.webdynpro.clientserver.task.WebDynproMainTask.transportData(WebDynproMainTask.java:654)

at com.sap.tc.webdynpro.clientserver.task.WebDynproMainTask.execute(WebDynproMainTask.java:581)

at com.sap.tc.webdynpro.clientserver.cal.AbstractClient.executeTasks(AbstractClient.java:57)

at com.sap.tc.webdynpro.clientserver.cal.ClientManager.doProcessing(ClientManager.java:251)

at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doWebDynproProcessing(DispatcherServlet.java:139)

at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doContent(DispatcherServlet.java:101)

at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doPost(DispatcherServlet.java:45)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:385)

at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:263)

at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:337)

at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:315)

at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:815)

at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:238)

at com.sap.engine.services.httpserver.server.Client.handle(Client.java:92)

at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:147)

at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:37)

at com.sap.engine.core.cluster.impl6.session.UnorderedChannel$MessageRunner.run(UnorderedChannel.java:71)

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:94)

at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:151)

Please help to solve this situation,

Thanks a lot

Francisco.

Accepted Solutions (0)

Answers (1)

Answers (1)

former_member572947
Discoverer
0 Kudos

please, somebody help me to solve this problem.

Thank you

Francisco.-

Former Member
0 Kudos

Hi,

The best way to solve your problem is not to capture or manage it, but to prevent the error by implementing some simple validation rules on what your user should enter.

Before the execution of the model, check the personnel number is valid (numeric).

If the validation fails, display a meaningful error message to the user, and don’t execute the model.

This means you keep the control, and the work done in your application (ie. It doesn’t try and call the back-end system until it should, or needs to), and you get control on the error message the user is displayed with.

This is good for usability.

Let me know if you would like more detail on how to accomplish this.

Regards,

Anthony.