on 12-04-2008 8:42 PM
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
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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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[] "
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
hi,
Please put portion of code in the thread where you have made changes and getting this exception.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
}
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
101 | |
13 | |
13 | |
11 | |
11 | |
7 | |
6 | |
5 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.