on 03-14-2008 11:05 AM
Hi there,
I tried to get the GUID from a selected line of the table.
I did this by the following code:
public void onActionLeadSelected(com.sap.tc.webdynpro.progmodel.api.IWDCustomEvent wdEvent )
{
//@@begin onActionLeadSelected(ServerEvent)
int leadselection = this.wdThis.wdGetContext().nodeAccountResults().getLeadSelection();
String SelectedBupaNr = this.wdThis.wdGetContext().nodeAccountResults().getElementAt(leadselection).getAttributeAsText("Bp_Number");
String SelectedBupaGuid = this.wdThis.wdGetContext().nodeAccountResults().getElementAt(leadselection).getAttributeAsText("Bp_Guid");
wdComponentAPI.getMessageManager().reportSuccess("Selected partner: " + SelectedBupaNr);
wdComponentAPI.getMessageManager().reportSuccess("Selected partner guid: " + SelectedBupaGuid);
this.wdThis.wdGetCuCoMainController().triggerBuPaDetails(SelectedBupaNr);
this.wdThis.wdFirePlugOpAccDetails();
//this.wdThis.wdFirePlugToDetails3(SelectedBupaNr);
//@@end
}
The weird thing is that for SelectedBupaNr everything works perfectly; but when I do the same for SelectedBupaGuid, the following error comes up. What could be the reason?
Thanks & kind regards
Error message:
java.lang.IllegalArgumentException
at com.sap.dictionary.runtime.DdTypeBinary.format(DdTypeBinary.java:60)
at com.sap.tc.webdynpro.progmodel.context.NodeElement.getAttributeAsText(NodeElement.java:905)
at com.bdx.sap.bb.comp.bupa.AccResults.onActionLeadSelected(AccResults.java:165)
at com.bdx.sap.bb.comp.bupa.wdp.InternalAccResults.wdInvokeEventHandler(InternalAccResults.java:175)
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:313)
at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessingStandalone(ClientSession.java:759)
at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessing(ClientSession.java:712)
at com.sap.tc.webdynpro.clientserver.session.ClientSession.doProcessing(ClientSession.java:261)
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:387)
at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:365)
at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:944)
at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:266)
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:100)
at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)
Edited by: Allan Duinslaeger on Mar 14, 2008 12:06 PM
Hi,
Give a try with the following code
Object obj = wdContext.nodeOrders().getElementAt(1).getAttributeValue("Bp_Guid");
obj.toString();
Class class = obj.getClass();
Check the class and type cast to it.
Regards
Ayyapparaj
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Ayyapparaj,
Thanks very much;
I did it by the following code:
Object obj = wdContext.nodeAccountResults().getElementAt(leadselection).getAttributeValue("Bp_Guid");
obj.toString();
wdComponentAPI.getMessageManager().reportSuccess("Selected partner guid: " + obj);
Class clss = obj.getClass();
wdComponentAPI.getMessageManager().reportSuccess("Selected partner guid: " + clss);
But the result is:
"Selected partner guid: [B@64c5fe9b"
instead of guid: 44B73D19962D3BBFE10000000A800466
And for the class: class [B
Any idea as to why?
Thanks
Edited by: Allan Duinslaeger on Mar 14, 2008 12:34 PM
Hi,
As I mentioned above that you need to cast to the correct type to get the actual value,
What you see right now is the hash of the object
Selected partner guid: [B@64c5fe9b"
instead of guid: 44B73D19962D3BBFE10000000A800466
getClass().getName() + '@' + Integer.toHexString(hashCode())
now you can type cast this to guid.
I havent tried this, you can give a try
Object obj = wdContext.nodeAccountResults().getElementAt(leadselection).getAttributeValue("Bp_Guid");
Class cls = obj.getClass();
wdComponentAPI.getMessageManager().reportSuccess(cls.getName());
if(obj instanceof guid) // Not sure abt the actual datatype above line will give you some hints
{
guid g = (guid)obj;
wdComponentAPI.getMessageManager().reportSuccess("Selected partner guid: " + g);
}
Regards
Ayyapparaj
Hi Ayyapparaj;
I've done this in the way you suggested, but first I wanted to see what the classnames would be. For that I implemented the following code:
Object obj = wdContext.nodeAccountResults().getElementAt(leadselection).getAttributeValue("Bp_Guid");
Class cls = obj.getClass();
wdComponentAPI.getMessageManager().reportSuccess(cls.getName());
Object obj2 = wdContext.nodeAccountResults().getElementAt(leadselection).getAttributeValue("Bp_Number");
wdComponentAPI.getMessageManager().reportSuccess(obj2.toString());
Class cls2 = obj.getClass();
wdComponentAPI.getMessageManager().reportSuccess(cls2.getName());
The results:
Class of guid: [B
BP number: 16960
Class of BP nr: [B
Maybe it's important to tell that I've mapped the context in the layout to a table I defined in the layout of the view via table template?
Thanks again
Allan
Hi Ayyapparaj,
Of course, I forgot... (I'm sick right now...)
I made a BAPI with an exporting table (based on table type).
In that exporting table there are these fields:
BP_GUID
BP_NUMBER
BP_TYPE
NAME1
NAME2
NAME3
NAME4
FIRSTNAME
LASTNAME
CITY
I then imported this BAPI as adaptive RFC, and did a model binding in the custom controller.
Then I created the view and did a context mapping to the view (all fields); but for the table in the layout I only chose NAME1, NAME2, NAME3, NAME4 and CITY.
Then I made sure that when you select a line, the BP_NUMBER will be known (necessary to call another BAPI which will give details).
Unfortunately, when you call the second BAPI, there is an exception: "Mandatory parameter BP_GUID of method Z_CRM_BB_BUPA_DETAILS missing". After that, I set the GUID-importing parameter to optional. This didn't help, so I presumed that I also had to pass the value of the guid.. That's why I'm searching for a way to find the (real) value.
FYI, import parameters of second BAPI:
BP_GUID
BP_NUMBER
BP_TYPE
Thanks & regards
Allan
Hi there,
I've found this method in the class based on that table type:
public byte[] getBp_Guid() {
return (byte[])super.getAttributeValue("Bp_Guid");
}
But how can I apply this in my scenario? I have to get a particular element of a selected line..
I'm inside of a view and will then trigger a CuCo method afterwards with the values of bp nr and guid.
By the way, I've tried the following:
Object obj = wdContext.nodeAccountResults().getElementAt(leadselection).getAttributeValue("Bp_Guid");
Class cls = obj.getClass();
wdComponentAPI.getMessageManager().reportSuccess(cls.getName());
if(obj instanceof byte[])
{
byte[] guid = (byte[])obj;
guid.toString();
wdComponentAPI.getMessageManager().reportSuccess("Selected partner guid: " + guid);
}
But the result still is hashed...?
Thanks for helping me out so much, I'm still learning java..
Edited by: Allan Duinslaeger on Mar 14, 2008 2:27 PM
Hi,
Yes, the BAPI has been executed. In CRM; the guid has the right value.
I did not bind the guid to an UI-element as it has to be hidden from the user (the user doesn't need to know this value).
My context structure in the Custom Controller:
Model node: InputSearch
Bp_Type
Fuzzy
Search_Mode
Model node: OutputSearch
Search result
Bp_Guid
Bp_Number
Bp_Type
City
Firstname
Lastname
Name1
Name2
Name3
Name4
Context in the view
Model node: AccountResults
Bp_Guid
Bp_Number
Bp_Type
City
Firstname
Lastname
Name1
Name2
Name3
Name4
View Layout (table template)
Name1 Name2 Name3 Name4 City
By the way, I just tried to see what it would look like when you bind the guid to a ui-element (just by applying a form and choosing the guid element) and this error comes up:
java.lang.IllegalArgumentException
at com.sap.dictionary.runtime.DdTypeBinary.format(DdTypeBinary.java:60)
at com.sap.tc.webdynpro.clientserver.data.DataContainer.doFormat(DataContainer.java:1405)
at com.sap.tc.webdynpro.clientserver.data.DataContainer.getAndFormat(DataContainer.java:1098)
at com.sap.tc.webdynpro.clientserver.data.DataContainer.getAndFormat(DataContainer.java:1070)
at com.sap.tc.webdynpro.clientserver.uielib.standard.impl.AbstractInputField.getValue(AbstractInputField.java:1270)
at com.sap.tc.webdynpro.clientserver.uielib.standard.uradapter.InputFieldAdapter.getValue(InputFieldAdapter.java:582)
at com.sap.tc.ur.renderer.ie6.InputFieldRenderer.render(InputFieldRenderer.java:58)
at com.sap.tc.webdynpro.clientimpl.html.renderer.uielements.base.RenderManager.render(RenderManager.java:434)
at com.sap.tc.webdynpro.clientimpl.html.renderer.uielements.base.RenderManager.render(RenderManager.java:133)
at com.sap.tc.ur.renderer.ie6.MatrixLayoutRenderer.renderMatrixLayoutCellFragment(MatrixLayoutRenderer.java:790)
at com.sap.tc.ur.renderer.ie6.MatrixLayoutRenderer.renderMatrixLayoutRowFragment(MatrixLayoutRenderer.java:376)
at com.sap.tc.ur.renderer.ie6.MatrixLayoutRenderer.renderMatrixLayoutFragment(MatrixLayoutRenderer.java:326)
at com.sap.tc.ur.renderer.ie6.MatrixLayoutRenderer.render(MatrixLayoutRenderer.java:79)
at com.sap.tc.webdynpro.clientimpl.html.renderer.uielements.base.RenderManager.render(RenderManager.java:434)
at com.sap.tc.webdynpro.clientimpl.html.renderer.uielements.base.RenderManager.render(RenderManager.java:133)
at com.sap.tc.ur.renderer.ie6.ScrollContainerRenderer.renderScrollContainerFragment(ScrollContainerRenderer.java:619)
at com.sap.tc.ur.renderer.ie6.ScrollContainerRenderer.render(ScrollContainerRenderer.java:74)
at com.sap.tc.webdynpro.clientimpl.html.renderer.uielements.base.RenderManager.render(RenderManager.java:434)
at com.sap.tc.webdynpro.clientimpl.html.renderer.uielements.base.RenderManager.render(RenderManager.java:133)
at com.sap.tc.ur.renderer.ie6.ViewContainerRenderer.renderViewContainerFragment(ViewContainerRenderer.java:134)
at com.sap.tc.ur.renderer.ie6.ViewContainerRenderer.render(ViewContainerRenderer.java:49)
at com.sap.tc.webdynpro.clientimpl.html.renderer.uielements.base.RenderManager.render(RenderManager.java:434)
at com.sap.tc.webdynpro.clientimpl.html.renderer.uielements.base.RenderManager.render(RenderManager.java:133)
at com.sap.tc.ur.renderer.ie6.FlowLayoutRenderer.renderFlowLayoutItemFragment(FlowLayoutRenderer.java:288)
at com.sap.tc.ur.renderer.ie6.FlowLayoutRenderer.renderFlowLayoutFragment(FlowLayoutRenderer.java:244)
at com.sap.tc.ur.renderer.ie6.FlowLayoutRenderer.render(FlowLayoutRenderer.java:49)
at com.sap.tc.webdynpro.clientimpl.html.renderer.uielements.base.RenderManager.render(RenderManager.java:434)
at com.sap.tc.webdynpro.clientimpl.html.renderer.uielements.base.RenderManager.render(RenderManager.java:133)
at com.sap.tc.ur.renderer.ie6.ScrollContainerRenderer.renderScrollContainerFragment(ScrollContainerRenderer.java:619)
at com.sap.tc.ur.renderer.ie6.ScrollContainerRenderer.render(ScrollContainerRenderer.java:74)
at com.sap.tc.webdynpro.clientimpl.html.renderer.uielements.base.RenderManager.render(RenderManager.java:434)
at com.sap.tc.webdynpro.clientimpl.html.renderer.uielements.base.RenderManager.render(RenderManager.java:133)
at com.sap.tc.ur.renderer.ie6.ViewContainerRenderer.renderViewContainerFragment(ViewContainerRenderer.java:134)
at com.sap.tc.ur.renderer.ie6.ViewContainerRenderer.render(ViewContainerRenderer.java:49)
at com.sap.tc.webdynpro.clientimpl.html.renderer.uielements.base.RenderManager.render(RenderManager.java:434)
at com.sap.tc.webdynpro.clientimpl.html.renderer.uielements.base.RenderManager.render(RenderManager.java:133)
at com.sap.tc.ur.renderer.ie6.ViewContainerRenderer.renderViewContainerFragment(ViewContainerRenderer.java:134)
at com.sap.tc.ur.renderer.ie6.ViewContainerRenderer.render(ViewContainerRenderer.java:49)
at com.sap.tc.webdynpro.clientimpl.html.renderer.uielements.base.RenderManager.render(RenderManager.java:434)
at com.sap.tc.webdynpro.clientimpl.html.renderer.uielements.base.RenderManager.render(RenderManager.java:133)
at com.sap.tc.ur.renderer.ie6.FlowLayoutRenderer.renderFlowLayoutItemFragment(FlowLayoutRenderer.java:288)
at com.sap.tc.ur.renderer.ie6.FlowLayoutRenderer.renderFlowLayoutFragment(FlowLayoutRenderer.java:244)
at com.sap.tc.ur.renderer.ie6.FlowLayoutRenderer.render(FlowLayoutRenderer.java:49)
at com.sap.tc.webdynpro.clientimpl.html.renderer.uielements.base.RenderManager.render(RenderManager.java:434)
at com.sap.tc.webdynpro.clientimpl.html.renderer.uielements.base.RenderManager.render(RenderManager.java:133)
at com.sap.tc.ur.renderer.ie6.ScrollContainerRenderer.renderScrollContainerFragment(ScrollContainerRenderer.java:619)
at com.sap.tc.ur.renderer.ie6.ScrollContainerRenderer.render(ScrollContainerRenderer.java:74)
at com.sap.tc.webdynpro.clientimpl.html.renderer.uielements.base.RenderManager.render(RenderManager.java:434)
at com.sap.tc.webdynpro.clientimpl.html.renderer.uielements.base.RenderManager.render(RenderManager.java:133)
at com.sap.tc.webdynpro.clientimpl.html.renderer.uielements.base.UiWindowRenderer.render(UiWindowRenderer.java:52)
at com.sap.tc.webdynpro.clientimpl.html.renderer.uielements.base.RenderManager.render(RenderManager.java:434)
at com.sap.tc.webdynpro.clientimpl.html.renderer.uielements.base.RenderManager.render(RenderManager.java:133)
at com.sap.tc.webdynpro.clientimpl.html.client.HtmlClient.sendHtml(HtmlClient.java:1055)
at com.sap.tc.webdynpro.clientimpl.html.client.HtmlClient.fillDynamicTemplateContext(HtmlClient.java:455)
at com.sap.tc.webdynpro.clientimpl.html.client.HtmlClient.sendResponse(HtmlClient.java:1239)
at com.sap.tc.webdynpro.clientimpl.html.client.HtmlClient.retrieveData(HtmlClient.java:252)
at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.doRetrieveData(WindowPhaseModel.java:595)
at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.processRequest(WindowPhaseModel.java:156)
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:313)
at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessingStandalone(ClientSession.java:759)
at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessing(ClientSession.java:712)
at com.sap.tc.webdynpro.clientserver.session.ClientSession.doProcessing(ClientSession.java:261)
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:387)
at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:365)
at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:944)
at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:266)
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:100)
at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)
User | Count |
---|---|
89 | |
10 | |
10 | |
10 | |
7 | |
6 | |
6 | |
5 | |
4 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.