Adding new view to viewset (BP_DATA to ICCMP_BP_DETAIL)
Hello Experts !
We are on CRM 7.0. I want to add the window IDNumber of component BP_DATA in the component ICCMP_BP_DETAIL.
What are the steps to follow?
I created an "usage" of the component BP_DATA in the component ICCMP_BP_DETAIL. I added the interface view BP_DATA/IdNumberWindow to the usage.
I also created a new view area ('ZIdNumberData') in the viewset ICCMP_BP_DETAIL/BuPaCreateVS. Then, I assign the view of my usage BP_DATA to this new view area.
I enhance the BuPaCreateVS.htm by adding a new line to the code like this:
<thtmlb:gridCell columnIndex = "1"
rowIndex = "3" >
<bsp:call comp_id = "<%= controller->GET_VIEWAREA_CONTENT_ID( 'ZIdNumberData' ) %>"
url = "<%= controller->GET_VIEWAREA_CONTENT_URL( 'ZIdNumberData' ) %>" />
</thtmlb:gridCell>
But when I enter the webui it's giving me a DUMP in the view BP_DATA/AccountIDNumberList, the method DO_PREPARE_OUTPUT, because the following reference is initial:
ME->VIEW_GROUP_CONTEXT
The reference ME has the following value:
Does anybody has any suggestions ?
Thank you in advance
M.
Hi,
Some components are meant to be used with a main component. The view group context is inherited hierarchically from parent components. Coming to your problem, assuming that the BP_DATA/AccountIDNumberList view is already enhanced, redefine the method set_view_group_context method im the IMPL class.
Put in code, something like this..
method SET_VIEW_GROUP_CONTEXT.
IF iv_parent_context IS BOUND.
CALL METHOD super->set_view_group_context
EXPORTING
iv_parent_context = iv_parent_context
iv_first_time = iv_first_time.
ELSE.
CREATE OBJECT me->view_group_context
TYPE cl_bsp_wd_view_group_context.
ENDIF.
endmethod.
This will clear up the immediate issue, but you will likely face more.
Regards,
Arun Prakash
Similar Messages
-
Adding New View Objects/Link on "Preview and Print" - Order Acknowledgement
Hi,
Can we add New View Objects/View Links for the existing "Preview and Print" Order Acknowledgement.
I want to add for the 2 new functionalities i.e., for Charges (from OE_PRICE_ADJUSTMENTS_V ) and the Line Level Notes, which is currently not supported by Oracle.
Can anyone help me on acheving this functionality?
Looking forward for your response.
Thanks in advance,
Regards,
MuruYou can do that. You should first create the new business objects(AM, VO, VL) in jdeveloper, create your new regions in jdeveloper, associate the AM to the top level region(stackLayout) you create. Use personalization and add a stack layout in the Preview and Print page, set the extends property to point to the new region which you had created. Donot forget to deploy all the files in middle tier before doing the personalization.
The AM which you had added to the stackLayout will automatically be nested with the root AM of the page during runtime. -
Getting exception after adding new View attribute in OCO
Hi,
I have added a new field in Oracle Customers Online -> Customers -> Accounts Summary page. I had changed the query in the VO and added the view attribute through JDeveloper and created the corresponding VORowImpl java class. I have referred the same View attribute in the page bean also. When i am doing the testing i am getting the exception. Any idea to resolve this issue. I have given the customization details below.
Page bean: IMCAccountsSummaryEditPG.xml
Newly added line..
<oa:messageStyledText id="CreditHold" dataType="VARCHAR2" prompt="CreditHold" text="CreditHold" viewName="IMCCustAcoountsVO1" viewAttr="CreditHold" maximumLength="30" sortState="yes" shortDesc="Credit Hold"/>
VO: IMCCustAcoountsVO.xml
Refer credit_hold in the query and CreditHold in the view attribute for the newly added column.
<?xml version="1.0" encoding='windows-1252'?>
<!DOCTYPE ViewObject SYSTEM "jbo_03_01.dtd">
<!-- $Header: IMCCustAcoountsVO.xml 115.6 2005/01/20 23:11:08 kttang noship $ -->
<ViewObject
Name="IMCCustAcoountsVO"
BindingStyle="Oracle"
CustomQuery="true"
RowClass="oracle.apps.imc.customer.account.server.IMCCustAcoountsVORowImpl"
ComponentClass="oracle.apps.imc.customer.account.server.IMCCustAcoountsVOImpl"
MsgBundleClass="oracle.jbo.common.JboResourceBundle"
FetchMode="FETCH_AS_NEEDED"
UseGlueCode="false" >
<SQLQuery><![CDATA[
SELECT account_number, account_name , pc.name AS profile_class ,
rat.name AS payment_terms, TO_CHAR(TRUNC(act.creation_date)) creation_date , lu.meaning AS status, act.status AS theStatus,
DECODE(1,1,'viewDisabled', 'viewEnabled') credit_summary, act.party_id AS party_id, act.cust_account_id, pt.party_name, 'updateEnabled' update_account
, lu1.meaning AS credit_hold
FROM HZ_CUST_ACCOUNTS act, HZ_CUSTOMER_PROFILES cp, HZ_CUST_PROFILE_CLASSES pc,
ar_lookups lu,
ar_lookups lu1,
ra_terms rat, hz_parties pt
WHERE act.PARTY_ID = :0
AND act.cust_account_id = cp.cust_account_id
AND cp.profile_class_id = pc.profile_class_id
AND cp.SITE_USE_ID IS NULL
AND cp.standard_terms = rat.term_id (+)
AND lu.lookup_type= 'CODE_STATUS'
AND lu.lookup_code = act.status
AND lu1.lookup_type(+) = 'FOB'
AND lu1.lookup_code(+) = act.fob_point
AND act.party_id = pt.party_id
]]></SQLQuery>
<DesignTime>
<Attr Name="_isCodegen" Value="true" />
<Attr Name="_version" Value="9.0.3.13.75" />
<Attr Name="_CodeGenFlagNew" Value="36" />
</DesignTime>
<ViewAttribute
Name="AccountNumber"
IsQueriable="false"
IsPersistent="false"
IsNotNull="true"
Precision="30"
Type="java.lang.String"
AliasName="ACCOUNT_NUMBER"
ColumnType="VARCHAR2"
Expression="ACCOUNT_NUMBER"
SQLType="VARCHAR" >
<DesignTime>
<Attr Name="_DisplaySize" Value="30" />
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="AccountName"
IsQueriable="false"
IsPersistent="false"
Precision="240"
Type="java.lang.String"
AliasName="ACCOUNT_NAME"
ColumnType="VARCHAR2"
Expression="ACCOUNT_NAME"
SQLType="VARCHAR" >
<DesignTime>
<Attr Name="_DisplaySize" Value="240" />
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="ProfileClass"
IsQueriable="false"
IsPersistent="false"
IsNotNull="true"
Precision="30"
Type="java.lang.String"
AliasName="PROFILE_CLASS"
ColumnType="VARCHAR2"
Expression="PROFILE_CLASS"
SQLType="VARCHAR" >
<DesignTime>
<Attr Name="_DisplaySize" Value="30" />
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="PaymentTerms"
IsQueriable="false"
IsPersistent="false"
IsNotNull="true"
Precision="15"
Type="java.lang.String"
AliasName="PAYMENT_TERMS"
ColumnType="VARCHAR2"
Expression="PAYMENT_TERMS"
SQLType="VARCHAR" >
<DesignTime>
<Attr Name="_DisplaySize" Value="15" />
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="CreationDate"
IsQueriable="false"
IsPersistent="false"
Precision="15"
Type="java.lang.String"
AliasName="CREATION_DATE"
ColumnType="VARCHAR2"
Expression="CREATION_DATE"
SQLType="VARCHAR" >
<DesignTime>
<Attr Name="_DisplaySize" Value="7" />
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="Status"
IsQueriable="false"
IsPersistent="false"
IsNotNull="true"
Precision="80"
Type="java.lang.String"
AliasName="STATUS"
ColumnType="VARCHAR2"
Expression="STATUS"
SQLType="VARCHAR" >
<DesignTime>
<Attr Name="_DisplaySize" Value="80" />
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="Thestatus"
IsQueriable="false"
IsPersistent="false"
IsNotNull="true"
Precision="1"
Type="java.lang.String"
AliasName="THESTATUS"
ColumnType="VARCHAR2"
Expression="THESTATUS"
SQLType="VARCHAR" >
<DesignTime>
<Attr Name="_DisplaySize" Value="1" />
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="CreditSummary"
IsQueriable="false"
IsPersistent="false"
Precision="22"
Type="java.lang.String"
AliasName="CREDIT_SUMMARY"
ColumnType="VARCHAR2"
Expression="CREDIT_SUMMARY"
SQLType="VARCHAR" >
<DesignTime>
<Attr Name="_DisplaySize" Value="22" />
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="PartyId"
IsQueriable="false"
IsPersistent="false"
IsNotNull="true"
Precision="15"
Scale="0"
Type="oracle.jbo.domain.Number"
AliasName="PARTY_ID"
ColumnType="VARCHAR2"
Expression="PARTY_ID"
SQLType="NUMERIC" >
<DesignTime>
<Attr Name="_DisplaySize" Value="22" />
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="CustAccountId"
IsQueriable="false"
IsPersistent="false"
IsNotNull="true"
Precision="15"
Scale="0"
Type="oracle.jbo.domain.Number"
AliasName="CUST_ACCOUNT_ID"
ColumnType="VARCHAR2"
Expression="CUST_ACCOUNT_ID"
SQLType="NUMERIC" >
<DesignTime>
<Attr Name="_DisplaySize" Value="22" />
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="PartyName"
IsQueriable="false"
IsPersistent="false"
IsNotNull="true"
Precision="360"
Type="java.lang.String"
AliasName="PARTY_NAME"
ColumnType="VARCHAR2"
Expression="PARTY_NAME"
SQLType="VARCHAR" >
<DesignTime>
<Attr Name="_DisplaySize" Value="360" />
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="UpdateAccount"
IsPersistent="false"
Precision="13"
Type="java.lang.String"
AliasName="UPDATE_ACCOUNT"
ColumnType="VARCHAR2"
Expression="UPDATE_ACCOUNT"
SQLType="VARCHAR" >
<DesignTime>
<Attr Name="_DisplaySize" Value="13" />
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="CreditHold"
IsPersistent="false"
Precision="255"
Type="java.lang.String"
AliasName="CREDIT_HOLD"
ColumnType="VARCHAR2"
Expression="CREDIT_HOLD"
SQLType="VARCHAR" >
</ViewAttribute>
</ViewObject>
Exception:
oracle.apps.fnd.framework.OAException: Programming error. Row ([email protected]3) must be of type oracle.apps.fnd.framework.OARow.
at oracle.apps.fnd.framework.webui.OAPageErrorHandler.prepareException(OAPageErrorHandler.java:1223)
at oracle.apps.fnd.framework.webui.OAPageBean.renderDocument(OAPageBean.java:2898)
at oracle.apps.fnd.framework.webui.OAPageBean.renderDocument(OAPageBean.java:2700)
at oa_html._OA._jspService(_OA.java:105)
at oracle.jsp.runtime.HttpJsp.service(HttpJsp.java:119)
at oracle.jsp.app.JspApplication.dispatchRequest(JspApplication.java:417)
at oracle.jsp.JspServlet.doDispatch(JspServlet.java:267)
at oracle.jsp.JspServlet.internalService(JspServlet.java:186)
at oracle.jsp.JspServlet.service(JspServlet.java:156)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:588)
at org.apache.jserv.JServConnection.processRequest(JServConnection.java:456)
at org.apache.jserv.JServConnection.run(JServConnection.java:294)
at java.lang.Thread.run(Thread.java:534)
## Detail 0 ##
oracle.apps.fnd.framework.OAException: Programming error. Row ([email protected]3) must be of type oracle.apps.fnd.framework.OARow.
at oracle.apps.fnd.framework.webui.OADictionaryDataViewObject.getItem(OADictionaryDataViewObject.java:97)
at oracle.cabo.ui.laf.base.desktop.TableRenderer._renderTableRows(Unknown Source)
at oracle.cabo.ui.laf.base.desktop.TableRenderer.renderTableRows(Unknown Source)
at oracle.cabo.ui.laf.base.desktop.TableRenderer.renderTableContent(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.TableRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.laf.base.desktop.TableRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.BaseRenderer.render(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.XhtmlLafRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.apps.fnd.framework.webui.beans.table.OATableBean.render(OATableBean.java:635)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.BaseRenderer.render(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.XhtmlLafRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.BaseRenderer.render(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.XhtmlLafRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderChild(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.RowLayoutRenderer.renderChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.BaseRenderer.render(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.XhtmlLafRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.BaseRenderer.render(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.XhtmlLafRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.BaseRenderer.render(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.XhtmlLafRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.BaseRenderer.render(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.XhtmlLafRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.composite.ContextPoppingUINode$ContextPoppingRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.BaseRenderer.render(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.XhtmlLafRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.laf.oracle.desktop.HeaderRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.BaseRenderer.render(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.XhtmlLafRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.BorderLayoutRenderer._renderTableContent(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.BorderLayoutRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.BaseRenderer.render(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.XhtmlLafRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.BaseRenderer.render(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.XhtmlLafRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.composite.UINodeRenderer.renderWithNode(Unknown Source)
at oracle.cabo.ui.composite.UINodeRenderer.render(Unknown Source)
at oracle.cabo.ui.laf.oracle.desktop.PageLayoutRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.BaseRenderer.render(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.XhtmlLafRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.BodyRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.BaseRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.apps.fnd.framework.webui.beans.OABodyBean.render(OABodyBean.java:398)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.DocumentRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.BaseRenderer.render(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.DocumentRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.partial.PartialPageUtils.renderPartialPage(Unknown Source)
at oracle.apps.fnd.framework.webui.OAPageBean.render(OAPageBean.java:3209)
at oracle.apps.fnd.framework.webui.OAPageBean.renderDocument(OAPageBean.java:2888)
at oracle.apps.fnd.framework.webui.OAPageBean.renderDocument(OAPageBean.java:2700)
at oa_html._OA._jspService(_OA.java:105)
at oracle.jsp.runtime.HttpJsp.service(HttpJsp.java:119)
at oracle.jsp.app.JspApplication.dispatchRequest(JspApplication.java:417)
at oracle.jsp.JspServlet.doDispatch(JspServlet.java:267)
at oracle.jsp.JspServlet.internalService(JspServlet.java:186)
at oracle.jsp.JspServlet.service(JspServlet.java:156)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:588)
at org.apache.jserv.JServConnection.processRequest(JServConnection.java:456)
at org.apache.jserv.JServConnection.run(JServConnection.java:294)
at java.lang.Thread.run(Thread.java:534)
oracle.apps.fnd.framework.OAException: Programming error. Row ([email protected]3) must be of type oracle.apps.fnd.framework.OARow.
at oracle.apps.fnd.framework.webui.OADictionaryDataViewObject.getItem(OADictionaryDataViewObject.java:97)
at oracle.cabo.ui.laf.base.desktop.TableRenderer._renderTableRows(Unknown Source)
at oracle.cabo.ui.laf.base.desktop.TableRenderer.renderTableRows(Unknown Source)
at oracle.cabo.ui.laf.base.desktop.TableRenderer.renderTableContent(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.TableRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.laf.base.desktop.TableRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.BaseRenderer.render(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.XhtmlLafRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.apps.fnd.framework.webui.beans.table.OATableBean.render(OATableBean.java:635)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.BaseRenderer.render(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.XhtmlLafRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.BaseRenderer.render(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.XhtmlLafRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderChild(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.RowLayoutRenderer.renderChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.BaseRenderer.render(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.XhtmlLafRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.BaseRenderer.render(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.XhtmlLafRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.BaseRenderer.render(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.XhtmlLafRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.BaseRenderer.render(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.XhtmlLafRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.composite.ContextPoppingUINode$ContextPoppingRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.BaseRenderer.render(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.XhtmlLafRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.laf.oracle.desktop.HeaderRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.BaseRenderer.render(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.XhtmlLafRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.BorderLayoutRenderer._renderTableContent(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.BorderLayoutRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.BaseRenderer.render(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.XhtmlLafRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.BaseRenderer.render(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.XhtmlLafRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.composite.UINodeRenderer.renderWithNode(Unknown Source)
at oracle.cabo.ui.composite.UINodeRenderer.render(Unknown Source)
at oracle.cabo.ui.laf.oracle.desktop.PageLayoutRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.BaseRenderer.render(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.XhtmlLafRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.BodyRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.BaseRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.apps.fnd.framework.webui.beans.OABodyBean.render(OABodyBean.java:398)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.DocumentRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.BaseRenderer.render(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.DocumentRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.partial.PartialPageUtils.renderPartialPage(Unknown Source)
at oracle.apps.fnd.framework.webui.OAPageBean.render(OAPageBean.java:3209)
at oracle.apps.fnd.framework.webui.OAPageBean.renderDocument(OAPageBean.java:2888)
at oracle.apps.fnd.framework.webui.OAPageBean.renderDocument(OAPageBean.java:2700)
at oa_html._OA._jspService(_OA.java:105)
at oracle.jsp.runtime.HttpJsp.service(HttpJsp.java:119)
at oracle.jsp.app.JspApplication.dispatchRequest(JspApplication.java:417)
at oracle.jsp.JspServlet.doDispatch(JspServlet.java:267)
at oracle.jsp.JspServlet.internalService(JspServlet.java:186)
at oracle.jsp.JspServlet.service(JspServlet.java:156)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:588)
at org.apache.jserv.JServConnection.processRequest(JServConnection.java:456)
at org.apache.jserv.JServConnection.run(JServConnection.java:294)
at java.lang.Thread.run(Thread.java:534)
Let me know if you need more details.
Thanks in Advance
Regards,
KesavanFirst this is not the right way to do it. You should extend the VO and create a new vo and add the new attribute, then use personalization to add a new item, create substitution to represent the old VO with your new VO. Did you follow these steps to do the extension ?
-
Trouble adding new view to tab bar
Hello All,
I am trying to build a first Tab Bar Application through Interface Builder. I created a stock Tab Bar application using XCode but I am having trouble replacing the views with different ones (mine).
For example, I have created a new view called PostView from XCode with just a simple label. I then went to Interface Builder, clicked on the second tab, and go to Tools->Attribute Inspector and change the NIB name from SecondView to my new PostView.
However, when I run this, it crashes when I click on the the second tab with the following error in GDB:
2008-06-30 23:22:26.623 TG2[5855:20b] * Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UIViewController loadView] loaded the "PostView" nib but no view was set.'
I can't for the life of me figure out where I should be loading or setting this view as SecondView doesn't seem to be programmatically loaded anywhere and I can't seem to find any other reference to it in IB.
I'm sure this is noob easy -- any ideas?
Many thanks in advance,
TimFirst of all, click on File's Owner in the PostView.xib window. In the inspector window (it's on the right by default--if you don't see it, press Cmd-Shift-I), click the "i" button to display the Identity pane. There should be a drop down box labeled "Class". Is the class set to your controller class? If not, adjust it so it is.
Next, click the blue circle with the white arrow. This will bring up the Connections pane. Look at the line that says "view". Is it connected to anything? (If it is, the name of the object it's connected to will appear next to it, with an "x" to undo the connection.)
If not, hold down the circle to the far right of "view", then drag to the "View" icon in the PostView.xib window. (I'm assuming you haven't renamed the view.) A box should appear around the icon if it's the right type for that outlet. Now let go, and Interface Builder will establish the connection.
Save, then go back to Xcode and build and run your project. Did that fix the problem? -
Tutorial or more detailed steps on adding new views, flipside, etc?
I have a working app and would like to add a flipside view, and maybe another view with some docs.
I know there are examples of code already containing extra views, and there is the Xcode "Utility" skeleton one could start from.
But just staring at those examples, where everything is already in place, is not really helping me understand "how do I add extra views to an already existing app?" Sometimes just looking at the entirety doesn't real fill in the blanks on how they got there...
Does anybody know of of a step-by-step tutorial or more detailed docs that specify the exact steps needed to add a view, along with the necessary control elements to switch into that view and back again?
Thanks...
dougI don't know of anything that fits what you are asking, but basically you need to insert a parent of your existing view. That parent will then be used to add the new view with the animation. So if you have a HomeViewController, you will need to insert a FlipViewController that loads and displays HomeViewController.view as a subview. Then create the new SettingsViewController and when you want to display it, remove HomeViewController.view from FlipViewController and add SettingsViewController as a subview of FlipViewController. Do that with the animation settings you see in the examples. Hope that helps.
-
Problem with creating new view and binding it wht existing ViewSet/viewArea
Hi All,
I created a new view.
Now I am trying to dynamically change the veiw in ViewArea : product of ViewSet : BupaMainViewSet .
I added my new view in the views for viewarea : "product".
Now I wanted to get this new view based on some button clicks on view BupaSearchB2B.
If search Account button is clicked my new View has to appeared. Othewise the standard view in the Product view area shud appear.
I dont know how to do.
Your response will be highly appreciated with your reward points.
kindly assist me on this.
Thanks,
SR.Hi,
You can find detailed information at the following link:
<a href="https://portal.wdf.sap.corphttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/go/km/docs/corporate_portal/ws%20service%20%26%20support/product%20support/workspace_public/product%20support%20knowledge%20base/crm/crm-ic/crm-ic/icwc_cbk_crm50_290306.pdf">https://portal.wdf.sap.corphttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/go/km/docs/corporate_portal/ws%20service%20%26%20support/product%20support/workspace_public/product%20support%20knowledge%20base/crm/crm-ic/crm-ic/icwc_cbk_crm50_290306.pdf</a>
Please reward points if helpful
Best regards
Reyes -
Adding a new view in Account Identification
We have a requirement to add a new view beside Installed Base| Object.
I maintained entries in Object Component and Ac Identification Profile.
While navigating to the new view there is an exception.
Cannot display view CRMCMP_BPIDENT/ObjectCompVs of UI Component CRMCMP_BPIDENT
An exception has occurred Exception Class CX_BSP_WD_INCORRECT_IMPLEMENT - Window 'dynObjCompMainWin' is not defined in the component 'ICCMP_BP_DETAIL'
Method: CL_BSP_WD_COMPONENT_USAGE=>GET_INTERFACE_VIEW_CONTR
Source Text Row: 28
When I investigated this further I found out that standard SAP expects the window name 'dynObjCompMainWin', however when we enhance the component and add a new window, the generated name is 'ZICCMP_BP_DETL/dynObjCompMainWin (default)' and hence it fails.
Has anyone faced this or knows a workaround?
This is a crucial requirement, your help is appreciated.Hello,
Guess you might have resolved this issue but incase you didn't go to runtime repository and click on the XML source code and then change the Window name to ' dynObjCompMainWin' it will resolve the issue.
I was facing the same issue and I changed the window name in the XML source code it worked for me.
Edited by: reddyp_p on Jan 25, 2012 4:15 PM -
Hi,
Are there ay steps to follow to add a new view
SamHi Carol,
Thanks for the solution. I want to use a standard componenent tat is available in componenet workbenh. So as you said i should start with creating a view in the componenet. So If i am creating a new zview in the componenet will it impact the componenet. Will i be getting this new view at all places where the componenet is being used?
I am actually trying to create a new view using a standard component and show iton CRM_UI_FRAME.
The actual location where I want to create the new view is
CRM_UI_FRAME/BSPWDApplication---->CRM_UI_FRAME/MainWindow-------->
CRM_UI_FRAME/WorkAreaViewSet---------->BSPWD_BASICS/WorkAreaHostViewSet-----
------> InrWindow------>ICCMP_BT_INR/InrViewSet------->ICCMP_BT_INR/InrHeaderViewSet-
-->MainWindow
Sam -
When I try to add a new view, selecting my model class, I get an error, "There was an error running the selected code generator: 'There was an error getting the type 'mycontextname.Models.mymodelname'. Try rebuilding the project.'" I rebuilt
the project and everything rebuilt successfully, but I still get the error. Any suggestions? I can manually create a view, but would like Visual Studio to do it for me :-) I am using Visual Studio 2013 and using MVC 5.Hi Angela4,
For ASP.NET questions, please post in
ASP.NET forums where you could get more help.
Thanks for your understanding.
We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
Click
HERE to participate the survey. -
Hi All,
I have created the new view in my custom CRM_IC. Can I know what is the next step to do in order for the new view to show in ICWC - what is the inbound or outbound plug all about?
Appreciate if someone can list me all the steps. ThanksObjective
Calling a custom Simple View for the follow-up activity. Whenever, we click the link of a follow-up activity from the activity clipboard, the system leads us to Simple Activity view, where we can maintain the description and the status.
Note
This is just a guideline document to work with customer specific view sets for one case. While following this procedure for other cases, we may need to do further enhancements.
A. Primary Steps
Create Custom Package Z_CONS_COOK1
Create BSP application Z_CRM_IC1 under package Z_CONS_COOK1.
B. Creating View Sets & Controllers
1. Through workbench transaction, Create New View Set: SimpleActivitySet
2. Specify view area name main.
3. All Controller & Model Classes are generated in the background.
4. Redefine method GET_STATE_DESCRIPTION of Controller Class ZL_Z_CRM_IC_SIMPLEACTIVIT_IMPL & populate with following source code:
METHOD IF_BSP_WD_HISTORY_STATE_DESCR~GET_STATE_DESCRIPTION.
*CALL METHOD SUPER->IF_BSP_WD_HISTORY_STATE_DESCR~GET_STATE_DESCRIPTION
EXPORTING
IV_CURRENT_DESCRIPTION =
RECEIVING
DESCRIPTION =
DESCRIPTION = TEXT-001. " 'Simple Activity'
ENDMETHOD.
5. Corresponding BSP Page is generated with the following code:
%@page language="abap"%
<%@ extension name="htmlb" prefix="htmlb"%>
<%@ extension name="xhtmlb" prefix="xhtmlb"%>
<%@ extension name="crm_bsp_ic" prefix="crmic"%>
<%@ extension name="bsp" prefix="bsp"%>
<crmic:gridLayout cellSpacing="1" columnSize="1" height="100%"
rowSize="1" width="100%">
<crmic:gridLayoutCell colSpan="1" columnIndex="1"
rowIndex="1" rowSpan="1">
<bsp:call comp_id="<%=controller->GET_VIEWAREA_CONTENT_ID( 'main' )%>"
url="<%=controller->GET_VIEWAREA_CONTENT_URL( 'main' )%>"/>
</crmic:gridLayoutCell>
</crmic:gridLayout>
6. Activate all objects
C. Creating Views & Controllers
1. Create View using IC Web Client Workbench transaction. Give view name SimpleActivity.
In the wizard enter our view name, and specify all model nodes, model attributes and links to custom controllers.
Add Model Nodes:
Model Nodes BOL Entity High-level model node BOL Relation
GT_BTORDER BTOrder
GR_BTADMINH BTAdminH GT_BTORDER BTOrderHeader
GR_BTSTATUS BTStatusH GR_BTADMINH BTHeaderStatusSet
GR_BTSTATUSH BTStatus GR_BTSTATUS BTStatusHCurrent
Four nodes are the pointers to the similarly named BOL entities of the focus object. The focus object will be the Activity that the user clicked in the Activity Clipboard. Whenever this happens, an instance method of the controller is called. Method IP_INBOUNDPLUGID retrieves the BOL entities from the global memory and places them into these attributes. They can also be seen as buffers since they are used in multiple locations within the controller class.
Value node: Optional entry, keep it blank.
Add Model Attributes:
Model Attribute Model Node BOL Attribute
DESCRIPTION GR_BTADMINH DESCRIPTION
STATUS GR_BTSTATUSH STATUS
Create Links to Custom Controller
Context node: GT_BTORDER
BSP Application: CRM_IC
Custom Controller: CuCoBDC.do
Context node (Custom Controller): CURRENTINTERACTIONRECORD
Select View Type
Type: Form View
2. Restart the IC Web Client Workbench. We will observe, controller class is generated with methods. If we want to enhance these methods we should redefine them in the corresponding *_IMPL class.
3. Define the Inbound Plug.
This is the method that is called by the framework whenever we navigate to our view set. Define method IP_INBOUNDPLUGID and populate with following code:
Following attributes added to the controller class, as it was showing an error message:
GR_BTORDER TYPE REF TO CL_CRM_BOL_ENTITY
GR_BTADMINH TYPE REF TO CL_CRM_BOL_ENTITY
GR_BTSTATUSH TYPE REF TO CL_CRM_BOL_ENTITY
GR_BTSTATUS TYPE REF TO CL_CRM_BOL_ENTITY
METHOD IP_INBOUNDPLUGID.
data: lr_bdc type ref to cl_crm_ic_cucobdc_impl,
lr_btorder type ref to if_bol_bo_property_access.
*- Read Parameter
lr_bdc ?= get_custom_controller( 'CuCoBDC' ).
CALL METHOD lr_bdc->get_navigation_data
IMPORTING
ev_selected_object = lr_btorder.
*- Read Model
IF lr_btorder IS BOUND.
TRY.
gr_btorder ?= lr_btorder.
gr_btadminh = gr_btorder->get_related_entity(
iv_relation_name = 'BTOrderHeader' ).
gr_btstatush = gr_btadminh->get_related_entity(
iv_relation_name = 'BTHeaderStatusSet' ).
IF gr_btstatush IS NOT BOUND.
gr_btstatush = gr_btadminh->create_related_entity(
iv_relation_name = 'BTHeaderStatusSet' ).
ENDIF.
gr_btstatus = gr_btstatush->get_related_entity(
iv_relation_name = 'BTStatusHCurrent' ).
IF gr_btstatush IS NOT BOUND.
gr_btstatush = gr_btstatush->create_related_entity(
iv_relation_name = 'BTStatusHCurrent' ).
ENDIF.
CATCH cx_root.
ENDTRY.
ENDIF.
ENDMETHOD.
4. Confirm View Layout SimpleActivity consistency.
5. Two methods are responsible for the data transfer between the model/controller and the view and are created automatically by the wizard.
SET_MODELLS -- Sends data to the view (PBO)
DO_HANDLE_DATA -- Retrieves data from the HTTP request fields (PAI)
We can redefine these methods for further enhancements.
D. Adjusting IC Web Client Framework
After having defined the views, controllers and classes, we need to hook them up to the runtime profile of IC Web Client.
STEPS:
1. To prepare IC Web Client framework for custom-built view-sets, create a new runtime profile BSP application in the customer namespace.
Create BSP application Z_CRM_IC_RT_REP under package Z_CONS_COOK1.
Copy the file CRM_IC.xml from the BSP application CRM_IC_RT_REP to Z_CRM_IC_RT_REP.
2. Adjust the contents of file CRM_IC.xml, as under:
<%@page language="abap"%><?xml version="1.0"?>
<WebDynProDefinitions>
<Application id="CRM_IC">
<ViewSets>
<%@include file="../Z_CRM_IC_DT_REP/CRM_IC_All_Viewsets.xml" %>
</ViewSets>
<NavigationalLinks>
<%@include file="../Z_CRM_IC_DT_REP/CRM_IC_All_NavLinks.xml" %>
</NavigationalLinks>
</Application>
</WebDynProDefinitions>
3. Create BSP application Z_CRM_IC_DT_REP in package Z_CONS_COOK1.
4. Copy page fragment CRM_IC_All_Viewsets.xml of BSP application CRM_IC_DT_REP to Z_CRM_IC_DT_REP and replace the file contents with the following lines:
Page fragment: CRM_IC_All_Viewsets.xml
<%@page language="abap"%>
<%@include file="MainViewSet.xml" %>
<%@include file="../CRM_IC_DT_REP/BuPaViewSet.xml" %>
<%@include file="../CRM_IC_DT_REP/CRM_IC_All_Viewsets_wo_BUPA_and_Main.xml" %>
This definition still works with all standard view sets, but replaces the MainViewSet.xml with our own definition, since it is now loaded from Z_CRM_IC_DT_REP.
5. Copy page fragment MainViewSet.xml from BSP application CRM_IC_DT_REP to Z_CRM_IC_DT_REP.
6. Copy page fragment CRM_IC_All_NavLinks.xml of BSP application CRM_IC_DT_REP to Z_CRM_IC_DT_REP and replace the file contents with the following line:
<%@page language="abap" %>
<%@ include file="../CRM_IC_DT_REP/CRM_IC_All_NavLinks.xml" %>
This definition makes sure that standard navigational links still work and that we are able to add our own link definitions later.
7. Activate all objects.
8. Customize the IC Web Client Runtime Framework Profile in such a way that the new Source file is used with the following sample code:
Navigation: SPRO  CRM  Interaction Center Web Client  Customer-Specific System Modifications  Define IC Web Client Runtime Framework Profiles.
Provide new profile name ZCUST_PROF & populate it with following set of attributes:
Profile name: ZCUST_PROF
Component Set: ALL
Separate Display Model: Off
Application: IC_BASE
Viewset name: workViewSet
Runtime Rep.Type: BSP Application
Application: Z_CRM_IC_RT_REP
Page: CRM_IC.XML
E. Creating View Definitions for Design Time Repositories
1. Every new view set must be defined in Design Time Repository. For this purpose, create page fragment SimpleActivitySet.xml in BSP application Z_CRM_IC_DT_REP and maintain it as shown in the following sample code:
Page fragment SimpleActivitySet.xml
<%@page language="abap"%>
<ViewSet id="Z_CRM_IC1 /SimpleActivitySet">
<ViewArea id="main" views="Z_CRM_IC1 /SimpleActivity"/>
</ViewSet>
2. Include file SimpleActivitySet.xml" into page CRM_IC_All_Viewsets.xml of BSP application Z_CRM_IC_DT_REP.
Page CRM_IC_All_Viewsets.xml after modification:
<%@page language="abap"%>
<%@include file="MainViewSet.xml" %>
<%@include file="../CRM_IC_DT_REP/BuPaViewSet.xml" %>
<%@include file="../CRM_IC_DT_REP/CRM_IC_All_Viewsets_wo_BUPA_and_Main.xml" %>
<%@ include file="SimpleActivitySet.xml" %>
3. Activate all objects.
F. Creating Navigational Link Definitions for Design Time Repositories
To provide a navigational link for the activity clipboard, define this link.
1. Create Page fragment SimpleActivityNavLinks.xml in BSP Application Z_CRM_IC_DT_REP and maintain layout with following code:
<NavigationalLink name="SimpleActivity">
<Source viewRef="IRecActivitiesClipboard"
outboundPlugRef="default"/>
<Targets>
<Target viewRef=" Z_CRM_IC1/SimpleActivity"
inboundPlugRef="inboundplugid"/>
</Targets>
</NavigationalLink>
2. Similar to the view definition, also the Navigational Link must be included into the framework.
Add the following line
<%@ include file="SimpleActivityNavLinks.xml" %> to the file
CRM_IC_ALL_NavLinks.xml in the BSP application Z_CRM_IC_DT_REP.
Page fragment CRM_IC_All_NavLinks.xml source code
<%@page language="abap" %>
<%@ include file="../CRM_IC_DT_REP/CRM_IC_All_NavLinks.xml" %>
<%@ include file="SimpleActivityNavLinks.xml" %>
3. Activate all objects.
G. Placing View Sets into Controller Hierarchies
1. Adjust the file MainViewSet.xml in BSP application Z_CRM_IC_DT_REP.
Add the reference to our view set and activate the file as shown in the following sample code:
Page fragment: MainViewSet.xml
<%@page language="abap"%>
<ViewSet id="IC_BASE/ICAPPMainViewSet">
<ViewArea id="navigationArea" views="IC_BASE/navigationViewSet"/>
<ViewArea id="workArea" views="IC_BASE/workViewSet"/>
<ViewArea id="contextArea" views="IC_BASE/contextAreaView"/>
<ViewArea id="breadCrumbsArea" views="IC_BASE/BreadCrumbsView"/>
<ViewArea id="globalSearchArea" views="HistoryView"/>
<ViewArea id="helpArea" views="Help"/>
<ViewArea id="statusArea" views="StatusView"/>
<ViewArea id="errorArea" views="IC_BASE/ErrorViewSet"/>
</ViewSet>
<ViewSet id="IC_BASE/navigationViewSet">
<ViewArea id="navigationViewSetArea" views="IC_BASE/NavBarView"/>
</ViewSet>
<ViewSet id="IC_BASE/workViewSet">
<ViewArea id="workViewSetArea"
views="<%@include file="../CRM_IC_DT_REP/StdWorkareaOccupation.xml" %>
Z_CRM_IC1/SimpleActivitySet "/>
</ViewSet>
H. Customize Activity Clipboard
To make activity clipboard call our new view set, change its customizing.
1. Create Activity Clipboard profile called ZCUST_PROF.
Navigation: SPRO  CRM  IC Web Client  Basic Functions  Define Activity Clipboard Profiles.
Profile name: ZCUST_PROF (copy all entries)
Keep Technical Profile name: DEFAULT
2. Assign this profile to IC Web Client profile.
3. Create a new entry for the object BTOrder and wrapped object type BUS2000126 by copying the existing entry BTORDERBUS2000126.
Activity Clipboard Entry ID: ZBTORDERBUS2000126
BOL Type: BTOrder
NavigationLink: SimpleActivity
4. Go back to your profile and select Assign Entries to Profile. Replace the original Entry ID BTORDERBUS2000126 with your new entry ZBTORDERBUS2000126.
5. Activate your changes and test the IC WebClient (application CRM_IC) -
Creation of new view by copying existing view in IC WebClient (BSP)
Hi,
we need to add a new view which will be a copy of existing view in IC web Client application. I ve created the new view & a controller for it(kepping the controller class same as that of old view).
I have also created a new Id in the viewset runtime framework for the new view. Added this new ID in the viewset, but in the presentation layer it keeps on displaying the old view twice.
Is there anything that I m missing out on???
Pls help
Thanks & regards,
DevenHi Deven,
I think you have to create a new controller class for the new view, even if you don't want to change anything. Because in the attributes(attribute name - VIEW) of controller class you have to maintain view name.
Hope this will help you.
Thanks
Swagatika -
Adding a view in a component of BSP application
Hi All,
I want to create new component for a BSP and add a view to it.
my scenario is : I have a problem in creating a pop-up view whenever a button in a WEB UI is clicked.
I have added a button in the items tab of sales order creation(in WEB UI),so when that button is clicked a pop-up view has to be generated.
the view i am creating is a ineractive view where the user can enter some data and press a button in the pop-up window so that the data is copied in the items tab.
the pop-up contains a table grid where the user can enter the data and press the button in pop-up window.
so could you please let me know how to create this type of pop-up window.
Regarding this some one has send me a solution of creating a new component with a new view.but unfortunately i am not able to create a view because it is asking for nodes and BOL entity.
so could you all provide me some input inorder to create the component and view.
Thanks
TanveerHi Tanveer,
I have done the Similar Case.
By now I hope you have Created a New Component.
Ensure the Following Points before you Proceed.
1. Create a Window/View Set and View.
2. As you are saying yours is Table View while Creating View Specify it as Value Node and assign Corresponding Attributes to the Value Node.
3. Specify Type of View is Table Type.
4. Now in Runtime Repository Add the Created Window.
5. Now add the Created ViewSet and View to the Window and Save.
6. Create a New Interface View which is ( Window Name ) in Runtime Repository.
7. Add Component Usage in Runtime Repository.( In Source Component where Button is Present )
a. Give ID and Interface View for the Component Usage and give Used Component
Name. If View is created in same component then give same name other wise
Give another component name.
8. After create View/Window/Component Interface/Component Usage Now to get the
Table View in Popup Screen
Modify the Standard Code similar to the Table View in HTML Page.
For Reference:
<chtmlb:tableExtension tableId = "Table"
layout = "FIXED" >
<chtmlb:configTable id = "Table"
navigationMode = "BYPAGE"
onRowSelection = "select"
selectedRowIndex = "<%= CONTEXTNODE->SELECTED_INDEX %>"
selectedRowIndexTable = "<%= CONTEXTNODE->->SELECTION_TAB %>"
selectionMode = "<%= CONTEXTNODE->->SELECTION_MODE %>"
table = "//CONTEXTNODE->/Table"
usage = "SEARCHRESULT"
visibleRowCount = "10"
width = "100%"
showNoMatchText = "FALSE"
/>
</chtmlb:tableExtension>
CONTEXTNODE is the Context Node in View.
Now to get the Values in the Table View when popup gets displayed.
Go to the Newly Created View and add Code to populate Values in Table View
Method CL_BSP_WD_CONTEXT_NODE_TV - > IF_BSP_MODEL~INIT.
Now,to Call the Created View as a popup from the New Component when Buton is Clicked
Use the Following Code in the Event of Button Click.
DATA: lr_popup TYPE REF TO if_bsp_wd_popup.
IF lr_popup IS NOT BOUND.
lr_popup = me->comp_controller->window_manager->create_popup( )
(Specify Parameters Interface View,Component Usage and Title for Window in the above Method._
lr_popup->set_display_mode( if_bsp_wd_popup=>c_display_mode_surrounded ).
ENDIF.
Set the callback event on the imported controller ( Specify Event Name which needs to get Triggered when Popup is Closed.)
lr_popup->set_on_close_event( iv_event_name = "EVENT_NAME"
iv_view = me ).
*Set the width of the popup
CALL METHOD lr_popup->set_window_width
EXPORTING
iv_width = 500.
*Open the popup
lr_popup->open( ).
This will help in Getting a View as a Popup when Button is Clicked. -
How to create new view in WebUI for Product
Hello,
We want to create a new view (Z) based on the fields of the BOL object and show it in the WebUI. Is there any step by step explanation how to do it?
Thanks in advance,
Sergey KozyrevHi Sijo,
The following would be the steps to integrate a z component to a std component:
1. Create the view that you would like to integrate with the standard component in a separate z component and design its configuration
2. Add the view in the Component Interface of runtime repository editor. Executing the z component directly must display the view without any errors
3. In the standard component, add the z component in Component Usage of runtime repository editor
4. In the standard component, add the custom component view in Viewsets->Viewarea->View (overview page view) of runtime repository editor
5. Now the view would be there in the available views of the overview page. Move it to the list of visible view on the right side
6. Execute the std component through Web UI and the view should appear
7. Make sure the Web UI uses the same role config key as that of the overview page in which you have added the view -
TableSorter errors when adding new data
so here is the deal:
I am using the TableSorter.java helper class with DefaultTableModel
from: http://java.sun.com/docs/books/tutorial/uiswing/components/table.html
It works great when the data is static and I get it for the first time. however, occationally, when adding new data I get a NullPointerException error.
in use:
DefaultTableModel.addRow()
DefaultTableModel.removeRow() and
DefaultTableModel.insertRow() methods.
Error:
java.lang.ArrayIndexOutOfBoundsException: 5
at com.shared.model.TableSorter.modelIndex(TableSorter.java:294)
at com.shared.model.TableSorter.getValueAt(TableSorter.java:340)
at javax.swing.JTable.getValueAt(Unknown Source)
at javax.swing.JTable.prepareRenderer(Unknown Source)...
code problem I:
public Object getValueAt(int row, int column)
return tableModel.getValueAt(modelIndex(row), column);
}code problem II:
public int modelIndex(int viewIndex)
return getViewToModel()[viewIndex].modelIndex;
}TableSroter class:
package com.shared.model;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.util.List;
import javax.swing.*;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.*;
* TableSorter is a decorator for TableModels; adding sorting
* functionality to a supplied TableModel. TableSorter does
* not store or copy the data in its TableModel; instead it maintains
* a map from the row indexes of the view to the row indexes of the
* model. As requests are made of the sorter (like getValueAt(row, col))
* they are passed to the underlying model after the row numbers
* have been translated via the internal mapping array. This way,
* the TableSorter appears to hold another copy of the table
* with the rows in a different order.
* <p/>
* TableSorter registers itself as a listener to the underlying model,
* just as the JTable itself would. Events recieved from the model
* are examined, sometimes manipulated (typically widened), and then
* passed on to the TableSorter's listeners (typically the JTable).
* If a change to the model has invalidated the order of TableSorter's
* rows, a note of this is made and the sorter will resort the
* rows the next time a value is requested.
* <p/>
* When the tableHeader property is set, either by using the
* setTableHeader() method or the two argument constructor, the
* table header may be used as a complete UI for TableSorter.
* The default renderer of the tableHeader is decorated with a renderer
* that indicates the sorting status of each column. In addition,
* a mouse listener is installed with the following behavior:
* <ul>
* <li>
* Mouse-click: Clears the sorting status of all other columns
* and advances the sorting status of that column through three
* values: {NOT_SORTED, ASCENDING, DESCENDING} (then back to
* NOT_SORTED again).
* <li>
* SHIFT-mouse-click: Clears the sorting status of all other columns
* and cycles the sorting status of the column through the same
* three values, in the opposite order: {NOT_SORTED, DESCENDING, ASCENDING}.
* <li>
* CONTROL-mouse-click and CONTROL-SHIFT-mouse-click: as above except
* that the changes to the column do not cancel the statuses of columns
* that are already sorting - giving a way to initiate a compound
* sort.
* </ul>
* <p/>
* This is a long overdue rewrite of a class of the same name that
* first appeared in the swing table demos in 1997.
* @author Philip Milne
* @author Brendon McLean
* @author Dan van Enckevort
* @author Parwinder Sekhon
* @version 2.0 02/27/04
public class TableSorter extends AbstractTableModel
protected TableModel tableModel;
public static final int DESCENDING = -1;
public static final int NOT_SORTED = 0;
public static final int ASCENDING = 1;
private static Directive EMPTY_DIRECTIVE = new Directive(-1, NOT_SORTED);
public static final Comparator COMPARABLE_COMAPRATOR = new Comparator()
public int compare(Object o1, Object o2)
return ((Comparable) o1).compareTo(o2);
public static final Comparator LEXICAL_COMPARATOR = new Comparator()
public int compare(Object o1, Object o2)
return o1.toString().compareTo(o2.toString());
private Row[] viewToModel;
private int[] modelToView;
private JTableHeader tableHeader;
private MouseListener mouseListener;
private TableModelListener tableModelListener;
private Map columnComparators = new HashMap();
private List sortingColumns = new ArrayList();
public TableSorter()
this.mouseListener = new MouseHandler();
this.tableModelListener = new TableModelHandler();
public TableSorter(TableModel tableModel)
this();
setTableModel(tableModel);
public TableSorter(TableModel tableModel, JTableHeader tableHeader)
this();
setTableHeader(tableHeader);
setTableModel(tableModel);
private void clearSortingState()
viewToModel = null;
modelToView = null;
public TableModel getTableModel()
return tableModel;
public void setTableModel(TableModel tableModel)
if (this.tableModel != null)
this.tableModel.removeTableModelListener(tableModelListener);
this.tableModel = tableModel;
if (this.tableModel != null)
this.tableModel.addTableModelListener(tableModelListener);
clearSortingState();
fireTableStructureChanged();
public JTableHeader getTableHeader()
return tableHeader;
public void setTableHeader(JTableHeader tableHeader)
if (this.tableHeader != null)
this.tableHeader.removeMouseListener(mouseListener);
TableCellRenderer defaultRenderer = this.tableHeader.getDefaultRenderer();
if (defaultRenderer instanceof SortableHeaderRenderer)
this.tableHeader.setDefaultRenderer(((SortableHeaderRenderer) defaultRenderer).tableCellRenderer);
this.tableHeader = tableHeader;
if (this.tableHeader != null)
this.tableHeader.addMouseListener(mouseListener);
this.tableHeader.setDefaultRenderer
new SortableHeaderRenderer(this.tableHeader.getDefaultRenderer())
public boolean isSorting()
return sortingColumns.size() != 0;
private Directive getDirective(int column)
for (int i = 0; i < sortingColumns.size(); i++)
Directive directive = (Directive)sortingColumns.get(i);
if (directive.column == column)
return directive;
return EMPTY_DIRECTIVE;
public int getSortingStatus(int column)
return getDirective(column).direction;
private void sortingStatusChanged()
clearSortingState();
fireTableDataChanged();
if (tableHeader != null)
tableHeader.repaint();
public void setSortingStatus(int column, int status)
Directive directive = getDirective(column);
if (directive != EMPTY_DIRECTIVE)
sortingColumns.remove(directive);
if (status != NOT_SORTED)
sortingColumns.add(new Directive(column, status));
sortingStatusChanged();
protected Icon getHeaderRendererIcon(int column, int size)
Directive directive = getDirective(column);
if (directive == EMPTY_DIRECTIVE)
return null;
return new Arrow(directive.direction == DESCENDING, size, sortingColumns.indexOf(directive));
private void cancelSorting()
sortingColumns.clear();
sortingStatusChanged();
public void setColumnComparator(Class type, Comparator comparator)
if (comparator == null)
columnComparators.remove(type);
else
columnComparators.put(type, comparator);
protected Comparator getComparator(int column)
Class columnType = tableModel.getColumnClass(column);
Comparator comparator = (Comparator) columnComparators.get(columnType);
if (comparator != null)
return comparator;
if (Comparable.class.isAssignableFrom(columnType))
return COMPARABLE_COMAPRATOR;
return LEXICAL_COMPARATOR;
private Row[] getViewToModel()
if (viewToModel == null)
int tableModelRowCount = tableModel.getRowCount();
viewToModel = new Row[tableModelRowCount];
for (int row = 0; row < tableModelRowCount; row++)
viewToModel[row] = new Row(row);
if (isSorting())
Arrays.sort(viewToModel);
return viewToModel;
public int modelIndex(int viewIndex)
return getViewToModel()[viewIndex].modelIndex;
private int[] getModelToView()
if (modelToView == null)
int n = getViewToModel().length;
modelToView = new int[n];
for (int i = 0; i < n; i++)
modelToView[modelIndex(i)] = i;
return modelToView;
// TableModel interface methods
public int getRowCount()
return (tableModel == null) ? 0 : tableModel.getRowCount();
public int getColumnCount()
return (tableModel == null) ? 0 : tableModel.getColumnCount();
public String getColumnName(int column)
return tableModel.getColumnName(column);
public Class getColumnClass(int column)
return tableModel.getColumnClass(column);
public boolean isCellEditable(int row, int column)
return tableModel.isCellEditable(modelIndex(row), column);
public Object getValueAt(int row, int column)
return tableModel.getValueAt(modelIndex(row), column);
public void setValueAt(Object aValue, int row, int column)
tableModel.setValueAt(aValue, modelIndex(row), column);
// Helper classes
private class Row implements Comparable
private int modelIndex;
public Row(int index)
this.modelIndex = index;
public int compareTo(Object o)
int row1 = modelIndex;
int row2 = ((Row) o).modelIndex;
for (Iterator it = sortingColumns.iterator(); it.hasNext();)
Directive directive = (Directive) it.next();
int column = directive.column;
Object o1 = tableModel.getValueAt(row1, column);
Object o2 = tableModel.getValueAt(row2, column);
int comparison = 0;
// Define null less than everything, except null.
if (o1 == null && o2 == null)
comparison = 0;
} else if (o1 == null)
comparison = -1;
} else if (o2 == null)
comparison = 1;
} else {
comparison = getComparator(column).compare(o1, o2);
if (comparison != 0)
return directive.direction == DESCENDING ? -comparison : comparison;
return 0;
private class TableModelHandler implements TableModelListener
public void tableChanged(TableModelEvent e)
// If we're not sorting by anything, just pass the event along.
if (!isSorting())
clearSortingState();
fireTableChanged(e);
return;
// If the table structure has changed, cancel the sorting; the
// sorting columns may have been either moved or deleted from
// the model.
if (e.getFirstRow() == TableModelEvent.HEADER_ROW)
cancelSorting();
fireTableChanged(e);
return;
// We can map a cell event through to the view without widening
// when the following conditions apply:
// a) all the changes are on one row (e.getFirstRow() == e.getLastRow()) and,
// b) all the changes are in one column (column != TableModelEvent.ALL_COLUMNS) and,
// c) we are not sorting on that column (getSortingStatus(column) == NOT_SORTED) and,
// d) a reverse lookup will not trigger a sort (modelToView != null)
// Note: INSERT and DELETE events fail this test as they have column == ALL_COLUMNS.
// The last check, for (modelToView != null) is to see if modelToView
// is already allocated. If we don't do this check; sorting can become
// a performance bottleneck for applications where cells
// change rapidly in different parts of the table. If cells
// change alternately in the sorting column and then outside of
// it this class can end up re-sorting on alternate cell updates -
// which can be a performance problem for large tables. The last
// clause avoids this problem.
int column = e.getColumn();
if (e.getFirstRow() == e.getLastRow()
&& column != TableModelEvent.ALL_COLUMNS
&& getSortingStatus(column) == NOT_SORTED
&& modelToView != null)
int viewIndex = getModelToView()[e.getFirstRow()];
fireTableChanged(new TableModelEvent(TableSorter.this,
viewIndex, viewIndex,
column, e.getType()));
return;
// Something has happened to the data that may have invalidated the row order.
clearSortingState();
fireTableDataChanged();
return;
private class MouseHandler extends MouseAdapter
public void mouseClicked(MouseEvent e)
JTableHeader h = (JTableHeader) e.getSource();
TableColumnModel columnModel = h.getColumnModel();
int viewColumn = columnModel.getColumnIndexAtX(e.getX());
int column = columnModel.getColumn(viewColumn).getModelIndex();
if (column != -1)
int status = getSortingStatus(column);
if (!e.isControlDown())
cancelSorting();
// Cycle the sorting states through {NOT_SORTED, ASCENDING, DESCENDING} or
// {NOT_SORTED, DESCENDING, ASCENDING} depending on whether shift is pressed.
status = status + (e.isShiftDown() ? -1 : 1);
status = (status + 4) % 3 - 1; // signed mod, returning {-1, 0, 1}
setSortingStatus(column, status);
private static class Arrow implements Icon
private boolean descending;
private int size;
private int priority;
public Arrow(boolean descending, int size, int priority)
this.descending = descending;
this.size = size;
this.priority = priority;
public void paintIcon(Component c, Graphics g, int x, int y)
Color color = c == null ? Color.GRAY : c.getBackground();
// In a compound sort, make each succesive triangle 20%
// smaller than the previous one.
int dx = (int)(size/2*Math.pow(0.8, priority));
int dy = descending ? dx : -dx;
// Align icon (roughly) with font baseline.
y = y + 5*size/6 + (descending ? -dy : 0);
int shift = descending ? 1 : -1;
g.translate(x, y);
// Right diagonal.
g.setColor(color.darker());
g.drawLine(dx / 2, dy, 0, 0);
g.drawLine(dx / 2, dy + shift, 0, shift);
// Left diagonal.
g.setColor(color.brighter());
g.drawLine(dx / 2, dy, dx, 0);
g.drawLine(dx / 2, dy + shift, dx, shift);
// Horizontal line.
if (descending) {
g.setColor(color.darker().darker());
} else {
g.setColor(color.brighter().brighter());
g.drawLine(dx, 0, 0, 0);
g.setColor(color);
g.translate(-x, -y);
public int getIconWidth()
return size;
public int getIconHeight()
return size;
private class SortableHeaderRenderer implements TableCellRenderer
private TableCellRenderer tableCellRenderer;
public SortableHeaderRenderer(TableCellRenderer tableCellRenderer)
this.tableCellRenderer = tableCellRenderer;
public Component getTableCellRendererComponent(JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column)
Component c = tableCellRenderer.getTableCellRendererComponent(table,
value, isSelected, hasFocus, row, column);
if (c instanceof JLabel) {
JLabel l = (JLabel) c;
l.setHorizontalTextPosition(JLabel.LEFT);
int modelColumn = table.convertColumnIndexToModel(column);
l.setIcon(getHeaderRendererIcon(modelColumn, l.getFont().getSize()));
return c;
private static class Directive
private int column;
private int direction;
public Directive(int column, int direction)
this.column = column;
this.direction = direction;
}any input will be appreciated.
thanks
PeterThe code you posted doesn't help us at all. Its just a duplicate of the code from the tutorial. The custom code is what you have written. For example do you update the TableModel from the Event Thread? Do you update the SortModel or the DefaultTableModel? If you actually provide your test code and somebody has already downloaded the sort classes, then maybe they will test your code against the classes. But I doubt if people will download the sort classes and create a test program just to see if they can duplicate your results (at least I know I'm not about to).
-
Inserting a new view in place of already existed once
Hai folks,
In Ic Webclient on crm 5.0 system i got an issue
In <b>identify customer</b> View set
i have removed the view of <b>regestered product</b>
and want to insert a view <b>bupaLongTexts</b> there(in that deleted area)
I am able to remove the view by removing the view name in the navigation links
in <b>BuPaViewsets</b> in a customized design time repository zcrm_ic_dt_rep
of a customized Run.Time. repository zcrm_ic_rt_rep.
but For inserting a new view..
I am getting fault .
I inserted the view in the navigation link flow in Product (view area content id)..
and copied customized view <b>BuPaIdentifycustomer</b> and adjusted the code for a new viewset vision.
I took care of profile settings too.
Is there any thing to take care.. and what is this <b>view area content id.</b>
Please reply this..Its my urgent requirement.
Useful answers are rewarded..
Bye..
satishHi Sathish,
Instead of doing so much thing why dont u just go to spro->crm-icwc->customerspecificmodifications and just replace the existing view with the new view of ur application.
thanks,
ashish.
Maybe you are looking for
-
RoboHelp 9 Won't Generate a Word Document
I'm trying to get RoboHelp 9 to generate a Word Document. It won't genterate and throws out the following message in output view: Preparing to create Printed Documentation... Clearing output folder... Preparing files for Print Document... Copying fil
-
Convert WMV to a video format for iPod?
Hello, I have a WMV recording of a Microsoft Live Meeting event. It is 1.5 hours in length, about 31MB and 4 fps. I need to convert it to a video format that can be played on a video iPod. When I try to export as MP4 from Premiere Pro CS4, the file s
-
LMS 3.2 and RME NetConfig Job - No Devices
I'm runnig CW LMS 3.2 on Solaris 10. If I go to Resource Management Essentials, click on NetConfig, and then select "create" as in "create a NetConfig job", it takes me to the Netconfig Jobs screen. On this screen, I check "select all devices ", but
-
Hello, I've used ALSB 3.0. I created a proxy ans a business service that send JMS to a MQ queue, then i have a java application that listen the MQ to get the JMS. When i set one of the JMS properties in the test, i don't find this one when i'm listen
-
I am trying to fix a problem in streaming internet radio through an air port express device to my stereo system and have encountered dropouts in the music. I was told to,"Set Air Tunes to the multiple speaker option and include the computer". How is