cancel
Showing results for 
Search instead for 
Did you mean: 

IndexOutofbound exception

Former Member
0 Kudos

Hello,

I am trying to edit the permanent address in address iview of ESS.

I am getting this exception. Can any one please let me know how to fix this?

I get this error when i click edit on permanent residence.

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

at java.util.ArrayList.RangeCheck(ArrayList.java:539)

at java.util.ArrayList.get(ArrayList.java:356)

at com.sap.tc.webdynpro.progmodel.context.Node$ElementList.getElement(Node.java:2034)

at com.sap.tc.webdynpro.progmodel.context.Node.getElementAtInternal(Node.java:621)

at com.sap.tc.webdynpro.progmodel.context.Node.getElementAt(Node.java:628)

at com.sap.xss.per.fc.persinfo.FcPersInfo.setModeForSubtype(FcPersInfo.java:1696)

at com.sap.xss.per.fc.persinfo.FcPersInfo.setModeEdit(FcPersInfo.java:580)

at com.sap.xss.per.fc.persinfo.wdp.InternalFcPersInfo.setModeEdit(InternalFcPersInfo.java:795)

at com.sap.xss.per.fc.persinfo.FcPersInfoInterface.setModeEdit(FcPersInfoInterface.java:226)

at com.sap.xss.per.fc.persinfo.wdp.InternalFcPersInfoInterface.setModeEdit(InternalFcPersInfoInterface.java:291)

at com.sap.xss.per.fc.persinfo.wdp.InternalFcPersInfoInterface$External.setModeEdit(InternalFcPersInfoInterface.java:455)

at com.sap.xss.hr.per.us.address.overview.VcPerAddressUSOverview.onEvent(VcPerAddressUSOverview.java:218)

at com.sap.xss.hr.per.us.address.overview.wdp.InternalVcPerAddressUSOverview.onEvent(InternalVcPerAddressUSOverview.java:267)

at com.sap.xss.hr.per.us.address.overview.VcPerAddressUSOverviewInterface.onEvent(VcPerAddressUSOverviewInterface.java:116)

at com.sap.xss.hr.per.us.address.overview.wdp.InternalVcPerAddressUSOverviewInterface.onEvent(InternalVcPerAddressUSOverviewInterface.java:124)

at com.sap.xss.hr.per.us.address.overview.wdp.InternalVcPerAddressUSOverviewInterface$External.onEvent(InternalVcPerAddressUSOverviewInterface.java:208)

at com.sap.pcuigp.xssfpm.wd.FPMComponent.doProcessEvent(FPMComponent.java:534)

at com.sap.pcuigp.xssfpm.wd.FPMComponent.doEventLoop(FPMComponent.java:438)

at com.sap.pcuigp.xssfpm.wd.FPMComponent.access$600(FPMComponent.java:78)

at com.sap.pcuigp.xssfpm.wd.FPMComponent$FPM.raiseEvent(FPMComponent.java:938)

at com.sap.pcuigp.xssfpm.wd.FPMComponent$FPMProxy.raiseEvent(FPMComponent.java:1101)

at com.sap.xss.hr.per.us.address.overview.VcPerAddressUSOverview.edit(VcPerAddressUSOverview.java:246)

at com.sap.xss.hr.per.us.address.overview.wdp.InternalVcPerAddressUSOverview.edit(InternalVcPerAddressUSOverview.java:275)

at com.sap.xss.hr.per.us.address.overview.BizCardsView.onActionEdit(BizCardsView.java:286)

at com.sap.xss.hr.per.us.address.overview.wdp.InternalBizCardsView.wdInvokeEventHandler(InternalBizCardsView.java:227)

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.doApplicationProcessingPortal(ClientSession.java:733)

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

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.clientserver.session.core.ApplicationHandle.doProcessing(ApplicationHandle.java:73)

at com.sap.tc.webdynpro.portal.pb.impl.AbstractApplicationProxy.sendDataAndProcessActionInternal(AbstractApplicationProxy.java:860)

at com.sap.tc.webdynpro.portal.pb.impl.localwd.LocalApplicationProxy.sendDataAndProcessAction(LocalApplicationProxy.java:77)

at com.sap.portal.pb.PageBuilder.updateApplications(PageBuilder.java:1299)

at com.sap.portal.pb.PageBuilder.SendDataAndProcessAction(PageBuilder.java:326)

at com.sap.portal.pb.PageBuilder$1.doPhase(PageBuilder.java:868)

at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.processPhaseListener(WindowPhaseModel.java:755)

at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.doPortalDispatch(WindowPhaseModel.java:717)

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

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(AccessController.java:215)

at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:102)

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

=====Below is the Addressoverviewhelper.java which I used===

/*

  • Created on Jul 9, 2003

*

  • To change the template for this generated file go to

  • Window>Preferences>Java>Code Generation>Code and Comments

*/

package com.sap.xss.hr.per.us.address.helpers;

import java.sql.Timestamp;

import java.util.Date;

import java.util.GregorianCalendar;

import java.util.Locale;

import com.sap.dictionary.runtime.DdDictionaryPool;

import com.sap.dictionary.runtime.IBroker;

import com.sap.dictionary.runtime.ISimpleType;

import com.sap.tc.webdynpro.clientserver.uielib.standard.api.IWDButton;

import com.sap.tc.webdynpro.clientserver.uielib.standard.api.IWDCaption;

import com.sap.tc.webdynpro.clientserver.uielib.standard.api.IWDGridData;

import com.sap.tc.webdynpro.clientserver.uielib.standard.api.IWDGridLayout;

import com.sap.tc.webdynpro.clientserver.uielib.standard.api.IWDMatrixData;

import com.sap.tc.webdynpro.clientserver.uielib.standard.api.IWDFlowLayout;

import com.sap.tc.webdynpro.clientserver.uielib.standard.api.IWDFlowData;

import com.sap.tc.webdynpro.clientserver.uielib.standard.api.IWDGroup;

import com.sap.tc.webdynpro.clientserver.uielib.standard.api.IWDLabel;

import com.sap.tc.webdynpro.clientserver.uielib.standard.api.IWDTextView;

import com.sap.tc.webdynpro.clientserver.uielib.standard.api.IWDTransparentContainer;

import com.sap.tc.webdynpro.clientserver.uielib.standard.api.WDButtonDesign;

import com.sap.tc.webdynpro.clientserver.uielib.standard.api.WDGroupDesign;

import com.sap.tc.webdynpro.progmodel.api.IWDNode;

import com.sap.tc.webdynpro.progmodel.api.IWDNodeElement;

import com.sap.tc.webdynpro.progmodel.api.IWDView;

import com.sap.xss.per.helpers.BizcardFieldInfo;

/**

  • @author i007419

*

  • To change the template for this generated type comment go to

  • Window>Preferences>Java>Code Generation>Code and Comments

*/

public class AddressOverviewHelper {

public static void CreateOverview(

IWDNode records,

IWDNode subtypes,

IWDView view,

BizcardFieldInfo[] fieldInfo1,

BizcardFieldInfo[] fieldInfo2,

Date defaultBegda,

String subtypeFieldName) {

CreateOverview( records, records, subtypes, view, fieldInfo1,fieldInfo2, defaultBegda, subtypeFieldName);

/*

view.resetView();

IWDTransparentContainer rootContainer =

(IWDTransparentContainer) view.getElement("rootContainer");

//Create Bizcard Container -


IWDTransparentContainer bizcardContainer =

(IWDTransparentContainer) view.createElement(

IWDTransparentContainer.class,

"bizcardContainer");

bizcardContainer.setWidth("70%");

IWDGridLayout bcContainerGridLayout =

(IWDGridLayout) bizcardContainer.createLayout(IWDGridLayout.class);

bcContainerGridLayout.setColCount(2);

//Create Button Container -


IWDTransparentContainer buttonContainer =

(IWDTransparentContainer) view.createElement(

IWDTransparentContainer.class,

"buttonContainer");

IWDGridLayout buttonContainerGridLayout =

(IWDGridLayout) buttonContainer.createLayout(IWDGridLayout.class);

buttonContainer.setWidth("250px");

buttonContainerGridLayout.setColCount(2);

rootContainer.addChild(bizcardContainer);

rootContainer.addChild(buttonContainer);

//Create Bizcards

for (int i = 0; i < records.size(); i++) {

//Create Bizcard for this Record -


IWDGroup bizcard =

(IWDGroup) view.createElement(IWDGroup.class, "bizcard_" + i);

bizcard.setWidth("300px");

bizcard.setDesign(WDGroupDesign.SAPCOLOR);

IWDGridLayout bcGridLayout =

(IWDGridLayout) bizcard.createLayout(IWDGridLayout.class);

bcGridLayout.setColCount(2);

IWDGridData bcGridData =

(IWDGridData) bizcard.createLayoutData(IWDGridData.class);

bcGridData.setPaddingRight("15px");

bcGridData.setPaddingBottom("15px");

IWDNodeElement recordElement = records.getElementAt(i);

//Create Bizcard Header -


IWDCaption header =

(IWDCaption) view.createElement(IWDCaption.class, "header" + i);

//Get Subtype text----


String stext;

for (int j = 0; j < subtypes.size(); j++) {

IWDNodeElement subtypeElement = subtypes.getElementAt(j);

String tableSubtypeNumber =

subtypeElement.getAttributeValue("Subtype").toString();

if (subtypeFieldName.equals("")) {

if (tableSubtypeNumber.equals("")) {

header.setText(

subtypeElement

.getAttributeValue("Stext")

.toString());

}

} else {

String recordSubtypeNumber =

recordElement

.getAttributeValue(subtypeFieldName)

.toString();

if (tableSubtypeNumber.equals(recordSubtypeNumber)) {

header.setText(

subtypeElement

.getAttributeValue("Stext")

.toString());

}

}

}

//If future record, append begin date of record to Bizcard header

try {

String recordDateString =

recordElement.getAttributeValue("Begda").toString();

GregorianCalendar calendar_default = new GregorianCalendar();

GregorianCalendar calendar_record = new GregorianCalendar();

calendar_default.setTime(defaultBegda);

calendar_record.setTime(defaultBegda);

calendar_record.set(

Integer.parseInt(recordDateString.substring(0, 4)),

Integer.parseInt(recordDateString.substring(5, 7)) - 1,

Integer.parseInt(recordDateString.substring(8, 10)));

if (calendar_record.equals(calendar_default)) {

header.setText(

header.getText()

+ " ("

+ view.getComponent().getTextAccessor().getText(

"EffectiveAsOfToday")

+ ")");

} else if (calendar_record.after(calendar_default)) {

header.setText(

header.getText()

+ " ("

+ view.getComponent().getTextAccessor().getText(

"EffectiveAsOf",

new String[] { recordDateString })

+ ")");

}

} catch (RuntimeException ex) {

// TODO Auto-generated catch block

ex.printStackTrace();

}

bizcard.setHeader(header);

for (int k = 0; k < fieldInfo.length; k++) {

IWDLabel labelView =

(IWDLabel) view.createElement(

IWDLabel.class,

"labelView" + i + k);

labelView.setText(fieldInfo[k].label);

IWDTextView textView =

(IWDTextView) view.createElement(

IWDTextView.class,

"textView" + i + k);

if (recordElement.getAttributeValue(fieldInfo[k].fieldname)

== null) {

textView.setText("");

} else {

textView.setText(

recordElement

.getAttributeValue(fieldInfo[k].fieldname)

.toString());

}

IWDGridData textGridData =

(IWDGridData) textView.createLayoutData(IWDGridData.class);

textGridData.setWidth("60%");

bizcard.addChild(labelView);

bizcard.addChild(textView);

}

//Create EDIT Button Container -


IWDTransparentContainer editButtonContainer =

(IWDTransparentContainer) view.createElement(

IWDTransparentContainer.class,

"editButtonContainer" + i);

IWDGridLayout editButtonContainerGridLayout =

(IWDGridLayout) editButtonContainer.createLayout(IWDGridLayout.class);

IWDGridData editButtonContainerGridData =

(IWDGridData) editButtonContainer.createLayoutData(IWDGridData.class);

editButtonContainer.setWidth("150px");

editButtonContainerGridData.setColSpan(2);

editButtonContainerGridData.setPaddingTop("15px");

editButtonContainerGridLayout.setColCount(2);

//Create Edit Button -


IWDButton editButton =

(IWDButton) view.createElement(

IWDButton.class,

"editButton_" + i);

editButton.setText(

view.getComponent().getTextAccessor().getText("Edit"));

editButton.setOnAction(view.getAction("Edit"));

editButton.mappingOfOnAction().addParameter("index", i);

editButton.setWidth("50px");

IWDGridData editButtonGridData =

(IWDGridData) editButton.createLayoutData(IWDGridData.class);

editButtonGridData.setPaddingRight("10px");

editButton.setDesign(WDButtonDesign.NEXT);

//bizcard.addChild(editButton);

editButtonContainer.addChild(editButton);

//Create Delete Button -


if (hasDeleteButton(recordElement,

subtypes,

subtypeFieldName,

defaultBegda)) {

IWDButton deleteButton =

(IWDButton) view.createElement(

IWDButton.class,

"deleteButton_" + i);

deleteButton.setText(

view.getComponent().getTextAccessor().getText("Delete"));

deleteButton.setOnAction(view.getAction("Delete"));

deleteButton.mappingOfOnAction().addParameter("index", i);

deleteButton.setWidth("50px");

IWDGridData deleteButtonGridData =

(IWDGridData) deleteButton.createLayoutData(

IWDGridData.class);

deleteButtonGridData.setPaddingRight("15px");

//bizcard.addChild(deleteButton);

editButtonContainer.addChild(deleteButton);

}

//Add EDIT Button container to Bizcard

bizcard.addChild(editButtonContainer);

//Add this Bizcard to bizcardContainer

bizcardContainer.addChild(bizcard);

}

int newButtonCount = 0;

for (int subtypeCount = 0;

subtypeCount < subtypes.size();

subtypeCount++) {

IWDNodeElement subtypeElement = subtypes.getElementAt(subtypeCount);

if (hasNewButton(records, subtypeElement, subtypeFieldName)) {

//Create NEW button

String subtypeName =

subtypeElement.getAttributeValue("Stext").toString();

String subtypeNumber =

subtypeElement.getAttributeValue("Subtype").toString();

IWDButton newButton =

(IWDButton) view.createElement(

IWDButton.class,

"newButton_" + subtypeNumber);

newButton.setText(

view.getComponent().getTextAccessor().getText(

"New",

new String[] { subtypeName }));

newButton.setWidth("150px");

newButton.setOnAction(view.getAction("New"));

newButton.mappingOfOnAction().addParameter(

"subtype",

subtypeNumber);

IWDGridData newButtonGridData =

(IWDGridData) newButton.createLayoutData(IWDGridData.class);

newButton.setDesign(WDButtonDesign.NEXT);

newButtonGridData.setPaddingBottom("10px");

newButtonCount++;

//Create Cancel button----


if (newButtonCount == 1) {

newButtonGridData.setColSpan(1);

IWDButton cancelButton =

(IWDButton) view.createElement(

IWDButton.class,

"cancelButton");

cancelButton.setText(

view.getComponent().getTextAccessor().getText(

"Cancel"));

cancelButton.setWidth("50px");

cancelButton.setOnAction(view.getAction("Cancel"));

IWDGridData cancelButtonGridData =

(IWDGridData) cancelButton.createLayoutData(

IWDGridData.class);

cancelButtonGridData.setPaddingLeft("30px");

buttonContainer.addChild(newButton);

buttonContainer.addChild(cancelButton);

} else {

newButtonGridData.setColSpan(2);

buttonContainer.addChild(newButton);

}

}

}

if (newButtonCount == 0) {

IWDButton cancelButton =

(IWDButton) view.createElement(IWDButton.class, "cancelButton");

cancelButton.setText(

view.getComponent().getTextAccessor().getText("Cancel"));

cancelButton.setWidth("50px");

cancelButton.setOnAction(view.getAction("Cancel"));

IWDGridData cancelButtonGridData =

(IWDGridData) cancelButton.createLayoutData(IWDGridData.class);

buttonContainer.addChild(cancelButton);

}

*/

}

private static boolean hasNewButton(

IWDNode records,

IWDNodeElement subtypeElement,

String subtypeFieldName) {

boolean hasNewButton = true;

String usecase = (String) subtypeElement.getAttributeValue("Case");

if (usecase.equals("B3")) {

// New button is needed for case B3----


hasNewButton = true;

} else {

if (subtypeFieldName.equals("") & records.size() > 0) {

hasNewButton = false;

} else {

// Other cases, check whether there is record with same subtype

for (int i = 0; i < records.size(); i++) {

IWDNodeElement recordElement = records.getElementAt(i);

if (recordElement

.getAttributeValue(subtypeFieldName)

.equals(subtypeElement.getAttributeValue("Subtype"))) {

hasNewButton = false;

//}

break;

}

}

}

}

// Check configuration of Create Button (table T7XSSPERSUBTYPE) for override

// String newbutton = (String) subtypeElement.getAttributeValue("Cre_button");

// if (newbutton.equals("-")) {

// hasNewButton = false;

// }

// String displayonly = (String) subtypeElement.getAttributeValue("Disp_only");

// if (displayonly.equals("-")) {

// hasNewButton = false;

// }

return hasNewButton;

}

private static boolean hasDeleteButton(

IWDNodeElement recordElement,

IWDNode subtypes,

String subtypeFieldName,

Date defaultBegda) {

boolean hasDeleteButton = false;

if (((Date) recordElement.getAttributeValue("Begda"))

.after(defaultBegda))

hasDeleteButton = true;

else {

String usecase = "";

if (subtypeFieldName.equals("")) {

for (int j = 0; j < subtypes.size(); j++) {

IWDNodeElement subtype = subtypes.getElementAt(j);

if (subtype

.getAttributeValue("Subtype")

.equals(subtypeFieldName)) {

usecase = (String) subtype.getAttributeValue("Case");

break;

}

}

} else {

for (int j = 0; j < subtypes.size(); j++) {

IWDNodeElement subtype = subtypes.getElementAt(j);

if (recordElement

.getAttributeValue(subtypeFieldName)

.equals(subtype.getAttributeValue("Subtype"))) {

usecase = (String) subtype.getAttributeValue("Case");

break;

}

}

}

//if ((usecase.substring(1).equals("2")) || (usecase.substring(1).equals("3")))

if ((usecase.equals("A2"))

|| (usecase.equals("B2"))

|| (usecase.equals("B3"))) {

hasDeleteButton = true;

}

}

// Check configuration of Delete Button (table T7XSSPERSUBTYPE) for override

// for (int j = 0; j < subtypes.size(); j++)

// {

// IWDNodeElement subtype = subtypes.getElementAt(j);

// if (recordElement.getAttributeValue(subtypeFieldName).equals(subtype.getAttributeValue("Subtype")))

// {

// String delbutton = (String) subtype.getAttributeValue("Del_button");

// if (delbutton.equals("-")){ hasDeleteButton = false; }

//// String displayonly = (String) subtype.getAttributeValue("Disp_only");

//// if (displayonly.equals("-")) {hasDeleteButton = false; }

// break;

// }

// }

return hasDeleteButton;

}

public static void CreateOverview(

IWDNode records,

IWDNode records2,

IWDNode subtypes,

IWDView view,

BizcardFieldInfo[] fieldInfo1,

BizcardFieldInfo[] fieldInfo2,

Date defaultBegda,

String subtypeFieldName) {

view.resetView();

IWDTransparentContainer rootContainer =

(IWDTransparentContainer) view.getElement("rootContainer");

//Create Bizcard Container -


IWDTransparentContainer bizcardContainer =

(IWDTransparentContainer) view.createElement(

IWDTransparentContainer.class,

"bizcardContainer");

bizcardContainer.setWidth("70%");

IWDGridLayout bcContainerGridLayout =

(IWDGridLayout) bizcardContainer.createLayout(IWDGridLayout.class);

bcContainerGridLayout.setColCount(2);

//Create Button Container -


IWDTransparentContainer buttonContainer =

(IWDTransparentContainer) view.createElement(

IWDTransparentContainer.class,

"buttonContainer");

IWDGridLayout buttonContainerGridLayout =

(IWDGridLayout) buttonContainer.createLayout(IWDGridLayout.class);

buttonContainer.setWidth("250px");

buttonContainerGridLayout.setColCount(2);

rootContainer.addChild(bizcardContainer);

rootContainer.addChild(buttonContainer);

//Create Bizcards

for (int i = 0; i < records.size(); i++) {

//Create Bizcard for this Record -


IWDGroup bizcard =

(IWDGroup) view.createElement(IWDGroup.class, "bizcard_" + i);

bizcard.setWidth("300px");

bizcard.setDesign(WDGroupDesign.SAPCOLOR);

IWDGridLayout bcGridLayout =

(IWDGridLayout) bizcard.createLayout(IWDGridLayout.class);

bcGridLayout.setColCount(2);

IWDGridData bcGridData =

(IWDGridData) bizcard.createLayoutData(IWDGridData.class);

bcGridData.setPaddingRight("15px");

bcGridData.setPaddingBottom("15px");

IWDNodeElement recordElement = records.getElementAt(i);

IWDNodeElement record2Element = null;

if (records2.size() > i){

record2Element = records2.getElementAt(i);

}

//Create Bizcard Header -


IWDCaption header =

(IWDCaption) view.createElement(IWDCaption.class, "header" + i);

//Get Subtype text----


String stext;

for (int j = 0; j < subtypes.size(); j++) {

IWDNodeElement subtypeElement = subtypes.getElementAt(j);

String tableSubtypeNumber =

subtypeElement.getAttributeValue("Subtype").toString();

if (subtypeFieldName.equals("")) {

if (tableSubtypeNumber.equals("")) {

header.setText(

subtypeElement

.getAttributeValue("Stext")

.toString());

}

} else {

String recordSubtypeNumber =

recordElement

.getAttributeValue(subtypeFieldName)

.toString();

if (tableSubtypeNumber.equals(recordSubtypeNumber)) {

header.setText(

subtypeElement

.getAttributeValue("Stext")

.toString());

}

}

}

//If future record, append begin date of record to Bizcard header

try {

ISimpleType st = records.getNodeInfo().getAttribute("Begda").getSimpleType();

String recordDateFormat = st.format(recordElement.getAttributeValue("Begda"));

String recordDateString =

recordElement.getAttributeValue("Begda").toString();

GregorianCalendar calendar_default = new GregorianCalendar();

GregorianCalendar calendar_record = new GregorianCalendar();

calendar_default.setTime(defaultBegda);

calendar_record.setTime(defaultBegda);

calendar_record.set(

Integer.parseInt(recordDateString.substring(0, 4)),

Integer.parseInt(recordDateString.substring(5, 7)) - 1,

Integer.parseInt(recordDateString.substring(8, 10)));

if (calendar_record.equals(calendar_default)) {

header.setText(

header.getText()

+ " ("

+ view.getComponent().getTextAccessor().getText(

"EffectiveAsOfToday")

+ ")");

} else if (calendar_record.after(calendar_default)) {

header.setText(

header.getText()

+ " ("

+ view.getComponent().getTextAccessor().getText(

"EffectiveAsOf",

new String[] { recordDateFormat })

+ ")");

}

} catch (RuntimeException ex) {

// TODO Auto-generated catch block

ex.printStackTrace();

}

bizcard.setHeader(header);

//changes

BizcardFieldInfo[] fieldInfo;

String strSubtype = recordElement.getAttributeValue("Anssa").toString();

if (strSubtype.equals("10"))

fieldInfo = fieldInfo2;

else

fieldInfo = fieldInfo1;

for (int k = 0; k < fieldInfo.length; k++) {

IWDLabel labelView =

(IWDLabel) view.createElement(

IWDLabel.class,

"labelView" + i + k);

labelView.setText(fieldInfo[k].label);

IWDTextView textView =

(IWDTextView) view.createElement(

IWDTextView.class,

"textView" + i + k);

labelView.setLabelFor("textView" + i + k);

String fieldText = "";

if ((fieldInfo[k].indicator == null) || (fieldInfo[k].indicator.equals("1"))){

if (recordElement.getAttributeValue(fieldInfo[k].fieldname) != null) {

fieldText = recordElement.getAttributeValue(fieldInfo[k].fieldname).toString();

}

} else if (fieldInfo[k].indicator.equals("2")) {

if ((record2Element != null ) && (record2Element.getAttributeValue(fieldInfo[k].fieldname) != null)) {

fieldText = record2Element.getAttributeValue(fieldInfo[k].fieldname).toString();

}

}

textView.setText(fieldText);

IWDGridData textGridData =

(IWDGridData) textView.createLayoutData(IWDGridData.class);

textGridData.setWidth("60%");

bizcard.addChild(labelView);

bizcard.addChild(textView);

}

//Create EDIT Button Container -


IWDTransparentContainer editButtonContainer =

(IWDTransparentContainer) view.createElement(

IWDTransparentContainer.class,

"editButtonContainer" + i);

IWDGridLayout editButtonContainerGridLayout =

(IWDGridLayout) editButtonContainer.createLayout(IWDGridLayout.class);

IWDGridData editButtonContainerGridData =

(IWDGridData) editButtonContainer.createLayoutData(IWDGridData.class);

editButtonContainer.setWidth("150px");

editButtonContainerGridData.setColSpan(2);

editButtonContainerGridData.setPaddingTop("15px");

editButtonContainerGridLayout.setColCount(2);

//Create Edit Button -


IWDButton editButton =

(IWDButton) view.createElement(

IWDButton.class,

"editButton_" + i);

editButton.setText(

view.getComponent().getTextAccessor().getText("Edit"));

editButton.setOnAction(view.getAction("Edit"));

editButton.mappingOfOnAction().addParameter("index", i);

editButton.setWidth("50px");

IWDGridData editButtonGridData =

(IWDGridData) editButton.createLayoutData(IWDGridData.class);

editButtonGridData.setPaddingRight("10px");

editButton.setDesign(WDButtonDesign.NEXT);

//bizcard.addChild(editButton);

editButtonContainer.addChild(editButton);

//Create Delete Button -


if (hasDeleteButton(recordElement,

subtypes,

subtypeFieldName,

defaultBegda)) {

IWDButton deleteButton =

(IWDButton) view.createElement(

IWDButton.class,

"deleteButton_" + i);

deleteButton.setText(

view.getComponent().getTextAccessor().getText("Delete"));

deleteButton.setOnAction(view.getAction("Delete"));

deleteButton.mappingOfOnAction().addParameter("index", i);

deleteButton.setWidth("50px");

IWDGridData deleteButtonGridData =

(IWDGridData) deleteButton.createLayoutData(

IWDGridData.class);

deleteButtonGridData.setPaddingRight("15px");

//bizcard.addChild(deleteButton);

editButtonContainer.addChild(deleteButton);

}

//Add EDIT Button container to Bizcard

bizcard.addChild(editButtonContainer);

//Add this Bizcard to bizcardContainer

bizcardContainer.addChild(bizcard);

}

int newButtonCount = 0;

for (int subtypeCount = 0;

subtypeCount < subtypes.size();

subtypeCount++) {

IWDNodeElement subtypeElement = subtypes.getElementAt(subtypeCount);

if (hasNewButton(records, subtypeElement, subtypeFieldName)) {

//Create NEW button

String subtypeName =

subtypeElement.getAttributeValue("Stext").toString();

String subtypeNumber =

subtypeElement.getAttributeValue("Subtype").toString();

IWDButton newButton =

(IWDButton) view.createElement(

IWDButton.class,

"newButton_" + subtypeNumber);

newButton.setText(

view.getComponent().getTextAccessor().getText(

"New",

new String[] { subtypeName }));

newButton.setWidth("150px");

newButton.setOnAction(view.getAction("New"));

newButton.mappingOfOnAction().addParameter(

"subtype",

subtypeNumber);

IWDGridData newButtonGridData =

(IWDGridData) newButton.createLayoutData(IWDGridData.class);

newButton.setDesign(WDButtonDesign.NEXT);

newButtonGridData.setPaddingBottom("10px");

newButtonCount++;

//Create Cancel button----


if (newButtonCount == 1) {

newButtonGridData.setColSpan(1);

IWDButton cancelButton =

(IWDButton) view.createElement(

IWDButton.class,

"cancelButton");

cancelButton.setText(

view.getComponent().getTextAccessor().getText(

"Cancel"));

cancelButton.setWidth("50px");

cancelButton.setOnAction(view.getAction("Cancel"));

IWDGridData cancelButtonGridData =

(IWDGridData) cancelButton.createLayoutData(

IWDGridData.class);

cancelButtonGridData.setPaddingLeft("30px");

buttonContainer.addChild(newButton);

buttonContainer.addChild(cancelButton);

} else {

newButtonGridData.setColSpan(2);

buttonContainer.addChild(newButton);

}

}

}

if (newButtonCount == 0) {

IWDButton cancelButton =

(IWDButton) view.createElement(IWDButton.class, "cancelButton");

cancelButton.setText(

view.getComponent().getTextAccessor().getText("Cancel"));

cancelButton.setWidth("50px");

cancelButton.setOnAction(view.getAction("Cancel"));

IWDGridData cancelButtonGridData =

(IWDGridData) cancelButton.createLayoutData(IWDGridData.class);

buttonContainer.addChild(cancelButton);

}

}

}

=================================WDmodifyview=====================

public static void wdDoModifyView(IPrivateBizCardsView wdThis, IPrivateBizCardsView.IContextNode wdContext, com.sap.tc.webdynpro.progmodel.api.IWDView view, boolean firstTime)

{

//@@begin wdDoModifyView

BizcardFieldInfo[] fieldInfo;

BizcardFieldInfo[] fieldInfo1;

Date defaultBegda = wdContext.currentContextElement().getDefault_Begda();

String bizcardField1 = wdThis.wdGetAPI().getComponent().getTextAccessor().getText("BizcardField1");

String bizcardField2 = wdThis.wdGetAPI().getComponent().getTextAccessor().getText("BizcardField2");

String bizcardField3 = wdThis.wdGetAPI().getComponent().getTextAccessor().getText("BizcardField3");

String BizcardBOFAField4 = wdThis.wdGetAPI().getComponent().getTextAccessor().getText("BizcardBOFAField4");

String BizcardBOFAField5 = wdThis.wdGetAPI().getComponent().getTextAccessor().getText("BizcardBOFAField5");

String BizcardBOFAField6 = wdThis.wdGetAPI().getComponent().getTextAccessor().getText("BizcardBOFAField6");

String BizcardBOFAField7 = wdThis.wdGetAPI().getComponent().getTextAccessor().getText("BizcardBOFAField7");

String BizcardBOFAField8 = wdThis.wdGetAPI().getComponent().getTextAccessor().getText("BizcardBOFAField8");

String BizcardBOFAField9 = wdThis.wdGetAPI().getComponent().getTextAccessor().getText("BizcardBOFAField9");

fieldInfo = new BizcardFieldInfo[] { new BizcardFieldInfo(bizcardField1, "Stras"),

new BizcardFieldInfo(bizcardField2, "Ort01"),

new BizcardFieldInfo(bizcardField3, "Telnr")

};

fieldInfo1 = new BizcardFieldInfo[] {

//

new BizcardFieldInfo(BizcardBOFAField4, "Ort01"),

new BizcardFieldInfo(BizcardBOFAField5, "State"),

new BizcardFieldInfo(BizcardBOFAField6, "Pstlz"),

new BizcardFieldInfo(BizcardBOFAField7, "Land1"),

new BizcardFieldInfo(BizcardBOFAField8, "Telnr"),

new BizcardFieldInfo(BizcardBOFAField9, "Zzstext"),

Description

};

AddressOverviewHelper.CreateOverview(wdThis.wdGetContext().nodeInfotypeList(),

wdThis.wdGetContext().nodeSubtypes(),

view,

fieldInfo,

fieldInfo1,

defaultBegda,

"Anssa");

// wdThis.wdGetFcPersInfoInterface().CreateOverview(

// wdThis.wdGetContext().nodeInfotypeList(),

// view,

// fieldInfo,

// "Anssa");

//@@end

}

Edited by: sha pally on Dec 4, 2008 9:53 PM

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi,

Please check the line number of the code on which you are getting

this exception. on that line number check if you are trying to access

the data which is greater then the size of the variable on which you

are iterating. Also try putting a null check or a size greater the 0 check before the iteration.

Former Member
0 Kudos

how can i find the line number, there plenty of them in the exception which I get.

Answers (7)

Answers (7)

Former Member
0 Kudos

Hi,

try the "Specify Use Case and Active Subtypes" configuration.

You can see this throuth the V_T7XSSPERSUBTY view.

You should check the "Validity period for data can be set" checkbox.

Regards,

Lukasz

lokesh_kamana
Active Contributor
0 Kudos

Hi,

This problem arises when you populate data into an array and the size of the array is dynamic based on the data.

Try in this way.

where you get data like this .

Run the loop as suggested here

for (int i = fieldInfo.lengthsize()- 1; i >= 0; --i).

Thanks & Regards,

Lokesh

Former Member
0 Kudos

Hi,

as I can see in the code added by you that you have taken an array fieldInfo of type BizcardFieldInfo, assigning some value to it and then iterating on to it. Before the following line of code


for (int k = 0; k < fieldInfo.length; k++) {

put a null check as in if (fieldInfo.length > 0) and then raise a message and pass fieldInfo.length as message string.

I suppose the above line of code could be the problem area.

Also for


BizcardFieldInfo[] fieldInfo;

you have not assigned any value to it like "fieldInfo = new BizcardFieldInfo[] "

Former Member
0 Kudos

hi,

Please put portion of code in the thread where you have made changes and getting this exception.

Former Member
0 Kudos

Hello Aishwarya,

I have copied overviewhelper.java from com.sapessper to a helpers folder in us~addr DC.

and I renamed it as AddressOverviewHelper.

and i have added the following code.

===============================================================

} catch (RuntimeException ex) {

// TODO Auto-generated catch block

ex.printStackTrace();

}

bizcard.setHeader(header);

//changes

BizcardFieldInfo[] fieldInfo;

String strSubtype = recordElement.getAttributeValue("Anssa").toString();

if (strSubtype.equals("10"))

fieldInfo = fieldInfo2;

else

fieldInfo = fieldInfo1;

for (int k = 0; k < fieldInfo.length; k++) {

IWDLabel labelView =

(IWDLabel) view.createElement(

IWDLabel.class,

"labelView" + i + k);

labelView.setText(fieldInfo[k].label);

IWDTextView textView =

(IWDTextView) view.createElement(

IWDTextView.class,

"textView" + i + k);

===============================================================

and modified the wdmodiyview of VcAddressOverview view and all the four business cards are displayed fine.

permanent residence, primary office , emergency address, 2nd emergency address.

but when i click edit button for permanent residence and emergency address . I see the exception.

But for the edit button for other two it works fine.

=================================WDmodifyview=====================

public static void wdDoModifyView(IPrivateBizCardsView wdThis, IPrivateBizCardsView.IContextNode wdContext, com.sap.tc.webdynpro.progmodel.api.IWDView view, boolean firstTime)

{

//@@begin wdDoModifyView

BizcardFieldInfo[] fieldInfo;

BizcardFieldInfo[] fieldInfo1;

Date defaultBegda = wdContext.currentContextElement().getDefault_Begda();

String bizcardField1 = wdThis.wdGetAPI().getComponent().getTextAccessor().getText("BizcardField1");

String bizcardField2 = wdThis.wdGetAPI().getComponent().getTextAccessor().getText("BizcardField2");

String bizcardField3 = wdThis.wdGetAPI().getComponent().getTextAccessor().getText("BizcardField3");

String BizcardBOFAField4 = wdThis.wdGetAPI().getComponent().getTextAccessor().getText("BizcardBOFAField4");

String BizcardBOFAField5 = wdThis.wdGetAPI().getComponent().getTextAccessor().getText("BizcardBOFAField5");

String BizcardBOFAField6 = wdThis.wdGetAPI().getComponent().getTextAccessor().getText("BizcardBOFAField6");

String BizcardBOFAField7 = wdThis.wdGetAPI().getComponent().getTextAccessor().getText("BizcardBOFAField7");

String BizcardBOFAField8 = wdThis.wdGetAPI().getComponent().getTextAccessor().getText("BizcardBOFAField8");

String BizcardBOFAField9 = wdThis.wdGetAPI().getComponent().getTextAccessor().getText("BizcardBOFAField9");

fieldInfo = new BizcardFieldInfo[] { new BizcardFieldInfo(bizcardField1, "Stras"),

new BizcardFieldInfo(bizcardField2, "Ort01"),

new BizcardFieldInfo(bizcardField3, "Telnr")

};

fieldInfo1 = new BizcardFieldInfo[] {

//

new BizcardFieldInfo(BizcardBOFAField4, "Ort01"),

new BizcardFieldInfo(BizcardBOFAField5, "State"),

new BizcardFieldInfo(BizcardBOFAField6, "Pstlz"),

new BizcardFieldInfo(BizcardBOFAField7, "Land1"),

new BizcardFieldInfo(BizcardBOFAField8, "Telnr"),

new BizcardFieldInfo(BizcardBOFAField9, "Zzstext"),

Description

};

AddressOverviewHelper.CreateOverview(wdThis.wdGetContext().nodeInfotypeList(),

wdThis.wdGetContext().nodeSubtypes(),

view,

fieldInfo,

fieldInfo1,

defaultBegda,

"Anssa");

// wdThis.wdGetFcPersInfoInterface().CreateOverview(

// wdThis.wdGetContext().nodeInfotypeList(),

// view,

// fieldInfo,

// "Anssa");

//@@end

}

Former Member
0 Kudos

hi,

when the exception is generated java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 it will show you the line number of the code where it is generated which in you case is 539. Now open the java file press ctrl + L and type in the line number, click ok it will show you to the code statement corresponding to the line

former_member192434
Active Contributor
0 Kudos

Hi

User Ctrl+L

or go to windowpreferencejavaeditorcheck the check box show the line numbers

Most probably the exception is heare at this line of code, while creating Bizcards records

check the records size.

//Create Bizcards

for (int i = 0; i < records.size(); i++) {

thanks

Former Member
0 Kudos

Anup-

There are 4 bizcard on view. They display fine, but when i try to edit the permanent residence and first emergency contact i get this exception.

Thanks,

sha

former_member192434
Active Contributor
0 Kudos

Hi

why don't you debugg your application, you will get to know where extactly the excepiton coming.

Thanks

Former Member
0 Kudos

Hi,

Probably check your ArrayList implementation, i cannot see where you have implemented ArrayList or check code at getElement where you may be accessing the element at out of bonds.

Regards

Raghu

Former Member
0 Kudos

Hello Raghu,

This edit button is on a bizcard. Bizacard fields are are implements as a array list. Other than that I have not declared any arraylist.

Thanks,

Sha