Editable columns with cl_salv_table

Hallo Everybody!
I developed an ALV table using the last SALV class pool.
I followed the report example SALV_DEMO_TABLE_SELECTIONS, and I created it in this way:
      cl_salv_table=>factory(
        IMPORTING
          r_salv_table = gr_table
        CHANGING
          t_table      = i_alv[] ).
and it worked great!!
Now I want to set 2 quantity fields and a selection checkbox as editable.
I read on this link:
http://help.sap.com/saphelp_nw04/helpdata/en/26/46fb40f17af66fe10000000a1550b0/frameset.htm
that there's the method SET_EDITABLE for a CHECKBOX_HOTSPOT field in the class CL_SALV_ITEM, but I can't implement it.
How can i call this method, linking it to the CHECKBOX_HOTSPOT and to the 2 quantity fields?
Thanks in advance.
Regards
Alfonso

For SP01, system uses the REUSE_ALV_LIST_DISPLAY or REUSE_ALV_GRID_DISPLAY FM to generate the output. It doesn't use the SAL OM to generate the ALV.
In SALV OM, I believe that's the only option to get the editable checkbox in the GRID (ALV generated with Container) / Fullscreen ALV. But you can get the selections (which brings the checkboxes) in the List display. Check the program SALV_DEMO_TABLE_SELECTIONS.
When you Run with selection "Output as List", you will get the editable checkboxes.
When you run the program with selection as "Output as Grid", you will get the "Box" icons for selection.
Regards,
Naimesh Patel

Similar Messages

  • Re: BUG? APEX 4.0: ORA-20503 error editing report with 400+ columns

    Hello Everyone.
    I've run into something quite strange and am hoping you can help me.
    I am using Apex 4.0.1 and Oracle version 10.2.0.5. I've created a "classical" report in which the underlying SQL is a very simple:
    select * from pvtabThe Oracle table pvtab consists of 419 columns, all of which are varchar2(88) and number type. That's it.
    When I run the report, al of the columns show up as expected.
    However, when I go into the "Report Attributes" tab and click on one of the fields (any of them, it doesn't matter which one), I immediately get the following error:
    ORA-20503: Current version of data in database has changed since user initiated update process. current checksum = "598CAA7B68746A66F4B99E1512C36DED" application checksum = "0"If if replace the "*" with a few actual column names, then I am able to access any of these columns without problem.
    If I put back the "*", I then encounter this error again.
    I have never seen this error with other SQL SELECT statements in which I use the "*" qualifier to retrieve all columns from the table.
    And so, I am wondering if the error is caused because of the large number of columns (419) in my table.
    I've seen this same error mentioned in connection with forms but never with a report.
    So, is there some limit to the number of columns one can have in a "classic" or interactive report?
    Any idea why I would be getting this error?
    Here is the DDL for my table pvtab:
    CREATE TABLE  "PVTAB"
       (     "MICRO" VARCHAR2(4),
         "PRIM" VARCHAR2(4),
         "UNIT" NUMBER,
         "SEC_REF_1" NUMBER,
         "SECN_1" VARCHAR2(88),
         "SEC_REF_2" NUMBER,
         "SECN_2" VARCHAR2(88),
         "SEC_REF_3" NUMBER,
         "SECN_3" VARCHAR2(88),
         "SEC_REF_4" NUMBER,
         "SECN_4" VARCHAR2(88),
         "SEC_REF_5" NUMBER,
         "SECN_5" VARCHAR2(88),
         "SEC_REF_6" NUMBER,
         "SECN_6" VARCHAR2(88),
         "SEC_REF_7" NUMBER,
         "SECN_7" VARCHAR2(88),
         "SEC_REF_8" NUMBER,
         "SECN_8" VARCHAR2(88),
         "SEC_REF_9" NUMBER,
         "SECN_9" VARCHAR2(88),
         "SEC_REF_10" NUMBER,
         "SECN_10" VARCHAR2(88),
         "SEC_REF_11" NUMBER,
         "SECN_11" VARCHAR2(88),
         "SEC_REF_12" NUMBER,
         "SECN_12" VARCHAR2(88),
         "SEC_REF_13" NUMBER,
         "SECN_13" VARCHAR2(88),
         "SEC_REF_14" NUMBER,
         "SECN_14" VARCHAR2(88),
         "SEC_REF_15" NUMBER,
         "SECN_15" VARCHAR2(88),
         "SEC_REF_16" NUMBER,
         "SECN_16" VARCHAR2(88),
         "SEC_REF_17" NUMBER,
         "SECN_17" VARCHAR2(88),
         "SEC_REF_18" NUMBER,
         "SECN_18" VARCHAR2(88),
         "SEC_REF_19" NUMBER,
         "SECN_19" VARCHAR2(88),
         "SEC_REF_20" NUMBER,
         "SECN_20" VARCHAR2(88),
         "SEC_REF_21" NUMBER,
         "SECN_21" VARCHAR2(88),
         "SEC_REF_22" NUMBER,
         "SECN_22" VARCHAR2(88),
         "SEC_REF_23" NUMBER,
         "SECN_23" VARCHAR2(88),
         "SEC_REF_24" NUMBER,
         "SECN_24" VARCHAR2(88),
         "SEC_REF_25" NUMBER,
         "SECN_25" VARCHAR2(88),
         "SEC_REF_26" NUMBER,
         "SECN_26" VARCHAR2(88),
         "SEC_REF_27" NUMBER,
         "SECN_27" VARCHAR2(88),
         "SEC_REF_28" NUMBER,
         "SECN_28" VARCHAR2(88),
         "SEC_REF_29" NUMBER,
         "SECN_29" VARCHAR2(88),
         "SEC_REF_30" NUMBER,
         "SECN_30" VARCHAR2(88),
         "SEC_REF_31" NUMBER,
         "SECN_31" VARCHAR2(88),
         "SEC_REF_32" NUMBER,
         "SECN_32" VARCHAR2(88),
         "SEC_REF_33" NUMBER,
         "SECN_33" VARCHAR2(88),
         "SEC_REF_34" NUMBER,
         "SECN_34" VARCHAR2(88),
         "SEC_REF_35" NUMBER,
         "SECN_35" VARCHAR2(88),
         "SEC_REF_36" NUMBER,
         "SECN_36" VARCHAR2(88),
         "SEC_REF_37" NUMBER,
         "SECN_37" VARCHAR2(88),
         "SEC_REF_38" NUMBER,
         "SECN_38" VARCHAR2(88),
         "SEC_REF_39" NUMBER,
         "SECN_39" VARCHAR2(88),
         "SEC_REF_40" NUMBER,
         "SECN_40" VARCHAR2(88),
         "SEC_REF_41" NUMBER,
         "SECN_41" VARCHAR2(88),
         "SEC_REF_42" NUMBER,
         "SECN_42" VARCHAR2(88),
         "SEC_REF_43" NUMBER,
         "SECN_43" VARCHAR2(88),
         "SEC_REF_44" NUMBER,
         "SECN_44" VARCHAR2(88),
         "SEC_REF_45" NUMBER,
         "SECN_45" VARCHAR2(88),
         "SEC_REF_46" NUMBER,
         "SECN_46" VARCHAR2(88),
         "SEC_REF_47" NUMBER,
         "SECN_47" VARCHAR2(88),
         "SEC_REF_48" NUMBER,
         "SECN_48" VARCHAR2(88),
         "SEC_REF_49" NUMBER,
         "SECN_49" VARCHAR2(88),
         "SEC_REF_50" NUMBER,
         "SECN_50" VARCHAR2(88),
         "SEC_REF_51" NUMBER,
         "SECN_51" VARCHAR2(88),
         "SEC_REF_52" NUMBER,
         "SECN_52" VARCHAR2(88),
         "SEC_REF_53" NUMBER,
         "SECN_53" VARCHAR2(88),
         "SEC_REF_54" NUMBER,
         "SECN_54" VARCHAR2(88),
         "SEC_REF_55" NUMBER,
         "SECN_55" VARCHAR2(88),
         "SEC_REF_56" NUMBER,
         "SECN_56" VARCHAR2(88),
         "SEC_REF_57" NUMBER,
         "SECN_57" VARCHAR2(88),
         "SEC_REF_58" NUMBER,
         "SECN_58" VARCHAR2(88),
         "SEC_REF_59" NUMBER,
         "SECN_59" VARCHAR2(88),
         "SEC_REF_60" NUMBER,
         "SECN_60" VARCHAR2(88),
         "SEC_REF_61" NUMBER,
         "SECN_61" VARCHAR2(88),
         "SEC_REF_62" NUMBER,
         "SECN_62" VARCHAR2(88),
         "SEC_REF_63" NUMBER,
         "SECN_63" VARCHAR2(88),
         "SEC_REF_64" NUMBER,
         "SECN_64" VARCHAR2(88),
         "SEC_REF_65" NUMBER,
         "SECN_65" VARCHAR2(88),
         "SEC_REF_66" NUMBER,
         "SECN_66" VARCHAR2(88),
         "SEC_REF_67" NUMBER,
         "SECN_67" VARCHAR2(88),
         "SEC_REF_68" NUMBER,
         "SECN_68" VARCHAR2(88),
         "SEC_REF_69" NUMBER,
         "SECN_69" VARCHAR2(88),
         "SEC_REF_70" NUMBER,
         "SECN_70" VARCHAR2(88),
         "SEC_REF_71" NUMBER,
         "SECN_71" VARCHAR2(88),
         "SEC_REF_72" NUMBER,
         "SECN_72" VARCHAR2(88),
         "SEC_REF_73" NUMBER,
         "SECN_73" VARCHAR2(88),
         "SEC_REF_74" NUMBER,
         "SECN_74" VARCHAR2(88),
         "SEC_REF_75" NUMBER,
         "SECN_75" VARCHAR2(88),
         "SEC_REF_76" NUMBER,
         "SECN_76" VARCHAR2(88),
         "SEC_REF_77" NUMBER,
         "SECN_77" VARCHAR2(88),
         "SEC_REF_78" NUMBER,
         "SECN_78" VARCHAR2(88),
         "SEC_REF_79" NUMBER,
         "SECN_79" VARCHAR2(88),
         "SEC_REF_80" NUMBER,
         "SECN_80" VARCHAR2(88),
         "SEC_REF_81" NUMBER,
         "SECN_81" VARCHAR2(88),
         "SEC_REF_82" NUMBER,
         "SECN_82" VARCHAR2(88),
         "SEC_REF_83" NUMBER,
         "SECN_83" VARCHAR2(88),
         "SEC_REF_84" NUMBER,
         "SECN_84" VARCHAR2(88),
         "SEC_REF_85" NUMBER,
         "SECN_85" VARCHAR2(88),
         "SEC_REF_86" NUMBER,
         "SECN_86" VARCHAR2(88),
         "SEC_REF_87" NUMBER,
         "SECN_87" VARCHAR2(88),
         "SEC_REF_88" NUMBER,
         "SECN_88" VARCHAR2(88),
         "SEC_REF_89" NUMBER,
         "SECN_89" VARCHAR2(88),
         "SEC_REF_90" NUMBER,
         "SECN_90" VARCHAR2(88),
         "SEC_REF_91" NUMBER,
         "SECN_91" VARCHAR2(88),
         "SEC_REF_92" NUMBER,
         "SECN_92" VARCHAR2(88),
         "SEC_REF_93" NUMBER,
         "SECN_93" VARCHAR2(88),
         "SEC_REF_94" NUMBER,
         "SECN_94" VARCHAR2(88),
         "SEC_REF_95" NUMBER,
         "SECN_95" VARCHAR2(88),
         "SEC_REF_96" NUMBER,
         "SECN_96" VARCHAR2(88),
         "SEC_REF_97" NUMBER,
         "SECN_97" VARCHAR2(88),
         "SEC_REF_98" NUMBER,
         "SECN_98" VARCHAR2(88),
         "SEC_REF_99" NUMBER,
         "SECN_99" VARCHAR2(88),
         "SEC_REF_100" NUMBER,
         "SECN_100" VARCHAR2(88),
         "SEC_REF_101" NUMBER,
         "SECN_101" VARCHAR2(88),
         "SEC_REF_102" NUMBER,
         "SECN_102" VARCHAR2(88),
         "SEC_REF_103" NUMBER,
         "SECN_103" VARCHAR2(88),
         "SEC_REF_104" NUMBER,
         "SECN_104" VARCHAR2(88),
         "SEC_REF_105" NUMBER,
         "SECN_105" VARCHAR2(88),
         "SEC_REF_106" NUMBER,
         "SECN_106" VARCHAR2(88),
         "SEC_REF_107" NUMBER,
         "SECN_107" VARCHAR2(88),
         "SEC_REF_108" NUMBER,
         "SECN_108" VARCHAR2(88),
         "SEC_REF_109" NUMBER,
         "SECN_109" VARCHAR2(88),
         "SEC_REF_110" NUMBER,
         "SECN_110" VARCHAR2(88),
         "SEC_REF_111" NUMBER,
         "SECN_111" VARCHAR2(88),
         "SEC_REF_112" NUMBER,
         "SECN_112" VARCHAR2(88),
         "SEC_REF_113" NUMBER,
         "SECN_113" VARCHAR2(88),
         "SEC_REF_114" NUMBER,
         "SECN_114" VARCHAR2(88),
         "SEC_REF_115" NUMBER,
         "SECN_115" VARCHAR2(88),
         "SEC_REF_116" NUMBER,
         "SECN_116" VARCHAR2(88),
         "SEC_REF_117" NUMBER,
         "SECN_117" VARCHAR2(88),
         "SEC_REF_118" NUMBER,
         "SECN_118" VARCHAR2(88),
         "SEC_REF_119" NUMBER,
         "SECN_119" VARCHAR2(88),
         "SEC_REF_120" NUMBER,
         "SECN_120" VARCHAR2(88),
         "SEC_REF_121" NUMBER,
         "SECN_121" VARCHAR2(88),
         "SEC_REF_122" NUMBER,
         "SECN_122" VARCHAR2(88),
         "SEC_REF_123" NUMBER,
         "SECN_123" VARCHAR2(88),
         "SEC_REF_124" NUMBER,
         "SECN_124" VARCHAR2(88),
         "SEC_REF_125" NUMBER,
         "SECN_125" VARCHAR2(88),
         "SEC_REF_126" NUMBER,
         "SECN_126" VARCHAR2(88),
         "SEC_REF_127" NUMBER,
         "SECN_127" VARCHAR2(88),
         "SEC_REF_128" NUMBER,
         "SECN_128" VARCHAR2(88),
         "SEC_REF_129" NUMBER,
         "SECN_129" VARCHAR2(88),
         "SEC_REF_130" NUMBER,
         "SECN_130" VARCHAR2(88),
         "SEC_REF_131" NUMBER,
         "SECN_131" VARCHAR2(88),
         "SEC_REF_132" NUMBER,
         "SECN_132" VARCHAR2(88),
         "SEC_REF_133" NUMBER,
         "SECN_133" VARCHAR2(88),
         "SEC_REF_134" NUMBER,
         "SECN_134" VARCHAR2(88),
         "SEC_REF_135" NUMBER,
         "SECN_135" VARCHAR2(88),
         "SEC_REF_136" NUMBER,
         "SECN_136" VARCHAR2(88),
         "SEC_REF_137" NUMBER,
         "SECN_137" VARCHAR2(88),
         "SEC_REF_138" NUMBER,
         "SECN_138" VARCHAR2(88),
         "SEC_REF_139" NUMBER,
         "SECN_139" VARCHAR2(88),
         "SEC_REF_140" NUMBER,
         "SECN_140" VARCHAR2(88),
         "SEC_REF_141" NUMBER,
         "SECN_141" VARCHAR2(88),
         "SEC_REF_142" NUMBER,
         "SECN_142" VARCHAR2(88),
         "SEC_REF_143" NUMBER,
         "SECN_143" VARCHAR2(88),
         "SEC_REF_144" NUMBER,
         "SECN_144" VARCHAR2(88),
         "SEC_REF_145" NUMBER,
         "SECN_145" VARCHAR2(88),
         "SEC_REF_146" NUMBER,
         "SECN_146" VARCHAR2(88),
         "SEC_REF_147" NUMBER,
         "SECN_147" VARCHAR2(88),
         "SEC_REF_148" NUMBER,
         "SECN_148" VARCHAR2(88),
         "SEC_REF_149" NUMBER,
         "SECN_149" VARCHAR2(88),
         "SEC_REF_150" NUMBER,
         "SECN_150" VARCHAR2(88),
         "SEC_REF_151" NUMBER,
         "SECN_151" VARCHAR2(88),
         "SEC_REF_152" NUMBER,
         "SECN_152" VARCHAR2(88),
         "SEC_REF_153" NUMBER,
         "SECN_153" VARCHAR2(88),
         "SEC_REF_154" NUMBER,
         "SECN_154" VARCHAR2(88),
         "SEC_REF_155" NUMBER,
         "SECN_155" VARCHAR2(88),
         "SEC_REF_156" NUMBER,
         "SECN_156" VARCHAR2(88),
         "SEC_REF_157" NUMBER,
         "SECN_157" VARCHAR2(88),
         "SEC_REF_158" NUMBER,
         "SECN_158" VARCHAR2(88),
         "SEC_REF_159" NUMBER,
         "SECN_159" VARCHAR2(88),
         "SEC_REF_160" NUMBER,
         "SECN_160" VARCHAR2(88),
         "SEC_REF_161" NUMBER,
         "SECN_161" VARCHAR2(88),
         "SEC_REF_162" NUMBER,
         "SECN_162" VARCHAR2(88),
         "SEC_REF_163" NUMBER,
         "SECN_163" VARCHAR2(88),
         "SEC_REF_164" NUMBER,
         "SECN_164" VARCHAR2(88),
         "SEC_REF_165" NUMBER,
         "SECN_165" VARCHAR2(88),
         "SEC_REF_166" NUMBER,
         "SECN_166" VARCHAR2(88),
         "SEC_REF_167" NUMBER,
         "SECN_167" VARCHAR2(88),
         "SEC_REF_168" NUMBER,
         "SECN_168" VARCHAR2(88),
         "SEC_REF_169" NUMBER,
         "SECN_169" VARCHAR2(88),
         "SEC_REF_170" NUMBER,
         "SECN_170" VARCHAR2(88),
         "SEC_REF_171" NUMBER,
         "SECN_171" VARCHAR2(88),
         "SEC_REF_172" NUMBER,
         "SECN_172" VARCHAR2(88),
         "SEC_REF_173" NUMBER,
         "SECN_173" VARCHAR2(88),
         "SEC_REF_174" NUMBER,
         "SECN_174" VARCHAR2(88),
         "SEC_REF_175" NUMBER,
         "SECN_175" VARCHAR2(88),
         "SEC_REF_176" NUMBER,
         "SECN_176" VARCHAR2(88),
         "SEC_REF_177" NUMBER,
         "SECN_177" VARCHAR2(88),
         "SEC_REF_178" NUMBER,
         "SECN_178" VARCHAR2(88),
         "SEC_REF_179" NUMBER,
         "SECN_179" VARCHAR2(88),
         "SEC_REF_180" NUMBER,
         "SECN_180" VARCHAR2(88),
         "SEC_REF_181" NUMBER,
         "SECN_181" VARCHAR2(88),
         "SEC_REF_182" NUMBER,
         "SECN_182" VARCHAR2(88),
         "SEC_REF_183" NUMBER,
         "SECN_183" VARCHAR2(88),
         "SEC_REF_184" NUMBER,
         "SECN_184" VARCHAR2(88),
         "SEC_REF_185" NUMBER,
         "SECN_185" VARCHAR2(88),
         "SEC_REF_186" NUMBER,
         "SECN_186" VARCHAR2(88),
         "SEC_REF_187" NUMBER,
         "SECN_187" VARCHAR2(88),
         "SEC_REF_188" NUMBER,
         "SECN_188" VARCHAR2(88),
         "SEC_REF_189" NUMBER,
         "SECN_189" VARCHAR2(88),
         "SEC_REF_190" NUMBER,
         "SECN_190" VARCHAR2(88),
         "SEC_REF_191" NUMBER,
         "SECN_191" VARCHAR2(88),
         "SEC_REF_192" NUMBER,
         "SECN_192" VARCHAR2(88),
         "SEC_REF_193" NUMBER,
         "SECN_193" VARCHAR2(88),
         "SEC_REF_194" NUMBER,
         "SECN_194" VARCHAR2(88),
         "SEC_REF_195" NUMBER,
         "SECN_195" VARCHAR2(88),
         "SEC_REF_196" NUMBER,
         "SECN_196" VARCHAR2(88),
         "SEC_REF_197" NUMBER,
         "SECN_197" VARCHAR2(88),
         "SEC_REF_198" NUMBER,
         "SECN_198" VARCHAR2(88),
         "SEC_REF_199" NUMBER,
         "SECN_199" VARCHAR2(88),
         "SEC_REF_200" NUMBER,
         "SECN_200" VARCHAR2(88),
         "SEC_REF_201" NUMBER,
         "SECN_201" VARCHAR2(88),
         "SEC_REF_202" NUMBER,
         "SECN_202" VARCHAR2(88),
         "SEC_REF_203" NUMBER,
         "SECN_203" VARCHAR2(88),
         "SEC_REF_204" NUMBER,
         "SECN_204" VARCHAR2(88),
         "SEC_REF_205" NUMBER,
         "SECN_205" VARCHAR2(88),
         "SEC_REF_206" NUMBER,
         "SECN_206" VARCHAR2(88),
         "SEC_REF_207" NUMBER,
         "SECN_207" VARCHAR2(88),
         "SEC_REF_208" NUMBER,
         "SECN_208" VARCHAR2(88)
       );Thank you for any help/advice.
    Elie
    Edited by: EEG on Jun 12, 2011 2:09 PM

    So, is there some limit to the number of columns one can have in a "classic" or interactive report?Yes. See Oracle® Application Express Application Builder User's Guide Release 4.0, Appendix B: Oracle Application Express Limits.
    Any idea why I would be getting this error?No, but I've replicated it in APEX 4.0.2.00.07 on 11.2.0.1.0 EE using a table of 420 <tt>varchar2(88)</tt> columns:
    >
    ORA-20503: Current version of data in database has changed since user initiated update process. current checksum = "50C9BDC0AA1AEF0EB272E9158B2117B4" application checksum = "0"
    >
    Happens whether using <tt>select *</tt> or including all column names in the query. (I know you don't want to type all the column names, but I'd never use <tt>select *</tt> in a production application: always use a proper column list. You can get one without typing by drag-and-drop of a table in most IDEs, or a query from <tt>user_tab_columns</tt>.)
    I hit the problem at 274 columns. Such an arbitrary number leads me to think that the problem is not one of the number of columns per se, but is due to some other limit (possibly a 32K VARCHAR2/RAW buffer somewhere).
    Workaround:
    Updates to the report column attributes are actually being saved, and you can navigate them using the Page Definition tree view as described in Appendix B.
    Getting More Help:
    This is probably a bug. If you have a support agreement with Oracle raise an SR with Oracle Support.
    Also:
    <li>Search the forum using the "ORA-20503" code and other possible terms to see if there's anything relevant. I had a quick look but the only thread in this context recommended an upgrade on an Oracle 9 DB version that's not compatible with APEX 4.0.
    <li>To get the attention of the Oracle APEX team or anyone else who may know more about this problem than we do, edit your original post and change the Subject to be more specific about the actual nature of the problem: <em>BUG? APEX 4.0: ORA-20503 error editing report with 400+ columns</em>, and include your database version/edition and the definition of the <tt>PVTAB</tt> table.
    Finally:
    Somebody's bound to ask, so we might as well get started:
    <li>Why so many columns?
    <li>What requirement is this trying to fulfil?

  • ALV grid disply with edit columns in output

    Hi all,
      i am using   CALL METHOD MY_GRID->SET_TABLE_FOR_FIRST_DISPLAY
    to display the output in alv format.there is  3 edit columns in output display.
       if i fill one field & then put 'ENTER' then other two fields of that row should be filled with the appropriate data from the program.still control should be in output display.
    which method i should use to go inside the program when i put 'ENTER' on any field of ALV output disply & how to use those methods inside the program.
    i need some materials regarding OOPS (class, method ) . now i want to put OOPS concept in alv display.
    correct answers will be rewarded.
    Thanks & regards

    Hi,
    Check,
    OOPS
    http://help.sap.com/saphelp_nw2004s/helpdata/en/ce/b518b6513611d194a50000e8353423/frameset.htm
    ABAP Objects
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/webcontent/uuid/35eaef9c-0b01-0010-dd8b-e3b0f9ed7ccb#section7 [original link is broken]
    check the below links lot of info and examples r there for OOPS
    http://www.sapgenie.com/abap/OO/index.htm
    http://www.geocities.com/victorav15/sapr3/abap_ood.html
    http://www.brabandt.de/html/abap_oo.html
    http://www.sapgenie.com/abap/OO/
    http://www.sapgenie.com/abap/OO/index.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/c3/225b5654f411d194a60000e8353423/content.htm
    http://www.esnips.com/doc/375fff1b-5a62-444d-8ec1-55508c308b17/prefinalppt.ppt
    <b>Reward if helpful.</b>

  • Reordering of rows - issue with drag and drop of editable columns in table

    JDeveloper: 11.1.1.6.0
    ADF Faces - Drag and Drop for reordering of rows within the same af:table
    I have a requirement for reordering rows in a table using drag and drop. This table is loaded using a list and I am able to programmatically do the reordering of the rows based on the events of drag and drop by manipulating the list. Reordering of rows is working fine if all the columns are read only. For all the input text and input date columns the values are not getting reordered. Anyone has any idea on what the issue may be with reordering of the rows for editable columns/rows (af:inputText and af:inputDate) in af:table. Below is what Iam doing on drop event which is a collection drop target.
    public DnDAction dropCollection(DropEvent dropEvent) {
    try
    Object dropSite = dropEvent.getDropSite();
    Transferable transferable = dropEvent.getTransferable();
    DataFlavor<RowKeySet> rowKeySetFlavor = DataFlavor.getDataFlavor(RowKeySet.class, "rowmove");
    RowKeySet rowKeySet = transferable.getData(rowKeySetFlavor);
    RichTable table = (RichTable) dropEvent.getDragComponent();
    if (rowKeySet != null)
    CollectionModel dragModel = transferable.getData(CollectionModel.class);
    Object dragM = dragModel.getRowData(0);
    Object currKey = rowKeySet.iterator().next();
    dragModel.setRowKey(currKey);
    table.setRowKey(currKey);
    OrderData orderData = (OrderData)this.prodReportTableData.get(Integer.parseInt(currKey.toString()));
    this.prodReportTableData.remove(Integer.parseInt(currKey.toString()));
    this.prodReportTableData.add(Integer.parseInt(dropSite.toString()), orderData);
    OrderData orderDataAdded = this.prodReportTableData.get(Integer.parseInt(dropSite.toString()));
    JSFUtils.addPartialTarget(this.getProdReportTableBinding());
    catch(Exception e)
    e.printStackTrace();
    return DnDAction.MOVE;
    Code snippet from UI:
    <af:table value="#{pageFlowScope.prodReportBackingBean.prodReportTableData}"
    var="row" styleClass="AFStretchWidth" rowBandingInterval="0"
    rows="40" emptyText="No data to display." id="t1"
    partialTriggers=":::cb1" columnStretching="column:c3"
    binding="#{pageFlowScope.prodReportBackingBean.prodReportTableBinding}" summary="PROD TABLE">
    <af:dragSource actions="MOVE" defaultAction="MOVE"
    discriminant="rowmove"
    dragDropEndListener="#{pageFlowScope.prodReportBackingBean.afterDragAndDrop}"/>
    <af:collectionDropTarget dropListener="#{pageFlowScope.prodReportBackingBean.dropCollection}"
    actions="MOVE"
    modelName="rowmove"/>

    Hi,
    not sure its the reason but you have huge bummer in your configuration.
    <af:table value="#{pageFlowScope.prodReportBackingBean.prodReportTableData}"
    var="row" styleClass="AFStretchWidth" rowBandingInterval="0"
    rows="40" emptyText="No data to display." id="t1"
    partialTriggers=":::cb1" columnStretching="column:c3"
    *binding="#{pageFlowScope.prodReportBackingBean.prodReportTableBinding}"* summary="PROD TABLE">
    JSF component bindings should not be to beans in a scope larger than request to avoid stale component instances.
    Frank

  • Group feature at ALV grid with editable columns

    Am I right ?
    Group function by using a sorted layout is disabled while having one (or more) editable columns, isn't it ?
    ... or is there a possibility to use gouped rows ?
    Greetings
    Markus

    Also...
    *& Report ZDEMO_ALVGRID_EDIT *
    *& Example of a simple ALV Grid Report *
    *& The basic ALV grid, Enhanced to display specific fields as *
    *& editable depending on field value *
    REPORT ZDEMO_ALVGRID_EDIT .
    TABLES: ekko.
    TYPE-POOLS: slis. "ALV Declarations
    *Data Declaration
    TYPES: BEGIN OF t_ekko,
    ebeln TYPE ekpo-ebeln,
    ebelp TYPE ekpo-ebelp,
    statu TYPE ekpo-statu,
    aedat TYPE ekpo-aedat,
    matnr TYPE ekpo-matnr,
    menge TYPE ekpo-menge,
    meins TYPE ekpo-meins,
    netpr TYPE ekpo-netpr,
    peinh TYPE ekpo-peinh,
    field_style TYPE lvc_t_styl, "FOR DISABLE
    END OF t_ekko.
    DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
    wa_ekko TYPE t_ekko.
    *ALV data declarations
    DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE.
    DATA: it_fieldcat TYPE lvc_t_fcat, "slis_t_fieldcat_alv WITH HEADER LINE,
    wa_fieldcat TYPE lvc_s_fcat,
    gd_tab_group TYPE slis_t_sp_group_alv,
    gd_layout TYPE lvc_s_layo, "slis_layout_alv,
    gd_repid LIKE sy-repid.
    *Start-of-selection.
    START-OF-SELECTION.
    PERFORM data_retrieval.
    PERFORM set_specific_field_attributes.
    PERFORM build_fieldcatalog.
    PERFORM build_layout.
    PERFORM display_alv_report.
    *& Form BUILD_FIELDCATALOG
    Build Fieldcatalog for ALV Report
    FORM build_fieldcatalog.
    wa_fieldcat-fieldname = 'EBELN'.
    wa_fieldcat-scrtext_m = 'Purchase Order'.
    wa_fieldcat-col_pos = 0.
    wa_fieldcat-outputlen = 10.
    wa_fieldcat-emphasize = 'X'.
    wa_fieldcat-key = 'X'.
    APPEND wa_fieldcat TO it_fieldcat.
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'EBELP'.
    wa_fieldcat-scrtext_m = 'PO Item'.
    wa_fieldcat-col_pos = 1.
    APPEND wa_fieldcat TO it_fieldcat.
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'STATU'.
    wa_fieldcat-scrtext_m = 'Status'.
    wa_fieldcat-col_pos = 2.
    APPEND wa_fieldcat TO it_fieldcat.
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'AEDAT'.
    wa_fieldcat-scrtext_m = 'Item change date'.
    wa_fieldcat-col_pos = 3.
    APPEND wa_fieldcat TO it_fieldcat.
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'MATNR'.
    wa_fieldcat-scrtext_m = 'Material Number'.
    wa_fieldcat-col_pos = 4.
    APPEND wa_fieldcat TO it_fieldcat.
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'MENGE'.
    wa_fieldcat-scrtext_m = 'PO quantity'.
    wa_fieldcat-col_pos = 5.
    APPEND wa_fieldcat TO it_fieldcat.
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'MEINS'.
    wa_fieldcat-scrtext_m = 'Order Unit'.
    wa_fieldcat-col_pos = 6.
    APPEND wa_fieldcat TO it_fieldcat.
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'NETPR'.
    wa_fieldcat-scrtext_m = 'Net Price'.
    wa_fieldcat-edit = 'X'. "sets whole column to be editable
    wa_fieldcat-col_pos = 7.
    wa_fieldcat-outputlen = 15.
    wa_fieldcat-datatype = 'CURR'.
    APPEND wa_fieldcat TO it_fieldcat.
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'PEINH'.
    wa_fieldcat-scrtext_m = 'Price Unit'.
    wa_fieldcat-col_pos = 8.
    APPEND wa_fieldcat TO it_fieldcat.
    CLEAR wa_fieldcat.
    ENDFORM. " BUILD_FIELDCATALOG
    *& Form BUILD_LAYOUT
    Build layout for ALV grid report
    FORM build_layout.
    Set layout field for field attributes(i.e. input/output)
    gd_layout-stylefname = 'FIELD_STYLE'.
    gd_layout-zebra = 'X'.
    ENDFORM. " BUILD_LAYOUT
    *& Form DISPLAY_ALV_REPORT
    Display report using ALV grid
    FORM display_alv_report.
    gd_repid = sy-repid.
    call function 'REUSE_ALV_GRID_DISPLAY'
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
    i_callback_program = gd_repid
    i_callback_user_command = 'USER_COMMAND'
    is_layout_lvc = gd_layout
    it_fieldcat_lvc = it_fieldcat
    i_save = 'X'
    TABLES
    t_outtab = it_ekko
    EXCEPTIONS
    program_error = 1
    OTHERS = 2.
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDFORM. " DISPLAY_ALV_REPORT
    *& Form DATA_RETRIEVAL
    Retrieve data form EKPO table and populate itab it_ekko
    FORM data_retrieval.
    SELECT ebeln ebelp statu aedat matnr menge meins netpr peinh
    UP TO 10 ROWS
    FROM ekpo
    INTO CORRESPONDING FIELDS OF TABLE it_ekko.
    ENDFORM. " DATA_RETRIEVAL
    *& Form set_specific_field_attributes
    populate FIELD_STYLE table with specific field attributes
    form set_specific_field_attributes .
    DATA ls_stylerow TYPE lvc_s_styl .
    DATA lt_styletab TYPE lvc_t_styl .
    Populate style variable (FIELD_STYLE) with style properties
    The NETPR field/column has been set to editable in the fieldcatalog...
    The following code sets it to be disabled(display only) if 'NETPR'
    is gt than 10.
    LOOP AT it_ekko INTO wa_ekko.
    IF wa_ekko-netpr GT 10.
    ls_stylerow-fieldname = 'NETPR' .
    ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
    "set field to disabled
    APPEND ls_stylerow TO wa_ekko-field_style.
    MODIFY it_ekko FROM wa_ekko.
    ENDIF.
    ENDLOOP.
    endform. " set_specific_field_attributes
    REWARD POINTS IF usefful !!

  • Editable column in tree with columns

    Hello,
    I’m constructing a tree with columns with CL_GUI_COLUMN_TREE class and I want to set one of the columns as text type and editable.
    ¿Do you know how? If I could do it with another class I would also be glad to try it.
    Thanks.

    Hi,
    Please refer the links,
    Tree element: How to make nodes editable
    CL_GUI_COLUMN_TREE editable?
    Regards,
    Hema.
    Reward points if it is useful.

  • IR - Column with leading Zeros issue

    Hello,
    I've got an IR report which includes as "default report settings" 1 column with leading 0s. In order to export to Excel that column as text rather than as a numeric I followed a workaround proposed before in this forum (excel copy drops leading zeros
    In essence this workaround is to create an identifical column but in "excel text format" and display the columns depending on the request value: INSTR(NVL(:REQUEST,'YABBADABBADO'),'CSV') <> 0 for example.
    This works just fine for the default report.
    The problem arise when a user creates his own customise report that includes the mentioned column and saves it as a named report. Here, when the results are exported to excel the "excel" column does not appear.
    In fact, just hiding one of the displayed columns produces the same undesired result.
    I would appreciate any comments or suggestions.
    Many thanks
    Edited by: Javier Gil on Jul 20, 2010 7:52 AM

    I have found a better method. In your IR query:
    SELECT LPAD(v.vendor, 7, ' ') vendor,
    /*Just LPAD to a length of the column defined in the database table or to 7, whichever is greater. */
    FROM v, r
    WHERE v.VENDOR = r.VENDOR
    AND date_rcv <= to_date(:P150_CUTOFF,'yyyy/mm/dd')
    AND inv_nbr = ' '
    AND to_stores <> 'T'
    AND (V.VENDOR = RPAD(:P150_VENDOR,10,' ') OR :P150_VENDOR = 'ALL')
    When you download to Excel by Download/XLS (Request=XLS), it preserves the leading zeros.
    In the case of dates, you should LPAD 10 minimum in this format.
    LPAD(to_char(date_rcv,'MM/DD/YY'), 10, ' ') date_rcv,
    I haven’t tried it yet but I think in the case of ‘MM/DD/YYYY’, you should LPAD 12 minimum in this format.
    LPAD(to_char(date_rcv,'MM/DD/YYYY'), 12, ' ') date_rcv,
    Drawbacks of this method:
    Since the string has leading white spaces, you cannot use the filter for the ‘=’ comparison operator. Even filtering using leading white spaces will not return anything. You must use the LIKE and NOT LIKE operator instead.
    Advantages of this method over the original one I posted yesterday:
    1)     You do not have to create another column for download, just one column will suffice.
    2)     Even though the query has leading white spaces, they will not display in the IR region.
    Edited by: richardlee on Aug 5, 2010 11:10 AM
    Edited by: richardlee on Aug 5, 2010 11:16 AM

  • Edit column issue in Premiere Elements 9

    Is there an issue with the Edit Column feature in the project window of Premiere Elements 9?
    When I add a Description or Comment column, changes are not saved when I close and reopen the program.
    Also, I cannot write any text in these columns to describe my videos (if I click on the space for writing comments, it just opens up a window to view the video) whereas I was able to do it with version 4 and earlier.
    I am using the trial version before buying and would like to know if the purchased version has this problem or not and if it can be fixed?

    I could be mis-remembering, but I think that Steve Grisetti has confirmed about what you indicate. I do not know if this was some sort of change in Adobe's thinking, and they did not clean up after themselves, or if this is just a Bug, that needs to be addressed.
    Personally, I would file a Bug Report, with the full details, and hope to get a fix in the works.
    Also, if I am mis-remembering, I am sure that Steve G. will correct me.
    Good luck,
    Hunt

  • Indices and constraints on XML Tables/Columns (with Schema)

    Hi,
    I've read a lot of documents by know, but the more I read the more I got confused. So I hope you can help me.
    Frist my Oracle Server Version: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit
    I've manages to create a table with a column with the type SYS.XMLTYPE and the storage modle "Object Relational" with an XML Schema.
    I can insert data and I can execute XQuery statements.
    I can also create an XMLTYPE table with my Schema, althoug the tool SQL Developer keeps telling me, that the one column wich is generated within the table is of the type CLOB instead of object realtional (which is what I defined).
    The query for that is:
    CREATE TABLE ENTRY_XML OF XMLTYPE
    XMLTYPE STORE AS OBJECT RELATIONAL
    XMLSCHEMA "BBMRI_Entry.xsd" ELEMENT "Entry";
    That's where I am, now my questions:
    1. What's the difference? I'm aware of the obviouse difference, that with the first way I can add relational columns as well, but apart from that? If I only want to store the xml data, is the second approach always better (especially in regard to my next question)?
    2. My schema contains elements with attributes (which contain IDs), which have to be unique. So I tried to add a UNIQUE constraint, but failed. I found this (http://www.oracle.com/technology/sample_code/tech/java/codesnippet/xmldb/constraints/Specify_Constraints.html), but it just doesn't work.
    Query: "ALTER TABLE ENTRY_XML CONSTRAINT ENTRY_XML_SUBID_UNQIUE UNIQUE (xmldata."SubId");"
    Error: "ORA-01735: invalid ALTER TABLE option"
    3. I didn't try yet, but I need to specifiy foreign keys within the XML as well (which is explained in the link at question 2). I guess the solution to question 2 will make this possible as well.
    4. Since I can create a UNIQUE constaint for attributes (well, I can't yet, but I hope that this will change soon) I woundered if it would be possible to realize something like auto_increment. Although I see the problem with validating the xml input if the Ids are empty. Any suggestions on that problem? Do I have to query for the highest (free) id before I can insert the new documents?
    Well, that's enough for today, I hope someone can help me!
    Greetings, Florian

    I've read through all the literature (again) and found out, that I did most of the stuff right in the first place. I just missinterpreted the generated tables for the types and wondered why they only contained one column. Well, at least one mistery solved.
    But know to make it easier just one question, which might solve all problems I have:
    How can I create UNIQUE constraints and FOREIGN KEYS when I have a table or column of the type XmlType with a schema using the object relational storage method?
    I found a solution http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14259/xdb05sto.htm#i1042421 (Example 5-12), but it just does not work for me.
    I removed the FOREIGN KEY and tried it again and the UNIQUE Key works.
    So basically the question is how to retrieve the "AId" Attribute. "XMLDATA"."AId", "XMLDATA"."Attribute"."AId" and "XMLDATA"."Subject"."Attribute"."AId" all do not work.
    I've added my schema declarations at the bottom (which I've already successfully registred and used without foreign keys and constraints, so they work).
    After I've registered the two schema files 3 types and 11 tables where created. One type for the attribute, one for the study type and one probably to link the attributes to the study types. The tables are one for the attribute, 4 for the content*-elements, 2 for the study type (I don't really know why two) and 4 with strange names starting with "SYS_NT" and then some random numbers and letters (looks alot like some base64 encoded string).
    The Query I try to use to create the table is: (The table "Attribute" already exists and contains a field "ID", which is it's PK.)
    CREATE TABLE STUDYTYPE_XML
    OF XMLType (UNIQUE ("XMLDATA"."STId"),
    FOREIGN KEY ("XMLDATA"."AId") REFERENCES ATTRIBUTE(ID))
    XMLTYPE STORE AS OBJECT RELATIONAL
    ELEMENT "StudyType.xsd#StudyType";
    The error I get is:
    Error starting at line 1 in command:
    CREATE TABLE STUDYTYPE_XML
    OF XMLType (UNIQUE ("XMLDATA"."STId"),
    FOREIGN KEY ("XMLDATA"."AId") REFERENCES ATTRIBUTE(ID))
    ELEMENT "StudyType.xsd#StudyType"
    Error at Command Line:3 Column:37
    Error report:
    SQL Error: ORA-22809: nonexistent attribute
    22809. 00000 - "nonexistent attribute"
    Cause: An attempt was made to access a non-existent attribute of an
    object type.
    Action: Check the attribute reference to see if it is valid. Then retry
    the operation.
    Attribute-Schema (Attribute.xsd):
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
         <xs:attribute name="AId">
              <xs:simpleType>
                   <xs:restriction base="xs:integer">
                        <xs:minInclusive value="0" />
                   </xs:restriction>
              </xs:simpleType>
         </xs:attribute>
         <xs:attribute name="Name" type="xs:string" />
         <xs:element name="ContentString" type="xs:string" />
         <xs:element name="ContentInteger" type="xs:integer" />
         <xs:element name="ContentDouble" type="xs:decimal" />
         <xs:element name="ContentDate" type="xs:date" />
         <xs:element name="Attribute">
              <xs:complexType>
                   <xs:choice minOccurs="0" maxOccurs="1">
                        <xs:element ref="ContentString" />
                        <xs:element ref="ContentInteger" />
                        <xs:element ref="ContentDouble" />
                        <xs:element ref="ContentDate" />
                   </xs:choice>
                   <xs:attribute ref="AId" use="required" />
                   <xs:attribute ref="Name" use="optional" />
              </xs:complexType>
         </xs:element>
    </xs:schema>
    Study Type Schema (StudyType.xsd):
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
         <xs:include schemaLocation="Attribute.xsd" />
         <xs:attribute name="STId">
              <xs:simpleType>
                   <xs:restriction base="xs:integer">
                        <xs:minInclusive value="0" />
                   </xs:restriction>
              </xs:simpleType>
         </xs:attribute>
         <xs:element name="StudyType">
              <xs:complexType>
                   <xs:sequence>
                        <xs:element ref="Attribute" minOccurs="1" maxOccurs="unbounded" />
                        <xs:element ref="StudyType" minOccurs="0" maxOccurs="unbounded" />
                   </xs:sequence>
                   <xs:attribute ref="STId" use="required"/>
              </xs:complexType>
         </xs:element>
    </xs:schema>
    Edited by: alwaysspam on Sep 8, 2010 5:35 PM

  • Dynamic Columns with dynamic header colspans

    Hi All,
    Our project requires creation of dynamic data table at runtime. Following are the requirements.
    1.The number of columns and column headers should be dynamic. Basically the column headers are the Month names.
    2.Some or All of the above displayed months can be further split into 3 columns based on further values selected by the user. The months to be split into 3 columns will be identified only at runtime based on some calculations. When this happens, that particular month header should span 3 columns and an additional header for the 3 split columns have to be displayed. Check the screen shot below.
    ----------------------------------------------------------------------------------|-------------|
    Year: 2008 | Year: 2009 |
    ----------------------------------------------------------------------------------|-------------|
    |Current Month | | |
    -------------------------------------|--------------|-----------------------------|-------------|
    Sep | Oct | Nov | Dec | Year Total| Jan |
    ------------------|------------------|--------------|-----------------|-----------|-------------|
    | | |2008 |2009 |Total| | |
    ------------------|------------------|--------------|-----|-----|-----|-----------|-------------|
    Old |New |Total|Old |New |Total | | | | | | |
    Value|Value | |Value|Value| | | | | | | |
    -----|------|-----|-----|-----|------|--------------|-----|-----|-----|-----------|-------------|
    xx | xx | xx | xx | xx | xx | xx | xx | xx | xx | xx | xx |
    -------------------------------------------------------------------------------------------------Points to be noted:
    1.The colspan for the Year header is dynamic based on the months displayed for the previous, current, next year.
    2.The &lsquo;Current Month&rsquo; header is dynamic based on the month selected in the drop-down.
    3.The colspan for the month is dynamic based on whether it is displaying single column or 3 columns
    4.The header for the 3-column split is dynamic based on which are the months to be displayed with 3-column split.
    5. Irrespective of the month selected, DEC is always split into 3 columns.
    Is this achievable in JSF? Please let me know if anyone has worked on a similar requirement.
    Thanks and Regards,
    Anitha.

    Hi charishma/Raymond,
    Thanks for your response.
    charishma,
    I checked the link you provided and the code in that page. For me it looks like the colspan and rowspan are set by the user. Can it be done dynamically? I am still not in the development phase. I am still evaluating the possibilities. So it would be great if you can tell me if my requirements will be met with rich faces.
    Raymond,
    I am still in the evalution phase of whether this requirement is possible or not?
    In short, my requirement is to display columns dynamically. Based on certain conditions, each of the column can be further split to 3 more columns with 3 sub-headers below the main header. There are 4-5 rows of headers available for which the colspan has to be calculated dynamically depending on the total number of columns.
    The columns should be editable. i.e., the columns contain textboxes where the user can enter data. Again, the editable columns and non-editable columns are determined at run-time based on certain calculations.
    Is this possible? If not, i need reasoning as to why it is not acheivable.
    If it is not at all posible then the client is ready to compromise on the editing part. That is, data entry can be in a pop-up whereas, the the datatable should just display the data dynamically so as to print it for a report.
    Please let me know the possibility of this requirement.
    Thanks and Regards,
    Anitha.

  • How to Insert a User Defined Column with CheckBox In ADF Swings

    I have create JTable by dragging a view object from Data Control Palette .But apart from columns listed in JTable i need to insert a User Defined column with Check Box selection option in each row .
    Can any one help me out to sort the problem.
    Regards
    Bhanu Prakash
    Message was edited by:
    user579125

    I retrieve 10 column from Database and build JTable. But apart from 10 column displayed i need to display one more column( User Defined) at run time with the check box option for each row . Because on select of corresponding check box i need to do some mathematical calculation. add also How do i know whether check box is selected or not.
    Regards
    Bhanu Prakash

  • Editable columns in table don't select the whole row

    I am new to the forums and posted this to the wrong one the first time and I am not sure how to move it so I am just reposting it here. Sorry.
    I have a table with 7 columns. 2 of them are non-editable and the rest are either radio buttons or check boxes. When I click on the 2 non-editable columns, the whole row gets highlighted. When I click on any of the editable columns, the button is selected, but the whole row is not highlighted. If I made the editable columns non-editable then the whole row gets highlighted when the column is clicked on. I want the button selected and the row highlighted when the editable columns are clicked on. Here is some relevant code:
    class PackageTable extends JPanel
        public PackageTable(String pathfile)
           fieldsok = true;
           errorfield = new JTextField(250);
           startfield = new JTextField(250);
           stopfield = new JTextField(250);
           tableModel = new MyTableModel();
           table = new JTable(tableModel)
             public Component prepareRenderer(TableCellRenderer renderer, int rowIndex, int vColIndex)
               Component c = super.prepareRenderer(renderer, rowIndex, vColIndex);
               if (vColIndex == 0)
                 c.setBackground(new Color(238,238,238));
               else
                 c.setBackground(new Color(255,255,255));
               boolean selected = isRowSelected(rowIndex);
               if (selected)
                 c.setBackground(Color.yellow);
               return c;
           table.setPreferredScrollableViewportSize(new Dimension(300, 1000));
           table.setRowSelectionAllowed(true);
           table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
           TableColumn column = null;
           for (int col = 0; col < 7; col++)
              column = table.getColumnModel().getColumn(col);
              if (col == 0)
                column.setPreferredWidth(30);
              else if (col == 1)
                column.setPreferredWidth(300);
              else if (col == 2)
                column.setPreferredWidth(10);
                column.setCellRenderer(new RadioButtonRenderer());
                column.setCellEditor(new RadioButtonEditor(new JCheckBox()));
              else if (col == 3)
                column.setPreferredWidth(10);
                column.setCellRenderer(new RadioButtonRenderer());
                column.setCellRenderer(new RadioButtonRenderer());
                column.setCellEditor(new RadioButtonEditor(new JCheckBox()));
              else if (col == 4)
                column.setPreferredWidth(10);
                column.setCellRenderer(new RadioButtonRenderer());
                column.setCellEditor(new RadioButtonEditor(new JCheckBox()));
              else if ((col == 5) || (col == 6))
                column.setPreferredWidth(10);
      class RadioButtonRenderer implements TableCellRenderer
        public Component getTableCellRendererComponent(JTable table,Object value,boolean isSelected,boolean hasFocus,int row,int column)
          if (isSelected)
            setForeground(table.getSelectionForeground());
            setBackground(table.getSelectionBackground());
          else
            setForeground(table.getForeground());
            setBackground(table.getBackground());
          if (value == null)
            return null;
          return (Component) value;
      class RadioButtonEditor extends DefaultCellEditor implements ItemListener
        private JRadioButton button;
        public RadioButtonEditor(JCheckBox checkBox)
          super(checkBox);
        public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column)
          if (value == null)
            return null;
          button = (JRadioButton) value;
          button.addItemListener(this);
          return (Component) value;
        public void addCellEditorListener(CellEditorListener listener)
          listenerList.add(CellEditorListener.class, listener);
        public void removeCellEditorListener(CellEditorListener listener)
          listenerList.remove(CellEditorListener.class, listener);
        protected void fireEditingStopped()
          CellEditorListener listener;
          Object[] listeners = listenerList.getListenerList();
          for (int i = 0; i < listeners.length; i++)
            if (listeners[i] == CellEditorListener.class)
              listener = (CellEditorListener)listeners[i+1];
              listener.editingStopped(changeEvent);
        protected void fireEditingCanceled()
          CellEditorListener listener;
          Object[] listeners = listenerList.getListenerList();
          for (int i = 0; i < listeners.length; i++)
            if (listeners[i] == CellEditorListener.class)
              listener = (CellEditorListener)listeners[i+1];
              listener.editingCanceled(changeEvent);
        public void cancelCellEditing()
          fireEditingCanceled();
        public boolean stopCellEditing()
          fireEditingStopped();
          return true;
        public Object getCellEditorValue()
          return button;
        public boolean isCellEditable(EventObject event)
          return true;
        public boolean shouldSelectCell(EventObject event)
          return true;
        public void itemStateChanged(ItemEvent e)
          super.fireEditingStopped();
      class MyTableModel extends AbstractTableModel
        String[] columnNames = {"","Configuration Files","Sorts","Plots","Both","Print","Alerts"};
        public MyTableModel() { }
        public int getColumnCount()
          return columnNames.length;
        public int getRowCount()
          return totaldata.size();
        public String getColumnName(int col)
          return columnNames[col];
        public Object getValueAt(int row,int col)
          return(((Vector)totaldata.get(row)).get(col));
        public Class getColumnClass(int c)
          return getValueAt(0, c).getClass();
        public boolean isCellEditable(int row, int col)
          if ((col == 0) || (col == 1))
            return false;
          else
            return true;
        public void setValueAt(Object value, int row, int col)
          Vector v1 = new Vector();
          v1 = (Vector)totaldata.get(row);
          v1.set(col,value);
          if (col == 1)
             if (((String)value).indexOf("/") == -1)
               JOptionPane.showMessageDialog(pdsframe, "The CONFIG file that was entered on line " + (row+1) + " is not valid.");
               v1.set(col,(Object)"");
               return;
          fireTableCellUpdated(row, col);
          fireTableChanged(new TableModelEvent(this));
        public void addNewRow(Vector newRow)
          totaldata.add(newRow);
          fireTableRowsInserted(totaldata.size()-1, totaldata.size()-1);
        public void deleteRow(int Row)
          totaldata.remove(Row);
          fireTableRowsDeleted(totaldata.size()-1, totaldata.size()-1);
      }I have searched forever to try to find how to do this and I can't seem to get it right. If all the radiobuttons in one column are selected and I click on one of those rows in one of those columns, then the whole row is highlighted.
    Can anyone help me out?
    Thanks.
    esk3 {                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

    Sorry. I didn't know that I had to provide something that could be executed. I am going to try to put enough in so that it can. This is part of a larger program and this frame is called from another frame. Here it is. I hope it works.
    import java.io.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.Dimension.*;
    import java.util.*;
    import java.text.*;
    // Java extension packages
    import javax.swing.*;
    import javax.swing.event.*;
    import javax.swing.border.*;
    import javax.swing.table.*;
    import javax.swing.JTable.*;
    import javax.swing.JScrollPane.*;
      private JFrame     pdsframe;
      private String printchecked;
      private String alertschecked;
      private JTextField cb;
      private JTextField pf;
      private JScrollPane scrollpane;
      private JTable table;
      private MyTableModel tableModel;
      private Vector totaldata;
      private JLabel startlabel;
      private JLabel stoplabel;
      private JTextField startfield;
      private JTextField stopfield;
      private JTextField errorfield;
      private boolean fieldsok;
      class MyTableModel extends DefaultTableModel
        String[] columnNames = {"","Configuration Files","Sorts","Plots","Both","Print","Alerts"};
        public MyTableModel() { }
        public int getColumnCount()
          return columnNames.length;
        public int getRowCount()
          return totaldata.size();
        public String getColumnName(int col)
          return columnNames[col];
        public Object getValueAt(int row,int col)
          return(((Vector)totaldata.get(row)).get(col));
        public Class getColumnClass(int c)
          return getValueAt(0, c).getClass();
        public boolean isCellEditable(int row, int col)
          if ((col == 0) || (col == 1))
            return false;
          else
            return true;
        public void setValueAt(Object value, int row, int col)
          Vector v1 = new Vector();
          v1 = (Vector)totaldata.get(row);
          v1.set(col,value);
          if (col == 1)
             if (((String)value).indexOf("/") == -1)
               JOptionPane.showMessageDialog(pdsframe, "The CONFIG file that was entered on line " + (row+1) + " is not valid.");
               v1.set(col,(Object)"");
               return;
          fireTableCellUpdated(row, col);
          fireTableChanged(new TableModelEvent(this));
        public void addNewRow(Vector newRow)
          totaldata.add(newRow);
          fireTableRowsInserted(totaldata.size()-1, totaldata.size()-1);
        public void deleteRow(int Row)
          totaldata.remove(Row);
          fireTableRowsDeleted(totaldata.size()-1, totaldata.size()-1);
      class RadioButtonRenderer implements TableCellRenderer
        public Component getTableCellRendererComponent(JTable table,Object value,boolean isSelected,boolean hasFocus,int row,int column)
          if (isSelected)
            setForeground(table.getSelectionForeground());
            setBackground(table.getSelectionBackground());
          else
            setForeground(table.getForeground());
            setBackground(table.getBackground());
          if (value == null)
            return null;
          return (Component) value;
      class RadioButtonEditor extends DefaultCellEditor implements ItemListener
        private JRadioButton button;
        public RadioButtonEditor(JCheckBox checkBox)
          super(checkBox);
        public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column)
          if (value == null)
            return null;
          button = (JRadioButton) value;
          button.addItemListener(this);
          return (Component) value;
        public void addCellEditorListener(CellEditorListener listener)
          listenerList.add(CellEditorListener.class, listener);
        public void removeCellEditorListener(CellEditorListener listener)
          listenerList.remove(CellEditorListener.class, listener);
        protected void fireEditingStopped()
          CellEditorListener listener;
          Object[] listeners = listenerList.getListenerList();
          for (int i = 0; i < listeners.length; i++)
            if (listeners[i] == CellEditorListener.class)
              listener = (CellEditorListener)listeners[i+1];
              listener.editingStopped(changeEvent);
        protected void fireEditingCanceled()
          CellEditorListener listener;
          Object[] listeners = listenerList.getListenerList();
          for (int i = 0; i < listeners.length; i++)
            if (listeners[i] == CellEditorListener.class)
              listener = (CellEditorListener)listeners[i+1];
              listener.editingCanceled(changeEvent);
          }      fireEditingStopped();
          return true;
        public Object getCellEditorValue()
          return button;
        public boolean isCellEditable(EventObject event)
          return true;
        public boolean shouldSelectCell(EventObject event)
          return true;
        public void itemStateChanged(ItemEvent e)
          super.fireEditingStopped();
      class PackageTable extends JPanel
        public PackageTable(String pathfile)
           fieldsok = true;
           errorfield = new JTextField(250);
           startfield = new JTextField(250);
           stopfield = new JTextField(250);
           tableModel = new MyTableModel();
           table = new JTable(tableModel)
             public Component prepareRenderer(TableCellRenderer renderer, int rowIndex, int vColIndex)
               Component c = super.prepareRenderer(renderer, rowIndex, vColIndex);
               if (vColIndex == 0)
                 c.setBackground(new Color(238,238,238));
               else
                 c.setBackground(new Color(255,255,255));
               boolean selected = isRowSelected(rowIndex);
               if (selected)
                 c.setBackground(Color.yellow);
               return c;
           table.setPreferredScrollableViewportSize(new Dimension(300, 1000));
           table.setRowSelectionAllowed(true);
           table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
           TableColumn column = null;
           for (int col = 0; col < 7; col++)
              column = table.getColumnModel().getColumn(col);
              if (col == 0)
                column.setPreferredWidth(30);
              else if (col == 1)
                column.setPreferredWidth(300);
              else if (col == 2)
                column.setPreferredWidth(10);
                column.setCellRenderer(new RadioButtonRenderer());
                column.setCellEditor(new RadioButtonEditor(new JCheckBox()));
              else if (col == 3)
                column.setPreferredWidth(10);
                column.setCellRenderer(new RadioButtonRenderer());
                column.setCellEditor(new RadioButtonEditor(new JCheckBox()));
              else if (col == 4)
                column.setPreferredWidth(10);
                column.setCellRenderer(new RadioButtonRenderer());
                column.setCellEditor(new RadioButtonEditor(new JCheckBox()));
              else if ((col == 5) || (col == 6))
                column.setPreferredWidth(10);
          JScrollPane scrollPane = new JScrollPane(table);
          scrollPane.setBounds(20,180,1000,300);
          JLabel pflabel = new JLabel("Package File: ");
          pf = new JTextField(pathfile);
          cb = new JTextField(250);
          startlabel = new JLabel("START_TIME = ");
          stoplabel = new JLabel("STOP_TIME = ");
          JLabel typelabel = new JLabel("TYPE OF FORMAT TO OUTPUT");
          JButton savebutton = new JButton("Save and Run");
          JButton jbtAddRow = new JButton("Add New Row");
          JButton jbtUpdateRow = new JButton("Update Row");
          JButton jbtDeleteRow = new JButton("Delete Row");
          JButton cancelbutton = new JButton("Cancel");
          cb.setEditable(false);
          cb.setBounds(130,230,100,30);
          cb.setEnabled(false);
          cb.setVisible(false);
          pflabel.setBounds(20,20,100,30);
          pf.setEditable(false);
          pf.setBounds(130,20,300,30);
          startlabel.setBounds(20,90,100,30);
          startfield.setEditable(false);
          startfield.setBackground(new Color(255,255,255));
          startfield.setBounds(130,90,300,30);
          stoplabel.setBounds(20,120,100,30);
          stopfield.setEditable(false);
          stopfield.setBackground(new Color(255,255,255));
          stopfield.setBounds(130,120,300,30);
          typelabel.setBounds(525,150,400,30);
          savebutton.setBounds(130,500,130,30);
          jbtAddRow.setBounds(280,500,130,30);
          jbtUpdateRow.setBounds(430,500,130,30);
          jbtDeleteRow.setBounds(580,500,130,30);
          cancelbutton.setBounds(730,500,130,30);
          add(scrollPane);
          add(pflabel);
          add(pf);
          add(startlabel);
          add(stoplabel);
          add(startfield);
          add(stopfield);
          add(typelabel);
          add(jbtAddRow);
          add(jbtUpdateRow);
          add(jbtDeleteRow);
          add(savebutton);
          add(cancelbutton);
      public void createAndShowGUI() {
        //Create and set up the window.
        pdsframe = new JFrame("PDS Batch Parameters");
        pdsframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        totaldata = new Vector();
        //Create and set up the content pane.
        PackageTable newContentPane = new PackageTable(pathfile);
        newContentPane.setOpaque(true); //content panes must be opaque
        pdsframe.setContentPane(newContentPane);
        //Display the window.
        pdsframe.setLayout(null);
        pdsframe.setSize(1100,700);
        pdsframe.setLocationRelativeTo(null);
        pdsframe.setFocusableWindowState(true);
        pdsframe.setVisible(true);
        pdsframe.show();
        pdsframe.setAlwaysOnTop(true);
        pdsframe.requestFocus();
    public void main()
        Toolkit.getDefaultToolkit().beep();
        createAndShowGUI();
    }Does this help? I hope it works. These are the relevant parts. Thanks.
    esk3

  • Editable column in table

    Hello, i want to update several objetcs at the same time. I ve a adf table with one editable column. I want that when i press save, the modified data on the column get commited. I am using EJB, Pojos and toplink.
    Can i use the mergeObject() function or do i have to make a custom method on the EJB to update the objetcs? how can i go through all the rows on the table?
    Thanks.

    I realized that when we use mergeEntity() we bind something like AnIteratorIter.currentRow.dataprovider to it
    If i change programatically the current row in the table and then call mergeEntity() could it work?
    My problem is that i am not very sure how to change the current row programatically so the binding on mergeEntity() works.

  • Create a logical column with more than one data source

    I'm having a problem to create a logical column with more than one data source in Siebel 7.8.
    What I want to do is the union of 2 physical tables in one logical table.
    For example, I have a "local_clients" table and a "abroad_clients" table. What I want is to have a logical table "clients" with the client data from the 2 tables.
    What I've tried is dragging the datasources I need onto the logical column.
    However this isn't working because it only retrieves the data from the first data source.

    Hi!
    I think it is not possible to do this just by dragging the columns to the logical table. A logical table can have more than one source, but I think each column must have just one direct source column.
    I'm not sure, but maybe you should do the UNION SQL to get the data of the two tables. In the physical layer, when you create a new physical table, it's possible to set the "table type" as a "SELECT". I didn't try that, but it seems that it's possible to have the union table in the physical layer.
    Bye.
    Message was edited by:
    user578388

  • Saving editable column contents in Std. Table using ALV

    Hi All,
       I developed a ALV report which displays list of sales orders of particular customer, in this report created by name is editable column. Now i want to save the created by name after user changes the contents of this column and click on save button. I am getting all the data to be saved in field "RS_SELFIELD" (RS_SELFIELD TYPE SLIS_SELFIELD)  Kindly help me to get out of this issue.  
    Advance thanks for your response.

    Try this code.
    FORM user_command  USING    r_ucomm LIKE sy-ucomm
                               rs_selfield TYPE slis_selfield.
    * Local data declaration
      DATA: li_tab TYPE REF TO data,
            l_line TYPE REF TO data.
    * Local field-symbols
      FIELD-SYMBOLS:<l_tab> TYPE table,
                    <l_wa>  TYPE ANY.
    * Create table
      CREATE DATA li_tab TYPE STANDARD TABLE OF (p_table).
      ASSIGN li_tab->* TO <l_tab>.
    * Create workarea
      CREATE DATA l_line LIKE LINE OF <l_tab>.
      ASSIGN l_line->* TO <l_wa>.
      CASE r_ucomm.
    *   When a record is selected
        WHEN '&IC1'.
    *     Read the selected record
          READ TABLE <dyn_table> ASSIGNING <dyn_wa> INDEX
          rs_selfield-tabindex.
          IF sy-subrc = 0.
    *       Store the record in an internal table
            APPEND <dyn_wa> TO <l_tab>.
    *       Fetch the field catalog info
            CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
              EXPORTING
                i_program_name         = 'Z_DEMO_ALV'
                i_structure_name       = p_table
              CHANGING
                ct_fieldcat            = i_fieldcat
              EXCEPTIONS
                inconsistent_interface = 1
                program_error          = 2
                OTHERS                 = 3.
            IF sy-subrc = 0.
    *         Make all the fields input enabled except key fields
              w_field-input = 'X'.
              MODIFY i_fieldcat FROM w_field TRANSPORTING input
              WHERE key IS INITIAL.
            ENDIF.
    *       Display the record for editing purpose
            CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
              EXPORTING
                i_callback_program    = sy-repid
                i_structure_name      = p_table
                it_fieldcat           = i_fieldcat
                i_screen_start_column = 10
                i_screen_start_line   = 15
                i_screen_end_column   = 200
                i_screen_end_line     = 20
              TABLES
                t_outtab              = <l_tab>
              EXCEPTIONS
                program_error         = 1
                OTHERS                = 2.
            IF sy-subrc = 0.
    *         Read the modified data
              READ TABLE <l_tab> INDEX 1 INTO <l_wa>.
    *         If the record is changed then track its index no.
    *         and populate it in an internal table for future
    *         action
              IF sy-subrc = 0 AND <dyn_wa> <> <l_wa>.
                <dyn_wa> = <l_wa>.
                i_index = rs_selfield-tabindex.
                APPEND i_index.
              ENDIF.
            ENDIF.
          ENDIF.
    *   When save button is pressed
        WHEN 'SAVE'.
    *     Sort the index table
          SORT i_index.
    *     Delete all duplicate records
          DELETE ADJACENT DUPLICATES FROM i_index.
          LOOP AT i_index.
    *       Find out the changes in the internal table
    *       and populate these changes in another internal table
            READ TABLE <dyn_table> ASSIGNING <dyn_wa> INDEX i_index.
            IF sy-subrc = 0.
              APPEND <dyn_wa> TO <dyn_tab_temp>.
            ENDIF.
          ENDLOOP.
    *     Lock the table
          CALL FUNCTION 'ENQUEUE_E_TABLE'
            EXPORTING
              mode_rstable   = 'E'
              tabname        = p_table
            EXCEPTIONS
              foreign_lock   = 1
              system_failure = 2
              OTHERS         = 3.
          IF sy-subrc = 0.
    *       Modify the database table with these changes
            MODIFY (p_table) FROM TABLE <dyn_tab_temp>.
            REFRESH <dyn_tab_temp>.
    *       Unlock the table
            CALL FUNCTION 'DEQUEUE_E_TABLE'
              EXPORTING
                mode_rstable = 'E'
                tabname      = p_table.
          ENDIF.
      ENDCASE.
      rs_selfield-refresh = 'X'.
    ENDFORM.                    "user_command

Maybe you are looking for