Need custom column widths in Append Text Table to Report

I need to print reports with tables of different column widths specified for each column, as the contained fields vary in width from just 3 characters in one column to 40 characters in another.  Also we are trying to match the reports generated by a non-labview routine.  In the past I have been able to achieve this by editing the Append Table to Report vi, working my way through the inner hierarchy to replace the DBL numeric COLUMN WIDTH control with a DBL numeric array.  The innermost vi, Set Table Column Width, assigns the numeric to a property node in a for loop, so the change is simple: replace the scalor with an array and enable indexing on the for loop.  Of course, after each Labview upgrade, I've had to go back in and repeat these edits on the overwritten upgraded vi's.  This time there is a problem.  The new version of this toolkit is object oriented, and disturbing these vi's wrecks the class methods in a way I don't understand (mostly because I've had no dealings with object oriented programming) and which cannot be undone.  I recently tried this and after not being able to fix the problem even with phone support, I had to spend the next two days unistalling and reinstalling Labview!  I desperately need a way to achieve this functionality without killing the toolkit, which is used (in its original functionality) by another absolutely critical program.  PLEASE HELP!
The hierarchy is as follows:
NI report.lvclass:Append Table to Report (wrap)
NI report.lvclass:Append Table to Report 
NI Standard report.lvclass:Append Text Table to Report
NI Standard report.lvclass:tables
NI Report Generation Core.lvlibet Table Column Width

There is a highly relevant thread under discussion here:
http://forums.ni.com/ni/board/message?board.id=fea​tures&thread.id=429
You may wish to read it and chime in as it is a discussion of LabVIEW's policy (and possible change in policy for the future) concerning the handling of non-palette VIs between LV versions.
Rob Hingle wrote:
> Is that to say NI will not be helping me with this?  Pretty disappointing lack of support, seems
> like a terrible idea to go to object oriented if even your own application engineers can't figure
> out such a simple fix.  Gotta give NI a huge thumbs down on this one, thanks for nothing.
I doubt that it is a simple fix -- our AEs are generally top notch at figuring out solutions for customers -- if it were simple, my bet is they'd have solved it. Asking an AE to work around a bug is different from asking them to rearchitect the toolkit. You are asking them to add a feature that the new version of the toolkit is not
designed to support. The difficulty in doing this is completely independent of the decision to use LabVIEW classes to implement the toolkit. If any piece of software is not designed with a particular use case in mind, what may be a simple tweak under one design may become a very hard problem under another design.
In your case, the solution is very straightforward: Use the older version of the toolkit. Any time you create a custom modification of the VIs that ship with LV or one of its toolkits, you should make your own copy and have your VIs link against the copy. LabVIEW promises to maintain all the public functionality version over version. Usually we succeed at that. What we do not promise is to maintain our private implementation of that functionality. It is impossible for LabVIEW (or any other software library) to maintain all of its private internal operations while still continuing any development. Using a copy of the original VIs shields you from having to recode your changes every version (something you've already mentioned is a chore) and it guarantees that functionality that you relie upon does not disappear.
I hope you are willing to be understanding of this situation and not hold it against the AEs working on this. They try hard to provide excellent customer service, and spend lots of time inventing custom solutions for our users.  This happens to be a situation where the correct fix is not to modify the new toolkit version to do something it wasn't designed to do but to modify your development process so that the problem is solved now and into the future. 

Similar Messages

  • How do you set the line spacing when using the Append Text Table to Report VI?

    I have a table of numbers which I wish to print using the report generation VI's. Since each column has a different numerical format, I first convert the number for each cell to a string with the appropriate format and then build a string array to pass to the Append Text Table to Report VI. The table is printed with double line spacing. How do I reset this for single spacing?
    Attachments:
    print_array.vi ‏112 KB

    Dave,
    The issue is not with the NI-Reports functionality, but the Array to Spreadsheet String funvtion in the for loop. Here is the context help for this function:
    "Converts an array of any dimension to a table in string form, containing tabs separating column elements, a platform-dependent EOL character separating rows, and, for arrays of three or more dimensions, headers separating pages."
    The thing to note here is that it says it adds an EOL (end of line) character at the end of every row. This is what is happening. Your first column of data has a \r\n in it and adds the second row to each data item. This in turn makes the rest of the columns have a larege blank space at the bottom so that all of the cell heights are equal. I w
    ould re-write that little bit of code so that you just do one large string concatenation of number, spaces, number, spaces, number and this should solve your issue.
    Thank you for using the Developer Zone Discussion Forums.
    Randy Hoskin
    Applications Engineer
    National Instruments
    http://www.ni.com/ask

  • Can't set custom column widths in JTable

    I'm trying to set custom columns widths. They are set as I wish but then they are reset to default values (all columns have the same size). This is caused by method JFrame.setVisible(true) which invokes JTree.setWidthsFromPreferredWidths(). It can be investigated from following stack trace printed when a column being resized (see below).
    How to prevent this auto width sizing?
    P.S. can't override JTable.setWidthsFromPreferredWidths(); seems it's private
    table = new JTable(model) {
         public void columnMarginChanged(ChangeEvent event) {
              new Exception("stack trace").printStackTrace();
              super.columnMarginChanged(event);
    // setting here custom columns widths via table column model ...java.lang.Exception: stack trace
         at mtu.gui.TrackList$1.columnMarginChanged(TrackList.java:30)
         at javax.swing.table.DefaultTableColumnModel.fireColumnMarginChanged(DefaultTableColumnModel.java:615)
         at javax.swing.table.DefaultTableColumnModel.propertyChange(DefaultTableColumnModel.java:679)
         at javax.swing.event.SwingPropertyChangeSupport.firePropertyChange(SwingPropertyChangeSupport.java:264)
         at javax.swing.event.SwingPropertyChangeSupport.firePropertyChange(SwingPropertyChangeSupport.java:232)
         at javax.swing.table.TableColumn.firePropertyChange(TableColumn.java:249)
         at javax.swing.table.TableColumn.firePropertyChange(TableColumn.java:255)
         at javax.swing.table.TableColumn.setWidth(TableColumn.java:482)
         at javax.swing.JTable$2.setSizeAt(JTable.java:2242)
         at javax.swing.JTable$5.setSizeAt(JTable.java:2336)
         at javax.swing.JTable.adjustSizes(JTable.java:2372)
         at javax.swing.JTable.adjustSizes(JTable.java:2340)
         at javax.swing.JTable.setWidthsFromPreferredWidths(JTable.java:2250) <======
         at javax.swing.JTable.doLayout(JTable.java:2165)
         at java.awt.Container.validateTree(Container.java:1089)
         at java.awt.Container.validateTree(Container.java:1096)
         at java.awt.Container.validateTree(Container.java:1096)
         at java.awt.Container.validateTree(Container.java:1096)
         at java.awt.Container.validateTree(Container.java:1096)
         at java.awt.Container.validateTree(Container.java:1096)
         at java.awt.Container.validateTree(Container.java:1096)
         at java.awt.Container.validateTree(Container.java:1096)
         at java.awt.Container.validateTree(Container.java:1096)
         at java.awt.Container.validateTree(Container.java:1096)
         at java.awt.Container.validateTree(Container.java:1096)
         at java.awt.Container.validateTree(Container.java:1096)
         at java.awt.Container.validate(Container.java:1064)
         at java.awt.Window.show(Window.java:455)
         at java.awt.Component.show(Component.java:1134)
         at java.awt.Component.setVisible(Component.java:1089) <=====
         at mtu.gui.Test.test_03(Test.java:56)
         at mtu.gui.Test.main(Test.java:29)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:324)
         at com.intellij.rt.execution.application.AppMain.main(Unknown Source)

    When I create the table I have code like this:TableColumn col = getColumnModel().getColumn(2);
    col.setMinWidth(width + 4);
    col.setMaxWidth((int)(width * 1.2));Works just fine for me. The setWidthsFromPreferredWidths() method will use these limits as far as I can see.
    PC&#178;

  • Need Customizing request instead of Workbench for Table Mainetnance

    Hello All,
    I created a ztable with Table Maintenance.
    Whenever I am creating entries using SM30 it is asking workbench request instead of customizing request.
    I need customizing request to be created for table entries.
    Can anybody help me in this regard.

    Hi Eric,
    Thanks a lot!.
    The problem is solved....
    Thank you very much for your help.
    Regards,
    Sunil

  • Open / save dialog boxes - customizing column widths

    When i open or save a doc in any of the CS5 apps, for mac, in column view, the left hand column where my projects are listed is too narrow. i see 9-10 characters. can the default width be changed so that this column will always be wider when i open those dialog boxes?

    What version of Mac OS X are you running? I just did a test in InDesign CS 5.5 running on Lion (Mac OS X 10.7.3). In Lion, the open dialog window is "sticky". When you drag the column widths in column view, they continue to open that way when you open them again.

  • Customizing column sorting in new jsf table

    The new JSF table in the creator 2 is great. I like it. It includes so many out of the box features. It is the reason we use the creator for our current project.
    But I cannot figure out how to customize the column sorting.
    Why do I need column sorting?
    I need to sort a column that can include ad IP address or a host name. Our customer can either use a host name or an IP address to address a device in the network, both in the same column.
    Now sorting an IP address is already difficult. It is actually a sort over a 4 byte number. Sorting over host names is normal alphabetic string sorting.
    How to sort over both in the same column?
    This cannot be done using standard sorting. I need to use a validator or something similar to customize the sorting of this column.
    Can anybody help me with a hint if:
    1- Customizing sorting over a column is possible. (I really would like to keep all other sorting features (icons, multi column support...)).
    2- A hint or code sample, how to do this.
    If this is not possible, I urge the creator team to think of implementing this soon. Otherwise one killer feature of the creator 2 will lose a lot of its teeth.

    Thx mayagiri for your reply!
    But including the src-code for the dataprovider package into a test project, and debugging in the creator-ide has done the thing!
    Here our solution:
    Class ToCompare is the object type which address field displayed in a page, simply containing a table with 2 adress colums, that can be sorted either according to our ip/hostname-comparison or according to String.compare().
    * ToCompare.java
    * Created on 10. Februar 2006, 10:41
    * This class is a basic model object,
    * with a field - String address - according
    * to which it shall be sortable.
    package comparator;
    * @author mock
    public class ToCompare {
         * holds the IP or Host address
        private String address=null;
         * Instance of a Comparator class that
         * provides our sorting algorithm
        private RcHostComparator hostComparator=null;
        /** Creates a new instance of ToCompare */   
        public ToCompare() {
            this("defaultHost");       
         * when creating a new ToCompare instance,
         * the hostComparator is created for it
         *  @ param aAddress - IP or Hostname
        public ToCompare(String aAddress) {
            address=aAddress;
            hostComparator=new RcHostComparator(address);
        public String getAddress() {
            return address;
        public RcHostComparator getHostComparator() {
            return hostComparator;
    }Here the code of the Class RcHostComparator, it is created with the address field of the ToCompare object that it holds. It first checks if the address field is an IP or not, and then chooses the comparison algorithm according to its own field state and the field state of the object to compare to:
    * RcHostComparator.java
    * Created on 10. Februar 2006, 10:43
    *  This class is used to provide a method for
    *  comparing objects that have an address field,
    *  containing either IP adresses or hostnames.
    package comparator;
    import java.text.CollationKey;
    import java.text.Collator;
    import java.util.Comparator;
    import java.util.Locale;
    * @author mock
    public class RcHostComparator implements Comparator
         * holds the IP or Host address
        private String address=null;
         * Is the address an IP
        private boolean isIPAddress=false;
         * if (!isIPAddress) this is created out of the address
         * to provide a performant way of comparing it with another
         * CollationKey, in order to sort Strings localized
         *  @ see java.text.Collator
         *  @ see java.text.CollationKey
        private CollationKey hostnameCollationKey=null;
         * if (isIPAddress) this array holds
         * the 4 byte of the Ip address to compare
        private int[] intValues=null;
         * minimum for IP bytes/ints
        private static final int minIntValue=0;
         * maximum for IP bytes/ints
        private static final int maxIntValue=255;
         * Creates a new instance of IpComparator
         *  @ param aAddress  - holds the IP or Host address
        public RcHostComparator(String aAddress) {
            address=aAddress;
             * check if address is an IP
            isIPAddress=checkIP();
             * if Hostname -> instantiate localized CollationKeys
            if(!isIPAddress){
                 Collator _localeCollator=Collator.getInstance(Locale.getDefault());
                 hostnameCollationKey=_localeCollator.getCollationKey(address);
            }else{}
         *  Here the comparison of the address fields is done.
         *  There a 4 cases:
         *  -1 both Hostnames
         *  -2 aObject1 IP, aObject2 Hostname
         *  -3 aObject1 Hostname, aObject2 IP
         *  -4 both IPs
         *  @ param aObject1, aObject2 - Comparator objects
        public int compare(Object aObject1, Object aObject2)
          int _result= 0;
          if(aObject1 instanceof RcHostComparator && aObject2 instanceof RcHostComparator )
               RcHostComparator _ipComparator1=(RcHostComparator)aObject1;
               RcHostComparator _ipComparator2=(RcHostComparator)aObject2;
               *  Compare algorithms, according to address types
               if(!_ipComparator1.isIPAddress()&&!_ipComparator2.isIPAddress()){
                       *  If both addresses are Strings use collationKey.compareTo(Object o)
                    _result=_ipComparator1.getHostnameCollationKey().compareTo(_ipComparator2.getHostnameCollationKey());
               }else{
                       *  IPs are smaller than Strings -> aObject1 < aObject2
                    if(_ipComparator1.isIPAddress()&&!_ipComparator2.isIPAddress()){
                         _result=-1;
                    }else{
                                *  IPs are smaller than Strings -> aObject1 > aObject2
                         if(!_ipComparator1.isIPAddress()){
                              _result=1;
                         }else{
                             int _intIndex=0;
                             int[] _int1=_ipComparator1.getIntValues();
                             int[] _int2=_ipComparator2.getIntValues();
                                      * compare IP adresses per bytes
                             while(_result==0 && _intIndex<4){
                                  if(_int1[_intIndex]>_int2[_intIndex]){
                                       _result=1;
                                  }else if(_int1[_intIndex]<_int2[_intIndex]){
                                       _result=-1;
                                  }else{}                            
                                             _intIndex++;
          }else{}   
          return _result;
         *  checks if the address field holds an IP or a hostname
         *  if (_isIP) fill intValues[] with IP bytes
         *  if (!isIP)  create hostnameCollationKey
        private boolean checkIP(){
           boolean _isIP=false;
           String[] _getInts=null;
            *  basic check for IP address pattern
            *  4 digits also allowed, cause leading
            *  0 stands for octet number ->
            *  0172=122                  ->
            *  0172.0172.0172.0172 = 122.122.122.122
           boolean _firstcheck=address.matches("[0-9]{1,4}\\.[0-9]{1,4}\\.[0-9]{1,4}\\.[0-9]{1,4}");
           if(_firstcheck){
                _getInts=address.split("\\.");           
                intValues=new int[4];
                for (int _count=0; _count<4; _count++){
                   try{                     
                       int _toIntValue;
                       if(_getInts[_count].startsWith("0")){
                                // if leading 0 parse as octet -> radix=8
                               _toIntValue=Integer.parseInt(_getInts[_count], 8);                          
                       }else{  
                                // parse as is -> radix=10 -> (optional)
                               _toIntValue=Integer.parseInt(_getInts[_count]);                          
                       if(_toIntValue<minIntValue||_toIntValue>maxIntValue){
                              // out of unsigned byte range -> no IP
                              return _isIP;
                       }else{
                              // inside byte range -> could be part of an IP
                              intValues[_count]=_toIntValue;
                   }catch(NumberFormatException e){
                           // not parseable -> no IP
                           return _isIP;
               // all 4 bytes/ints are parseable and in unsigned byte range -> this is an IP
                _isIP=true;
           }else{}      
           return _isIP;
        public boolean isIPAddress() {
                return isIPAddress;
        public int[] getIntValues() {
                return intValues;
        public CollationKey getHostnameCollationKey() {
                return hostnameCollationKey;
        public String getAddress()
            return address;
    }The page bean holds an array of ToCompare objects. It is the model for a new table component, hold by an ObjectArrayDataProvider. Here a code excerpt:
    public class Page1 extends AbstractPageBean
        private ToCompare[] toCompare= new ToCompare[]{
            new ToCompare("1.1.1.1"),
            new ToCompare("2.1.1.1"),
            new ToCompare("9.1.1.1"),
            new ToCompare("11.1.1.1"),
            new ToCompare("0172.0172.0172.0172"),
            new ToCompare("123.1.1.1"),
            new ToCompare("a"),
            new ToCompare("o"),
            new ToCompare("u"),
            new ToCompare("z"),
            new ToCompare("�"),      
            new ToCompare("�"),
            new ToCompare("�")        
         * This method is automatically generated, so any user-specified code inserted
         * here is subject to being replaced
        private void _init() throws Exception
            objectArrayDataProvider1.setArray(toCompare);
        private TableRowGroup tableRowGroup1 = new TableRowGroup();   
        private ObjectArrayDataProvider objectArrayDataProvider1 = new ObjectArrayDataProvider();
    }The relevant .jsp section for the two column table looks like:
    <ui:tableRowGroup binding="#{Page1.tableRowGroup1}" id="tableRowGroup1" rows="10" sourceData="#{Page1.objectArrayDataProvider1}" sourceVar="currentRow">
      <ui:tableColumn binding="#{Page1.tableColumn1}" headerText="SortIP" id="tableColumn1" sort="#{currentRow.value['hostComparator']}">
        <ui:staticText binding="#{Page1.staticText1}" id="staticText1" text="#{currentRow.value['address']}"/>
      </ui:tableColumn>
      <ui:tableColumn binding="#{Page1.tableColumn2}" headerText="SortString" id="tableColumn2" sort="address">
        <ui:staticText binding="#{Page1.staticText2}" id="staticText2" text="#{currentRow.value['address']}"/>
      </ui:tableColumn>
    </ui:tableRowGroup>Sorting localized with Locale="DE_de" according to ip/hostcompare sorts:
    SortIP
    1.1.1.1
    2.1.1.1
    9.1.1.1
    11.1.1.1
    0172.0172.0172.0172
    123.1.1.1
    a

    o

    u

    zWhereas normal sort over String address whitout localization sorts:
    SortString
    0172.0172.0172.0172
    1.1.1.1
    11.1.1.1
    123.1.1.1
    2.1.1.1
    9.1.1.1
    a
    o
    u
    z


    �Not that short, but I hope it will help - if anyone has the need for another than the default sorting algorithms
    Best regards,
    Hate E. Lee

  • How can I modify column width in a spreadsheet report without using an Excel template

    I currently use the LabVIEW Report Generation toolkit in LabVIEW 2011SP1 to create simple spreadsheet reports that I can build/print without having Microsoft Office products installed.  I really like being able to do this, and it allows me to generate nice on-demand data reports - I'm also not tied to having Office installed on the system I'm using, so this works on just about any test fixture I can install the software on.  
    I recently have a requirement that I must have variable-length columns in my report.  I currently use the VI "Append Text Table to Report" in order to create a text table, but the column width requirement is that all columns must be equal width UNLESS I use an Excel Template file to define my column widths.  
    My questions are:
    Is it possible to create a text table and define per-column widths without using an Excel Template?  If so, how?  My report mainly has a lot of small numerical values for the columns, but some columns contain system names or status messages - I really hate the longer text blocks wrapping and taking up so much real-estate when if I could control the column widths I can get all my data on a single line.
    I'll admit I haven't tried this myself yet, but if I use an Excel Template will that require me to have Excel installed on the PC in order to print/generate reports?
    Is there a recommended way (with an example) of generating a text table in a report with or without using the "Append Text Table to Report" VI that allows me to have custom column widths that doesn't require me to manually build a custom print page?  If I do have to create a custom print page, what would be the most straightforward approach?
    Thanks!
    -Danny

    Sure, I'll provide a pared down example that demonstrates my use-case:
    I have a control to the VI that takes in a 2D array of strings representing the data I want printed in a table.  I am generating a standard report, adding a table to the report, and printing it.  The first VI is "New Report.vi", the second VI is "Append Table to Report.vi", and the third is "Print Report.vi", all found standard in the Report Generation palette.
    Note that the "Append Table to Report.vi" has an input parameter "Column Width" with a default value of (1).  This input parameter is a single input parameter, which defines the column widths of ALL the columns in my table - hence, with the VI the way it is, all my columns will be 1 inch wide.  
    I find myself needing to be able to define per-column widths, not just a single global column width parameter.  
    The only way I have found to do this is by using an Excel template file.  The "New Report.vi" takes in a "template" parameter, and if used, the report generation toolkit can be set to ignore the "Column Width" input parameter on the "Append Table to Report.vi" by setting the width value to -1.  Instead it will launch Excel, open the template file provided, build the table using the template, will close Excel, and will attach the generated table to the report.  However, I have a strict requirement that Microsoft Office NOT be required to be installed on the computer.  
    So, without using Excel, is there a way to generate a table in a report and define the width of each column individually?
    -Danny

  • JTable with custom column model and table model not showing table header

    Hello,
    I am creating a JTable with a custom table model and a custom column model. However the table header is not being displayed (yes, it is in a JScrollPane). I've shrunk the problem down into a single compileable example:
    Thanks for your help.
    import javax.swing.*;
    import javax.swing.table.*;
    public class Test1 extends JFrame
         public static void main(String args[])
              JTable table;
              TableColumnModel colModel=createTestColumnModel();
              TestTableModel tableModel=new TestTableModel();
              Test1 frame=new Test1();
              table=new JTable(tableModel, colModel);
              frame.getContentPane().add(new JScrollPane(table));
              frame.setSize(200,200);
              frame.setVisible(true);
         private static DefaultTableColumnModel createTestColumnModel()
              DefaultTableColumnModel columnModel=new DefaultTableColumnModel();
              columnModel.addColumn(new TableColumn(0));
              return columnModel;
         static class TestTableModel extends AbstractTableModel
              public int getColumnCount()
                   return 1;
              public Class<?> getColumnClass(int columnIndex)
                   return String.class;
              public String getColumnName(int column)
                   return "col";
              public int getRowCount()
                   return 1;
              public Object getValueAt(int row, int col)
                   return "test";
              public void setValueAt(Object aValue, int rowIndex, int columnIndex)
    }Edited by: 802416 on 14-Oct-2010 04:29
    added                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        

    Kleopatra wrote:
    jduprez wrote:
    See http://download.oracle.com/javase/6/docs/api/javax/swing/table/TableColumn.html#setHeaderValue(java.lang.Object)
    When the TableColumn is created, the default headerValue  is null
    So, the header ends up rendered as an empty label (probably of size 0 if the JTable computes its header size based on the renderer's preferred size).nitpicking (can't resist - the alternative is a cleanup round in some not so nice code I produced recently <g>):
    - it's not the JTable's business to compute its headers size (and it doesn't, the header's the culprit.) *> - the header should never come up with a zero (or near-to) height: even if there is no title shown, it's still needed as grab to resize/move the columns. So I would consider this sizing behaviour a bug.*
    - furthermore, the "really zero" height is a longstanding issue with MetalBorder.TableHeaderBorder (other LAFs size with the top/bottom of their default header cell border) which extends AbstractBorder incorrectly. That's easy to do because AbstractBorder itself is badly implemented
    http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6459419
    Thanks for the opportunity to have some fun :-)
    JeanetteNo problem, thanks for the insight :)

  • Column width in output table cannot be changed

    Hi All,
    I have a visual composer model with an input form used to display variables to call a BW query. The query result is displayed in an output table.
    Multiple fields are displayed in the output table.
    On the layout tab of the visual composer model, I have changed the column width of the different output fields.
    After initial execution, the column widths of the different columns correspond to the settings in the layout tab. When I submit the query, example after entering the selection variables in the input screen and pressing submit, all columns widths change to 1 width. All columns now have the same width.
    We installed the latest VC version and hotpackages but this does not help.
    How can I change the column width of an output table?
    Best Regards,
    Filip

    Hi All,
    this column problem I know really good and there is a solution:
    Click on the Output-Port of your Query and then click on Configure. You will see on the right side the property "Dynamic Port". Uncheck that and you will see that the column width is like in the layout tab.
    This is only in Queries. In Function Modules you dont have to do this.
    Best Regards,
    Murat Yurtoglu

  • Suggestion for Next Release - Dynamic Column Widths

    Is it possible for the next release of xcelsius to allow the developer to dynamically set column widths?
    Appearance > Layout > Custom Column Widths - let the developer bind the values dynamically to a range.
    Thanks.

    The XScorecard (part of the XComponents @ www.antivia.com which are free to download and free to use) does exactly this. In fact it does a little more because the column widths bind in both directions, which is useful to sync two tables together. If they are bound to the same column width cells then even if the end-user drags the columns in one table the second on changes as well. If there are things that the XScorecard does not do which you need it to then leave a comment and I will see how difficult it would be to add.

  • 2 column definitions for a single table view

    Hi Experts,
    I have a requirement in which i need 2 column definitions for a single table view.
    The requirement is :
    ..............Week1...........              |....................Week2...............
    01/01/2007 |  02/01/2007  |    15/01/2007 | 16/01/2007 | 17/01/2007
    data.......... |  data..........  |    data.......... | data..........  |   data..........      
    data.......... |  data..........  |    data.......... | data..........  |   data..........    
    data.......... |  data..........  |    data.......... | data..........  |   data..........   
    the weeks shud be displayed for the corresponing dates below......
    Is it possible to have 2 column definitions
    Please help me out.
    Thanks in advance

    Hi Balaiji,
    proceed as follows:
    Create a structure in the dictionary called ZSTRU_USR02_F
      with  field1 type int4
              field3 type int4
              field3 type int4
    Create a table type in the dictionary:
    zusr02  line type ZSTRU_USR02_F.
    Create a structure in the dictionary:
    ZSTRU_USR02
      with tab1  type zusr02
      and tab2  type zusr02
    Create a table type in the dictionary:
    zttusr02 line type ZSTRU_USR02
    Create a controller (table.do) in a BSP-application
    Add the controller class to this controller.
    Add a attribute (table) instance public type zttusr02
    redefine method do_request, add the following coding:
      FIELD-SYMBOLS: <fs_tab> LIKE LINE OF table,
                     <fs_row> TYPE zstru_usr02_f.
      DATA: lirv_view TYPE REF TO if_bsp_page,
            lv_int    TYPE i.
    * Dispatch Input for event handling
      dispatch_input( ).
    * Navigation requested during Event handling?
      IF is_navigation_requested( ) IS NOT INITIAL.
        RETURN.
      ENDIF.
    * get some data into the table.
      INSERT INITIAL LINE INTO TABLE table ASSIGNING <fs_tab>.
      DO 3 TIMES.
        INSERT INITIAL LINE INTO TABLE <fs_tab>-tab1 ASSIGNING <fs_row>.
        ADD 1 TO lv_int.
        <fs_row>-field1 = lv_int.
        ADD 1 TO lv_int.
        <fs_row>-field2 = lv_int.
        ADD 1 TO lv_int.
        <fs_row>-field3 = lv_int.
      ENDDO.
      DO 3 TIMES.
        INSERT INITIAL LINE INTO TABLE <fs_tab>-tab2 ASSIGNING <fs_row>.
        ADD 1 TO lv_int.
        <fs_row>-field1 = lv_int.
        ADD 1 TO lv_int.
        <fs_row>-field2 = lv_int.
        ADD 1 TO lv_int.
        <fs_row>-field3 = lv_int.
      ENDDO.
    * Create the view
      lirv_view ?= create_view( view_name = 'table.htm' ).
    * Hand over the data
      lirv_view->set_attribute( name = 'table' value = table ).
    * Call the view
      call_view( lirv_view ).
    Create a view called table.htm. Add your controller class as controller class for the view and add the attribute table type zttusr02.
    Add the following to the layout:
    <%@page language="abap"%>
    <%@extension name="htmlb" prefix="htmlb"%>
    <htmlb:content design="design2003">
      <htmlb:page title = " ">
        <htmlb:form>
    <htmlb:tableView id             = "tableToDisplay"
                     table          = "<%=table%>"
                     emptyTableText = "No Data"
                     iterator       = "<%=controller%>"
                     footerVisible  = "FALSE"
                     encode         = "TRUE"
                     width          = "100%"/>
        </htmlb:form>
      </htmlb:page>
    </htmlb:content>
    Go back to your controller class. Add the interface IF_HTMLB_TABLEVIEW_ITERATOR
    Implement the method IF_HTMLB_TABLEVIEW_ITERATOR~GET_COLUMN_DEFINITIONS
      DATA: lwa_column  LIKE LINE OF p_column_definitions.
    * Column 1
      CLEAR lwa_column.
      lwa_column-columnname          = 'TAB1'.
      lwa_column-title               = 'Column 1'.
      lwa_column-tooltipheader       = 'Tooltip Column 1'.
      lwa_column-width               = '50%'.
      lwa_column-wrapping            = 'FALSE'.
      lwa_column-horizontalalignment = 'LEFT'.
      lwa_column-verticalalignment   = 'MIDDLE'.
      APPEND lwa_column TO p_column_definitions.
    * Column 1
      CLEAR lwa_column.
      lwa_column-columnname          = 'TAB2'.
      lwa_column-title               = 'Column 2'.
      lwa_column-tooltipheader       = 'Tooltip Column 2'.
      lwa_column-width               = '50%'.
      lwa_column-wrapping            = 'FALSE'.
      lwa_column-horizontalalignment = 'LEFT'.
      lwa_column-verticalalignment   = 'MIDDLE'.
      APPEND lwa_column TO p_column_definitions.
    Implement the method IF_HTMLB_TABLEVIEW_ITERATOR~RENDER_CELL_START and add:
      DATA: lr_tview   TYPE REF TO cl_htmlb_tableview.
      FIELD-SYMBOLS: <fs_row> LIKE LINE OF table.
      ASSIGN p_row_data_ref->* TO <fs_row>.
      CASE p_column_key.
        WHEN 'TAB1'.
          CREATE OBJECT lr_tview.
          lr_tview->id = p_cell_id.
          GET REFERENCE OF <fs_row>-tab1 INTO lr_tview->table.
          lr_tview->footervisible = ''.
          lr_tview->width = '100%'.
          p_replacement_bee = lr_tview.
        WHEN 'TAB2'.
          CREATE OBJECT lr_tview.
          lr_tview->id = p_cell_id.
          GET REFERENCE OF <fs_row>-tab2 INTO lr_tview->table.
          lr_tview->footervisible = ''.
          lr_tview->width = '100%'.
          p_replacement_bee = lr_tview.
      ENDCASE.
    With this you get a table in a table. Now if you create a second iterator you'll be able to adjust the apperance of the inner table, as well as you can add column headers.
    Hope that helps.
    Best Regards
    Michael

  • How to increase a column width in numbers

    Hello,
    Is there a way to increase the column width of a numbers table by using a short cut.
    In a few words is there any shortcut to increase or decrease the size of cells and columns?
    Something like command+?
    Regards,
    Jonathan M.

    No key commands are available.  You can select the table then use the "Table Formatter":
    These controls will apply to the items selected.  If you have one column highlighted then you can change the width of that one column.  If you select all columns then this control will apply to the selected columns.
    you can also hover the cursor over the dividers between columns (the lines in the header... the lines between, for instance, the "A" and  the "B").  The cursor will change to a vertical bar with a horizontal line with left right arrows, then click and drag as needed.  Similar for rows.

  • In download to excel from bsp hw to increase excel column width to wrap txt

    in download to excel from bsp how to increase excel column width to wrap text
    in each column.
    My client does not want to manually click each cell aftet downloading to excel to see full text in each column

    Hi,
    You can achieve this by formatting your output using HTML table tag.
    Try the following code.
      DATA: lv_output  TYPE string.
      concatenate
      '<table border="1">'
      '<tr style="font-weight: bold; text-align:center; "><td>Name</td><td width="150">Description</td></tr>' cl_abap_char_utilities=>cr_lf
      '<tr><td>First Name</td><td>Some Description goes here..... ....... ...... </td></tr>' cl_abap_char_utilities=>cr_lf
      '<tr><td>2nd Name</td><td>XYZ.......</td></tr>' cl_abap_char_utilities=>cr_lf
      '</table>'
      into lv_output.
      response->set_cdata( data = lv_output ).
    Regards
    Geogy
    PS. Reward the useful answers.

  • How to get custom columns from Database in BO Universe

    Hi,
    We have 'n' databases. All the databases have identical tables and views but some tables in few database have custom columns.
    Ex. 'database1' has table 'sites' with the following columns
           1. sitenumber
           2. sitename
           3. siteaddress
           4. phone
           5. email
    'database2' has table 'sites' with the following columns
           1. sitenumber
           2. sitename
           3. siteaddress
           4. phone
           5. email
           6. IsDepot
    The condition says that
    "If IsDepot field is present in the site table then list sites where IsDepot equals 0 or null otherwise list all sites"
    How do i create a condition at the universe level which checks whether the object 'IsDepot" is present in the database or not.
    A single universe needs to be created for this purpose

    Hi,
    We have implemented a solution for the IsDepot problem as mentioned above.
    It is not done at the BO Universe level but at the SQL Server database level.
    Steps Followed:
    1. Created a stored procedure which checks the 'syscolumns' table for available fields
    2. The SP creates a temp table with a value list based on previously mentioned conditions
    3. This temp table can be used in the universe or a condition can be used to filter data based on this temp table.
    Thanks,
    Arun

  • Uneven Column Width and Spanning

    So, I would like to create a grid with two columns of different widths. From what I can tell, the only way to do this is to manually adjust column guides on a master page and then flow in my text.
    The only problem is that InDesign creates separate frames for each column instead of a 2-column frame. I can't have any ¶ styles span the columns.
    Does anyone have a creative solution for this? I would really prefer not to use separate text frames any time I want to span columns.
    Thanks,
    Chris

    Chris Z. wrote:
    So, I would like to create a grid with two columns of different widths. From what I can tell, the only way to do this is to manually adjust column guides on a master page and then flow in my text.
    The only problem is that InDesign creates separate frames for each column instead of a 2-column frame. I can't have any ¶ styles span the columns.
    Does anyone have a creative solution for this? I would really prefer not to use separate text frames any time I want to span columns.
    Thanks,
    Chris
    Depending on the specific needs of the text flow, you might be able to use some combination of a multiple-column layout, span-column properties, left and right indents, text frame insets, and master-page frames with text wrap properties, so achieve your goal. By "multiple-column layout" I'm thinking of the technique of designing page grids with many columns, and placing page content across one, two, or more columns; in this fantasy, I'm thinking of different span-column properties. For example, with a six-column grid, paragraphs could span one, two, three, four, five or all six, to give the effect of different column widths in the text frame. I've done only the barest minimal experiment; it seems promising. It would take some effort to create, but setting the necessary properties by using styles, the effect could maintain itself without manual intervention, so the development effort would be returned every time you use it.
    HTH
    Regards,
    Peter
    Peter Gold
    KnowHow ProServices

Maybe you are looking for

  • Bluetooth on Macbook Pro dead in Leopard

    When I first booted into Leopard after an upgrade installation, my bluetooth mighty mouse worked fine. I did a software updated and restarted at which time the mighty mouse failed to work. I have tried the following: Safe boot Turning mouse off and o

  • Maps 2.0 - "Show on map" is not working

    Hello guys. my ovi maps is started to saying that : " this app requires Licence manager download" . and then when i click to "yes" it is trying to open web page but web page is not working. And now "Show on map" feature is not working . I cant format

  • Issue in RRI

    Hi All, I have been facing an issue with RRI which is working fine in Development system. But when i moved it to UAT, it is not working. I have created the RRI between the report and the R/3 transaction. When i try to navigate from the report to the

  • Best practices for sharing mailboxes

    Hello, To share mailboxes, I am not sure of the 'best practices'.  From my point of view, there are two scenarios : classic mailbox : an user A wants to share his mailbox so it assigns rights on his mailbox for an userB via Outlook. The userB will ad

  • DataControl and View Object

    Do all View Objects appear in the Data Control ? I presumed so. Anyway I migrated my application to TP4. I created a new view and it does not show in the DataControl. Is there anything I need to do for this ? Other view objects are appearing.