cancel
Showing results for 
Search instead for 
Did you mean: 

Entering data in table not getting saved in r/3 getiing error

Former Member
0 Kudos

Hi all

iam using following code to save data which i entered in table input fieds getting index out of boung exception -1

1) ERROR

2) SAVE CODE

3)COPY TO MODEL NODE CODE

1)ERROR:

java.lang.ArrayIndexOutOfBoundsException: -1

at com.sap.mw.jco.JCO$MetaData.getType(JCO.java:10211)

at com.sap.aii.proxy.framework.core.JcoBaseTypeData.getElementValue(JcoBaseTypeData.java:503)

at com.sap.tc.webdynpro.modelimpl.dynamicrfc.DynamicRFCModelClass.getRelatedModelObjects(DynamicRFCModelClass.java:787)

at com.sap.tc.webdynpro.modelimpl.dynamicrfc.DynamicRFCModelClass.addRelatedModelObject(DynamicRFCModelClass.java:821)

at com.essar.nom.View_nomView.CopyToModelNode(View_nomView.java:775)

at com.essar.nom.View_nomView.onActionSave(View_nomView.java:444)

at com.essar.nom.wdp.InternalView_nomView.wdInvokeEventHandler(InternalView_nomView.java:563)

at com.sap.tc.webdynpro.progmodel.generation.DelegatingView.invokeEventHandler(DelegatingView.java:87)

at com.sap.tc.webdynpro.progmodel.controller.Action.fire(Action.java:67)

at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.doHandleActionEvent(WindowPhaseModel.java:420)

at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.processRequest(WindowPhaseModel.java:132)

at com.sap.tc.webdynpro.clientserver.window.WebDynproWindow.processRequest(WebDynproWindow.java:335)

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

at com.sap.tc.webdynpro.clientserver.session.ApplicationSession.doProcessing(ApplicationSession.java:321)

at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessingStandalone(ClientSession.java:713)

at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessing(ClientSession.java:666)

at com.sap.tc.webdynpro.clientserver.session.ClientSession.doProcessing(ClientSession.java:250)

at com.sap.tc.webdynpro.clientserver.session.RequestManager.doProcessing(RequestManager.java:149)

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

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

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

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

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

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

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

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

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

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

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

at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)

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)

2)ON ACTION SAVE CODE.

public void onActionSave(com.sap.tc.webdynpro.progmodel.api.IWDCustomEvent wdEvent )

{

//@@begin onActionSave(ServerEvent)

wdContext.nodeNu_node_1().invalidate();

//////////////

Calendar cal = Calendar.getInstance();

SimpleDateFormat yearFormat= new SimpleDateFormat("yyyy");

String year = yearFormat.format(cal.getTime());

cal.set( Calendar.MONTH, cal.get( Calendar.MONTH) + 1);

String month1 = new SimpleDateFormat("MMM").format(cal.getTime());

cal.set( Calendar.MONTH, cal.get( Calendar.MONTH) + 1);

int size = wdContext.nodeTEST().size();

IPrivateView_nomView.INu_node_1Node node_set = wdContext.nodeNu_node_1();

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

{

IPrivateView_nomView.INu_node_1Element ele_set = wdContext.createNu_node_1Element();

IPrivateView_nomView.ITESTElement ele_get = wdContext.nodeTEST().getTESTElementAt(i);

ele_set.setAdd01(ele_get.getCtx_ADD01());

ele_set.setBntyp(ele_get.getCa_BNTYP());

ele_set.setDat01(ele_get.getCtx_DAT01());

ele_set.setGra01(ele_get.getCtx_GRA01());

ele_set.setNam01(ele_get.getCtx_NAM01());

ele_set.setPernr(ele_get.getCtx_PERNR());

ele_set.setInfty(ele_get.getCtx_INFTY());

ele_set.setSubty(ele_get.getCtx_Subty());

ele_set.setShp01(ele_get.getCtx_SHP01());

ele_set.setEndda(ele_get.getCtx_Endda());

ele_set.setBegda(ele_get.getCtx_Begda());

ele_set.setAedtm(ele_get.getCtx_Aedtm());

ele_set.setUname(ele_get.getCtx_Uname());

ele_set.setSeqnr(ele_get.getCtx_Seqnr());

ele_set.setRel01(ele_get.getCtx_REL01());

node_set.addElement(i,ele_set);

}

IPrivateView_nomView.IU_P0591_inpNode u_node1 = wdContext.nodeU_P0591_inp();

IPrivateView_nomView.INu_node_1Node c_node1 = wdContext.nodeNu_node_1();

IPrivateView_nomView.INu_node_1Element c_el1;

Zhr_Nominations_Input inp1 = new Zhr_Nominations_Input();

wdContext.nodeZhr_Nominations_Input().bind(inp1);

Pa0591 wel1 = new Pa0591();

inp1.setMode("INS");

CopyToModelNode(inp1,wel1,u_node1,c_node1,"U_P0591_inp");

try

{

wdContext.currentZhr_Nominations_InputElement().modelObject().execute();

wdContext.currentZhr_Nominations_InputElement().modelObject().modelInstance().disconnectIfAlive();

if (wdContext.nodeReturn().size()==0)

{

wdComponentAPI.getMessageManager().reportSuccess("Claim Data saved sucessfully.");

wdThis.wdGetComp_nomController().executerfc("DIS");

}

else

{

wdComponentAPI.getMessageManager().reportException(wdContext.currentReturnElement().getMessage(),true);

}

}

catch (Exception e)

{

wdComponentAPI.getMessageManager().raiseException( wdContext.currentReturnElement().getMessage(),true);

wdComponentAPI.getMessageManager().reportSuccess("Error.");

}

3)COPY TO MODEL NODE CODE:

private boolean CopyToModelNode(com.sap.tc.webdynpro.modelimpl.dynamicrfc.DynamicRFCModelClassExecutable inp,

com.sap.tc.webdynpro.modelimpl.dynamicrfc.DynamicRFCModelClass structureClass,

IWDNode modelNode,

IWDNode valueNode,

String internalTableName)

{

int targetSize = valueNode.size();

boolean bRetVal = true;

if (targetSize > 0)

{

modelNode.invalidate();

for (int i = 0; i < targetSize; i++) {

ICMIModelClass mc;

try

{

mc = (ICMIModelClass) structureClass.getClass().newInstance();

inp.addRelatedModelObject(internalTableName, mc);

}

catch (InstantiationException e)

{

return false;

}

catch (IllegalAccessException e)

{

return false;

}

}

final Iterator it = modelNode.getNodeInfo().iterateAttributes();

String att2Process="";

while(it.hasNext())

{

IWDAttributeInfo attrib = (IWDAttributeInfo) it.next();

String local;

local = attrib.getName();

attrib = valueNode.getNodeInfo().getAttribute(local);

if (attrib != null)

{

if (att2Process.length() > 0) att2Process += ",";

att2Process += local;

}

}

String sAttrib[];

sAttrib = att2Process.split(",");

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

{

IWDNodeElement elSource, elTarget;

elSource = valueNode.getElementAt(i);

elTarget = modelNode.getElementAt(i);

for(int col=0; col < sAttrib.length; col++)

{

try {

elTarget.setAttributeValue(sAttrib[col], elSource.getAttributeValue(sAttrib[col]));

}

catch (Exception e) {

bRetVal = false;

// do nothing

}

}

}

}

return bRetVal;

}

private byte[] getByteArrayFromResourcePath(InputStream resourcePath)

throws FileNotFoundException, IOException

{

// FileInputStream in = new FileInputStream(new File(resourcePath));

ByteArrayOutputStream out = new ByteArrayOutputStream();

int length;

byte[] part = new byte[10 * 1024];

while ((length = resourcePath.read(part)) != -1) {

out.write(part, 0, length);

}

// in.close();

return out.toByteArray();

}

Accepted Solutions (0)

Answers (1)

Answers (1)

0 Kudos

Hi Mahesh,

First check your JCO destination's are working fine, to do this:

Go to the content administration>webdynpro->click on maintaine the jco destinations---> select your model data and meta data destination and ping and test.

if your JCO's are working fine then check whether the rfc is accepting multiple values are not in the input node.

if rfc input node is accepting multiple values and if you binded directly rfc input node to the table then write the following code in wdOnInit() method of component controller.

<RFC Name>_input in = new <RFC Name>_input();

wdContext.node<RFC Name>_input().bind(in);

<input node RFC structure name> targetnode =new <input node RFC structure name>();

in.add(targetnode);

if rfc input node is accepting multiple values and if you binded value node to the table then write the follwing code in onActionSave() method:

<RFC Name>_input in = new <RFC Name>_input();

wdContext.node<RFC Name>_input().bind(in);

<input node RFC structure name> targetnode =new <input node RFC structure name>();

in.add<input node name>(targetnode);

hope this will help you.

Thanks & Regards,

Bhargava