PLD - 3 copies of A/R Invoice. Sort problem when 3 page invoice
I have a client that is printing A/R invoice on three color paper. White, Yellow, Pink. The layout properties are set to print three copies and set to a specific printer. When the A/R invoice is one page or two pages if prints correctly. Page one will print a white, yellow, and pink copy and page two will print a white, yellow, and pink copy.
When the A/R invoice is three pages it does not print the pages on the coresponding colors
Hi,
Plz try this method....
I have tried it and it works.
The solution is as follows:
Assuming that you want to display the copy name in the Start of Report (SoR)
1) in the Display Document Properties>Paper Format>Number of Copies = 3, this defines how many copies will be printed
2) Place a formula field in the SoR fldCopyName, set its formula as CopyNumber()
3) Place a formula field in the SoR fldCopy1, set its formula as fldCopyName == 1
4) Place a formula field in the SoR fldCopy2, set its formula as fldCopyName == 2
5) Place a formula field in the SoR fldCopy3, set its formula as fldCopyName == 3
6) Place a Text field in SoR and type in your Copy Name in the Content Tab and set the Link to fldCopy1
7) Place a Text field in SoR and type in your Copy Name in the Content Tab and set the Link to fldCopy2
8) Place a Text field in SoR and type in your Copy Name in the Content Tab and set the Link to fldCopy3
It is well known solution in forum.
By
Firos
Similar Messages
-
JTable sorting - problem when adding elements (complete code inside)
I�m writing this email with reference to a recent posting here but this time with the code example. (I apologize for the duplicated posting � this time it will be with the code)
Problem: when adding more elements to the JTable (sorted) the exception: ArrayIndexOutOfBoundsException is thrown.
Example: If the elements in the table are 10 and then the user requests for 8 � the table will produce the correct result. However, if the user will ask for 11 items (>10) the exception will be thrown.
The program: The program below (compiles and running). A JTable is constructed with 3 items, when you click the button - the return result should be 4 items - this will generate the error, WHY?
I would highly appreciate your thoughts why this is happening and most importantly � how to fix it.
Thanks a lot
3 files:
(1) TableSorterDemo
(2) Traveler
(3)TableSorter
//TableSorterDemo:
package sorter;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
* TableSorterDemo is like TableDemo, except that it
* inserts a custom model -- a sorter -- between the table
* and its data model. It also has column tool tips.
public class TableSorterDemo implements ActionListener
private JPanel superPanel;
private JButton clickMe = new JButton("click me to get diff data");
private boolean DEBUG = false;
private DefaultListModel defaultListModel;
private JTable table;
public TableSorterDemo()
superPanel = new JPanel(new BorderLayout());
defaultListModel = new DefaultListModel();
init1();
TableSorter sorter = new TableSorter(new MyTableModel(defaultListModel)); //ADDED THIS
table = new JTable(sorter); //NEW
sorter.setTableHeader(table.getTableHeader()); //ADDED THIS
table.setPreferredScrollableViewportSize(new Dimension(500, 70));
//Set up tool tips for column headers.
table.getTableHeader().setToolTipText(
"Click to specify sorting; Control-Click to specify secondary sorting");
//Create the scroll pane and add the table to it.
JScrollPane scrollPane = new JScrollPane(table);
//Add the scroll pane to this panel.
superPanel.add("Center", scrollPane);
superPanel.add("South",clickMe);
clickMe.addActionListener(this);
public JPanel getPanel()
return superPanel;
public void init1()
//in real life this will be done from the db
Traveler a = new Traveler();
Traveler b = new Traveler();
Traveler c = new Traveler();
a.setFirstName("Elvis");
a.setLastName("Presley");
a.setSprot("Ping Pong");
a.setNumYears(3);
a.setVegetarian(true);
b.setFirstName("Elton");
b.setLastName("John");
b.setSprot("Soccer");
b.setNumYears(2);
b.setVegetarian(true);
c.setFirstName("shaquille");
c.setLastName("oneil");
c.setSprot("Golf");
c.setNumYears(22);
c.setVegetarian(true);
defaultListModel.addElement(a);
defaultListModel.addElement(b);
defaultListModel.addElement(c);
public void init2()
//in real life this will be done from the db
Traveler d = new Traveler();
Traveler e = new Traveler();
Traveler f = new Traveler();
Traveler g = new Traveler();
d.setFirstName("John");
d.setLastName("Smith");
d.setSprot("Tennis");
d.setNumYears(32);
d.setVegetarian(true);
e.setFirstName("Ron");
e.setLastName("Cohen");
e.setSprot("Baseball");
e.setNumYears(12);
e.setVegetarian(true);
f.setFirstName("Donald");
f.setLastName("Mac Novice");
f.setSprot("Vallyball");
f.setNumYears(1);
f.setVegetarian(true);
g.setFirstName("Eithan");
g.setLastName("Superstar");
g.setSprot("Vallyball");
g.setNumYears(21);
g.setVegetarian(true);
defaultListModel.addElement(d);
defaultListModel.addElement(e);
defaultListModel.addElement(f);
defaultListModel.addElement(g);
class MyTableModel extends AbstractTableModel
private DefaultListModel myModel;
public MyTableModel(DefaultListModel m)
myModel=m;
private String[] columnNames = {"First Name",
"Last Name",
"Sport",
"# of Years",
"Vegetarian"};
public int getColumnCount()
return columnNames.length;
public int getRowCount()
return myModel.size();
public String getColumnName(int column)
return getNames()[column];
public String[] getNames()
String[] names = {"First Name", "Last Name", "Sport", "# of Years", "Vegetarian"};
return names;
public Object getValueAt(int row, int col)
return distributeObjectsInTable(row, col, (Traveler) myModel.elementAt(row));
public Object distributeObjectsInTable(int row, int col, Traveler tr)
switch(col)
case 0:
return tr.getFirstName();
case 1:
return tr.getLastName();
case 2:
return tr.getSprot();
case 3:
return new Integer(tr.getNumYears());
case 4:
return new Boolean (tr.isVegetarian());
default:
return "Error";
public Class getColumnClass(int c)
return getValueAt(0, c).getClass();
private static void createAndShowGUI()
//Make sure we have nice window decorations.
JFrame.setDefaultLookAndFeelDecorated(true);
//Create and set up the window.
JFrame frame = new JFrame("TableSorterDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Create and set up the content pane.
TableSorterDemo newContentPane = new TableSorterDemo();
newContentPane.getPanel().setOpaque(true); //content panes must be opaque
frame.setContentPane(newContentPane.getPanel());
//Display the window.
frame.pack();
frame.setVisible(true);
public static void main(String[] args)
//Schedule a job for the event-dispatching thread:
//creating and showing this application's GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable()
public void run()
createAndShowGUI();
public void actionPerformed(ActionEvent ae)
if (ae.getSource()==clickMe)
defaultListModel.removeAllElements();
init2(); //if the size of the model was less than 2 items - the result will be ok.
//in other words, if you commens the last 2 rows of this method (addElement(f) & g)
// the result will be fine.
table.updateUI();
}//(2) Traveler
package sorter;
public class Traveler
private String firstName;
private String lastName;
private String sprot;
private int numYears;
private boolean vegetarian;
public String getFirstName()
return firstName;
public String getLastName()
return lastName;
public int getNumYears()
return numYears;
public String getSprot()
return sprot;
public boolean isVegetarian()
return vegetarian;
public void setFirstName(String firstName)
this.firstName = firstName;
public void setLastName(String lastName)
this.lastName = lastName;
public void setNumYears(int numYears)
this.numYears = numYears;
public void setSprot(String sprot)
this.sprot = sprot;
public void setVegetarian(boolean vegetarian)
this.vegetarian = vegetarian;
}//(3)TableSorter
package sorter;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.util.List;
import javax.swing.*;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.*;
public class TableSorter extends AbstractTableModel {
protected TableModel tableModel;
public static final int DESCENDING = -1;
public static final int NOT_SORTED = 0;
public static final int ASCENDING = 1;
private static Directive EMPTY_DIRECTIVE = new Directive(-1, NOT_SORTED);
public static final Comparator COMPARABLE_COMAPRATOR = new Comparator() {
public int compare(Object o1, Object o2) {
return ((Comparable) o1).compareTo(o2);
public static final Comparator LEXICAL_COMPARATOR = new Comparator() {
public int compare(Object o1, Object o2) {
return o1.toString().compareTo(o2.toString());
private Row[] viewToModel;
private int[] modelToView;
private JTableHeader tableHeader;
private MouseListener mouseListener;
private TableModelListener tableModelListener;
private Map columnComparators = new HashMap();
private List sortingColumns = new ArrayList();
public TableSorter() {
this.mouseListener = new MouseHandler();
this.tableModelListener = new TableModelHandler();
public TableSorter(TableModel tableModel) {
this();
setTableModel(tableModel);
public TableSorter(TableModel tableModel, JTableHeader tableHeader) {
this();
setTableHeader(tableHeader);
setTableModel(tableModel);
private void clearSortingState() {
viewToModel = null;
modelToView = null;
public TableModel getTableModel() {
return tableModel;
public void setTableModel(TableModel tableModel) {
if (this.tableModel != null) {
this.tableModel.removeTableModelListener(tableModelListener);
this.tableModel = tableModel;
if (this.tableModel != null) {
this.tableModel.addTableModelListener(tableModelListener);
clearSortingState();
fireTableStructureChanged();
public JTableHeader getTableHeader() {
return tableHeader;
public void setTableHeader(JTableHeader tableHeader) {
if (this.tableHeader != null) {
this.tableHeader.removeMouseListener(mouseListener);
TableCellRenderer defaultRenderer = this.tableHeader.getDefaultRenderer();
if (defaultRenderer instanceof SortableHeaderRenderer) {
this.tableHeader.setDefaultRenderer(((SortableHeaderRenderer) defaultRenderer).tableCellRenderer);
this.tableHeader = tableHeader;
if (this.tableHeader != null) {
this.tableHeader.addMouseListener(mouseListener);
this.tableHeader.setDefaultRenderer(
new SortableHeaderRenderer(this.tableHeader.getDefaultRenderer()));
public boolean isSorting() {
return sortingColumns.size() != 0;
private Directive getDirective(int column) {
for (int i = 0; i < sortingColumns.size(); i++) {
Directive directive = (Directive)sortingColumns.get(i);
if (directive.column == column) {
return directive;
return EMPTY_DIRECTIVE;
public int getSortingStatus(int column) {
return getDirective(column).direction;
private void sortingStatusChanged() {
clearSortingState();
fireTableDataChanged();
if (tableHeader != null) {
tableHeader.repaint();
public void setSortingStatus(int column, int status) {
Directive directive = getDirective(column);
if (directive != EMPTY_DIRECTIVE) {
sortingColumns.remove(directive);
if (status != NOT_SORTED) {
sortingColumns.add(new Directive(column, status));
sortingStatusChanged();
protected Icon getHeaderRendererIcon(int column, int size) {
Directive directive = getDirective(column);
if (directive == EMPTY_DIRECTIVE) {
return null;
return new Arrow(directive.direction == DESCENDING, size, sortingColumns.indexOf(directive));
private void cancelSorting() {
sortingColumns.clear();
sortingStatusChanged();
public void setColumnComparator(Class type, Comparator comparator) {
if (comparator == null) {
columnComparators.remove(type);
} else {
columnComparators.put(type, comparator);
protected Comparator getComparator(int column) {
Class columnType = tableModel.getColumnClass(column);
Comparator comparator = (Comparator) columnComparators.get(columnType);
if (comparator != null) {
return comparator;
if (Comparable.class.isAssignableFrom(columnType)) {
return COMPARABLE_COMAPRATOR;
return LEXICAL_COMPARATOR;
private Row[] getViewToModel() {
if (viewToModel == null) {
int tableModelRowCount = tableModel.getRowCount();
viewToModel = new Row[tableModelRowCount];
for (int row = 0; row < tableModelRowCount; row++) {
viewToModel[row] = new Row(row);
if (isSorting()) {
Arrays.sort(viewToModel);
return viewToModel;
public int modelIndex(int viewIndex)
return getViewToModel()[viewIndex].modelIndex;
private int[] getModelToView()
if (modelToView == null) {
int n = getViewToModel().length;
modelToView = new int[n];
for (int i = 0; i < n; i++) {
modelToView[modelIndex(i)] = i;
return modelToView;
// TableModel interface methods
public int getRowCount() {
return (tableModel == null) ? 0 : tableModel.getRowCount();
public int getColumnCount() {
return (tableModel == null) ? 0 : tableModel.getColumnCount();
public String getColumnName(int column) {
return tableModel.getColumnName(column);
public Class getColumnClass(int column) {
return tableModel.getColumnClass(column);
public boolean isCellEditable(int row, int column) {
return tableModel.isCellEditable(modelIndex(row), column);
public Object getValueAt(int row, int column) {
return tableModel.getValueAt(modelIndex(row), column);
public void setValueAt(Object aValue, int row, int column) {
tableModel.setValueAt(aValue, modelIndex(row), column);
// Helper classes
private class Row implements Comparable {
private int modelIndex;
public Row(int index) {
this.modelIndex = index;
public int compareTo(Object o) {
int row1 = modelIndex;
int row2 = ((Row) o).modelIndex;
for (Iterator it = sortingColumns.iterator(); it.hasNext();) {
Directive directive = (Directive) it.next();
int column = directive.column;
Object o1 = tableModel.getValueAt(row1, column);
Object o2 = tableModel.getValueAt(row2, column);
int comparison = 0;
// Define null less than everything, except null.
if (o1 == null && o2 == null) {
comparison = 0;
} else if (o1 == null) {
comparison = -1;
} else if (o2 == null) {
comparison = 1;
} else {
comparison = getComparator(column).compare(o1, o2);
if (comparison != 0) {
return directive.direction == DESCENDING ? -comparison : comparison;
return 0;
private class TableModelHandler implements TableModelListener {
public void tableChanged(TableModelEvent e) {
// If we're not sorting by anything, just pass the event along.
if (!isSorting()) {
clearSortingState();
fireTableChanged(e);
return;
// If the table structure has changed, cancel the sorting; the
// sorting columns may have been either moved or deleted from
// the model.
if (e.getFirstRow() == TableModelEvent.HEADER_ROW) {
cancelSorting();
fireTableChanged(e);
return;
// We can map a cell event through to the view without widening
// when the following conditions apply:
// a) all the changes are on one row (e.getFirstRow() == e.getLastRow()) and,
// b) all the changes are in one column (column != TableModelEvent.ALL_COLUMNS) and,
// c) we are not sorting on that column (getSortingStatus(column) == NOT_SORTED) and,
// d) a reverse lookup will not trigger a sort (modelToView != null)
// Note: INSERT and DELETE events fail this test as they have column == ALL_COLUMNS.
// The last check, for (modelToView != null) is to see if modelToView
// is already allocated. If we don't do this check; sorting can become
// a performance bottleneck for applications where cells
// change rapidly in different parts of the table. If cells
// change alternately in the sorting column and then outside of
// it this class can end up re-sorting on alternate cell updates -
// which can be a performance problem for large tables. The last
// clause avoids this problem.
int column = e.getColumn();
if (e.getFirstRow() == e.getLastRow()
&& column != TableModelEvent.ALL_COLUMNS
&& getSortingStatus(column) == NOT_SORTED
&& modelToView != null) {
int viewIndex = getModelToView()[e.getFirstRow()];
fireTableChanged(new TableModelEvent(TableSorter.this,
viewIndex, viewIndex,
column, e.getType()));
return;
// Something has happened to the data that may have invalidated the row order.
clearSortingState();
fireTableDataChanged();
return;
private class MouseHandler extends MouseAdapter {
public void mouseClicked(MouseEvent e) {
JTableHeader h = (JTableHeader) e.getSource();
TableColumnModel columnModel = h.getColumnModel();
int viewColumn = columnModel.getColumnIndexAtX(e.getX());
int column = columnModel.getColumn(viewColumn).getModelIndex();
if (column != -1) {
int status = getSortingStatus(column);
if (!e.isControlDown()) {
cancelSorting();
// Cycle the sorting states through {NOT_SORTED, ASCENDING, DESCENDING} or
// {NOT_SORTED, DESCENDING, ASCENDING} depending on whether shift is pressed.
status = status + (e.isShiftDown() ? -1 : 1);
status = (status + 4) % 3 - 1; // signed mod, returning {-1, 0, 1}
setSortingStatus(column, status);
private static class Arrow implements Icon {
private boolean descending;
private int size;
private int priority;
public Arrow(boolean descending, int size, int priority) {
this.descending = descending;
this.size = size;
this.priority = priority;
public void paintIcon(Component c, Graphics g, int x, int y) {
Color color = c == null ? Color.GRAY : c.getBackground();
// In a compound sort, make each succesive triangle 20%
// smaller than the previous one.
int dx = (int)(size/2*Math.pow(0.8, priority));
int dy = descending ? dx : -dx;
// Align icon (roughly) with font baseline.
y = y + 5*size/6 + (descending ? -dy : 0);
int shift = descending ? 1 : -1;
g.translate(x, y);
// Right diagonal.
g.setColor(color.darker());
g.drawLine(dx / 2, dy, 0, 0);
g.drawLine(dx / 2, dy + shift, 0, shift);
// Left diagonal.
g.setColor(color.brighter());
g.drawLine(dx / 2, dy, dx, 0);
g.drawLine(dx / 2, dy + shift, dx, shift);
// Horizontal line.
if (descending) {
g.setColor(color.darker().darker());
} else {
g.setColor(color.brighter().brighter());
g.drawLine(dx, 0, 0, 0);
g.setColor(color);
g.translate(-x, -y);
public int getIconWidth() {
return size;
public int getIconHeight() {
return size;
private class SortableHeaderRenderer implements TableCellRenderer {
private TableCellRenderer tableCellRenderer;
public SortableHeaderRenderer(TableCellRenderer tableCellRenderer) {
this.tableCellRenderer = tableCellRenderer;
public Component getTableCellRendererComponent(JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column) {
Component c = tableCellRenderer.getTableCellRendererComponent(table,
value, isSelected, hasFocus, row, column);
if (c instanceof JLabel) {
JLabel l = (JLabel) c;
l.setHorizontalTextPosition(JLabel.LEFT);
int modelColumn = table.convertColumnIndexToModel(column);
l.setIcon(getHeaderRendererIcon(modelColumn, l.getFont().getSize()));
return c;
private static class Directive {
private int column;
private int direction;
public Directive(int column, int direction) {
this.column = column;
this.direction = direction;
}The table listens to the TableModel for changes. Changing the table by adding/removing
rows or columns has no affect on its table model. If you make changes to the table model
the table will be notified by its TableModelListener and change its view. So tell
MyTableModel about the change of data:
public class TableSorterDemo implements ActionListener
MyTableModel tableModel;
public TableSorterDemo()
defaultListModel = new DefaultListModel();
init1();
tableModel = new MyTableModel(defaultListModel);
TableSorter sorter = new TableSorter(tableModel);
public void actionPerformed(ActionEvent ae)
if (ae.getSource()==clickMe)
defaultListModel.removeAllElements();
init2();
tableModel.fireTableStructureChanged();
} -
Hi every one
I'm doing an A/R invoice where I've pull some sale orders from de BP, the problem is that the invoice seems to be sorting those sale orders by the number of the documents (ORDR.DocNUM) and I need them to be sort in the order y ctrl+click them in the 'Choose from list window', because i have several columns that need to be sorted in that order and since those are not number columns I cannot simple dbl click the colum to get the sort done
Thanks in advance
ensoHave you tried to change the sort order of documents in CFL (ctrl-shift-S)?
AFAIK, the order of lines is determined first by the order of documents in the CFL
then by the docline nbr.
If that does not satisfy your requirement then you may
want to consider the following workaround:
- 'steal' one column (or make a UDF) for sorting purposes
- generate a sort value for each line using Formatted Search on that column.
Here I'm calculating the sort value using line description
[code]declare @s as varchar(50)
set @s = $[$38.3.0]
if len(@s)=0 SELECT 0
if len(@s)=1 SELECT ascii(substring(@s,1,1))*1000
if len(@s)>1 SELECT ascii(substring(@s,1,1))*1000 + ascii(substring(@s,2,1))[/code]
- doubleclick to sort
HTH
Juha -
Excise Invoice Print problem for multiple Invoices
HI All,
I Have developed a Zprint prog and zsmartform and attached it to standard tcode J1IP .
when we execute J1IP outputtype J1I10 we get multiple invoices . if we select one check box and execute and press print preview/ print we get the print correctly . But if we check multiple check boxes and press print/preview then we have to press print button multiple times/come back for every invoice .
My requirement is when we execute J1iP for multiple invoices it should not come multiple times pop up window ..ie in one print request we need to send multiple invoices . How to achieve this functionality.Hi,
use NO_OPEN and NO_CLOSE fields of CONTROL_PARAMETERS structure
in Your call to smart form function module.
Currently You print every invoice in separate spool request.
You should print all invoices in one big spool requests.
Set NO_CLOSE = X to all, except last one, and NO_OPEN = X to all, except first one.
Regards,
Przemysław -
Problem when crediting invoice
Hi everybody,
First post for me, new to this forum but I have used it before for help with other questions.
Can't seem to find the correct help right now, so I joined your wonderful forum and maybe I can contribute somehow one day!
I have created an invoice from 2 different sales orders (2 different jobs), with 2 service orders.
This is only service, so only hours registered in CAT2. Then I ran DP91 for both orders and fixed the prices and such on the Debit Note Requests.
Then I created the invoice with Collective Billing Document VF04.
No problems so far.
After the invoice has been created I noticed that several hours are missing. I have created a Credit note, because I was told by my superiors that I cannot run VF11 24 hours AFTER invoice has been created.
But here I'm stuck.
How do I go from here? Customer only wants one invoice per job, so I cannot create an additional invoice for the remaining hours. I need to add the additional hours and then create a new invoice with the correct amount of hours so that it all ends up on just one single invoice.
Any ideas?Hi Hegal,
That's what I want, to cancel the old invoice and redo it.
But since I was told that, I cannot cancel an invoice unless it's created the same day i.e. an invoice created today, I'm not allowed to cancel tomorrow.
I have to create a credit for it.
And after this procedure, it seems like the hours used for the first invoice has status "fully invoiced" and cannot be used again. Maybe I need to create a new sales order with service order and register the hours again.
But this does create lots of extra work it seems.
To answer your second option, wont that create a separate row on the invoice? It could work, I'll just have to try it out first and make sure it looks the way our customer wants it.
Thank you very much for your reply!
Really appreciate it.
BR -
Sorting Problem when using HtmlDataTable
Hello,
In my table, I am displaying a list of homegrown, POJOs that represent users. Each row displays some info about the user as well as several command links for performing certain actions (like showing details, for instance). The sorting criteria is based upon whichever column is selected (the column names are being displayed via command links).
The sorting for my list of users is working fine with the exception of the command links per row. That is, if I have the following:
Last Name First Name
Conners John Show Details
Conners Amy Show DetailsSay I select the "Show Details" link for the first row. Details for John Conners are displayed. Good. Now I decide to sort the same list by First Name so I get the following:
Last Name First Name
Conners Amy Show Details
Conners John Show DetailsThe problem now is that when I select "Show Details" for the first row, information for John Conners appears. No matter what I do, it appears that the links in each row remain associated with whatever objects are displayed for that row the very first time the table is built.
How can I get the command links to "know" that their associated objects have changed after performing a sort routine?
Any ideas?
JeffSolution:
The problem was related to my usage of the list in conjunction with the code in my backing bean. Initially I was storing my list in the request scope. Basically, what was happening was I'd sort the list based upon a column that was selected. However, before the response was committed, I was retrieving the same list again--only in its previous, unordered state.
Now I have a less bulky (compared to what it could be) list that I store in the session. After I sort, I make sure to update the list in the session so each link in each row of the data table stay associated with the correct data.
Here's the sort method:
public void sort(ActionEvent actionEvent) {
sortColumn = (ColumnType) ColumnType.getEnumManager().getInstance(
actionEvent.getComponent().getId());
logger.debug("Attempting to sort by " + sortColumn);
Comparator c = null;
// Sort method will depend upon the column type
switch (sortColumn.getValue()) {
case ApplicationConstants.USER_ID_COLUMN:
c = new BeanPropertyComparator(ApplicationConstants.ID);
Collections.sort((List) this.getSearchResults(), c);
break;
case ApplicationConstants.LAST_NAME_COLUMN:
c = new BeanPropertyComparator(ApplicationConstants.LAST_NAME);
Collections.sort((List) this.getSearchResults(), c);
break;
case ApplicationConstants.FIRST_NAME_COLUMN:
c = new BeanPropertyComparator(ApplicationConstants.FIRST_NAME);
Collections.sort((List) this.getSearchResults(), c);
break;
default:
break;
* Update the object stored in the session so the sort order will be
* retained between requests.
facesContext.getApplication().createValueBinding(
"#{sessionScope.searchResults}").setValue(facesContext,
this.getSearchResults());
}The search results are initialized from a previous search page and its backing bean. The results are passed as a managed property to the bean containing the sort method.
Some snippets of my edit page that calls the sorting method is below:
<h:dataTable id="userTable" styleClass="table-background"
rowClasses="table-odd-row,table-even-row" cellpadding="5"
value="#{pc_Search_user_results.searchResults}" var="searchResult"
binding="#{pc_Search_user_results.userTable}">
<h:column>
<f:facet name="header">
<h:commandLink styleClass="table-header" id="userId"
actionListener="#{pc_Search_user_results.sort}">
<h:outputText value="User ID" />
</h:commandLink>
</f:facet>
<h:outputText value="#{searchResult.id}" />
</h:column>
<h:column>
<h:commandLink id="editLink" action="#{pc_Search_user_results.editUser}">
<h:outputText value="Edit" />
</h:commandLink>
</h:column>This is a long post, but I thought I'd try to explain for those who attempted to help as well as others.
Jeff -
Discount in 2 pages invoice Smartform
Hi;
i calculate the given discount in an invoice, if the invoice is a one page invoice the total discount is ok, but if it is a 2 pages invoice, in the first page the calculate of the discount is just for the items of the first page, then i turn to the 2nd page and the total of the discount is for the items of the 2nd page:
example:
page 1 discount: 85.11
page 2 discount: 00.38
the total should be 85.49 and should be shown in each page but instead is shown in parts in the 2 pages.
what should i do to get this discount in on variable that doesn't change on each page?
Thanks on advace.
David Fúnez
Corp. Mandofer/Asin
Tegucigalpa, HondurasIt is going to be little bit tricky. But I hope I will explain you better.
1. Create a one Dummy Window just before after the main window and before the Discount window.
Set the flag "Only After End of Main window"
Create one Code under this window
Put code like:
L_LAST = 'X'.
2. In Discount window:
Put this code:
if l_last = 'X'.
clear l_last.
clear: l_sub_tot_dis.
print_tot = 'X'.
endif.
l_sub_tot_dis = l_sub_tot_dis + discount_amt.
l_Tot_dis = l_tot_dis + discount_amt.
Print these both variables in separate text element
Put condition as PRINT_TOT = 'X' for the TOT_Discount
Hope this works.
Regards,
Naimesh Patel -
Hi
I have a problem when create invoice in VF01.
I created billing document in VA01 with order type "Rush order" and next in VF01 when I put
this number then and choose INVOICE type and press SAVE. Then I got an error "No billing documents were generated".
How to create invoice for that?
Thanx for help
Edited by: Kosmo on Oct 27, 2010 4:35 PMGo to VF02 and do "Relase to Accounting"
What error message you got then?
Regards,
SDNer -
Hi, I'm having a bit of a sorting problem when it comes to an artist with name variations. The example I'm going to use is DJ Tiesto.
There are album I have where he is credited as DJ Tiesto, and others where he is simply Tiesto.
In the end, I'd like these albums sorted chronologically under one name (say DJ Tiesto), while still preserving and showing the proper artist name for each album. I have it set to sort by "Album by Year", which is working fine.
The major problem I am having is that I can't get it to display properly across all iTunes viewing methods: List mode, Grid mode, and Coverflow.
I've tried leaving the Artist field alone, and changing the Sort Artist field to "DJ Tiesto" for all songs, and that almost works:
-List mode groups them all under "DJ Tiesto", while showing each albums Artist as the correct artist name.
-Grid mode sorted by Album groups them all under "DJ Tiesto", while showing each albums Artist as the correct artist name.
-Coverflow sorts them all in chronological order, while showing each albums Artist as the correct artist name.
Problem is, Grid mode sorted by ARTIST creates two separate artists! Some for DJ Tiesto and some for Tiesto!
To correct this I tried changing the Album Artist field for all songs to "DJ Tiesto", which solved that problem but created a bunch of new ones:
-List mode is still correctly grouping them under "DJ Tiesto", while showing each albums Artist as the correct artist name.
-Grid mode sorted by Album is still correctly grouping them under "DJ Tiesto", *however now it is not displaying the correct Artist name for each album!*
-Grid mode sorted by Artist is now grouping them all under "DJ Tiesto", *however it is not displaying the correct Artist name for each album!*
-Coverflow is sorting them in correct chronological order, *however it as well is not displaying the correct Artist name for each album!*
Using the Album Artist tag has created more problems that it has solved! Is there anyone who knows a way to achieve what I am trying to do? I have tried seemingly every option I can and have still not found a way to do this!!
Thanks!My own method of working involves renaming the files upon import to:
i "shotdate_sequencenumber"
Files are therefore typically named
b 2007-11-25_001
etc.
This way, sorting by Filename automatically sorts by Date by default. And it wouldn't even matter if you added a descriptive text in between the date and number (
b 2007-11-25_Scotland_001 -
To not allow billing cancellation when the invoice is cleared
Hello
I would like to know if there is any way to avoid the cancellation of an invoice via VF11 when the invoice has been already cleared.
Thanks in advance.You can write a user exit by checking the status of accounting document associated with the billing document.
Pl give points if you find my answer helpful / points to correct direction / resolves.
Thanks,
Ramesh -
Regarding invoice no. displaying in non-invoice no.list in document flow
Hi All,
I have 3 radio buttons. if i select 1st one only orders with invoice list should be displayed and for 2nd only orders without invoice list should be displayed and for the 3rd both should be displayed.
but here the problem was when i select the 2nd radiobutton and see the output it was showing all the orders without invoice no. but when i see the document flow for the first order it was showing invoice no. in DOCUMENT FLOW. but it was not displaying in the output.
So any one can help me in this issue, i am sending the select statements i have used,
Get the invoice numbers and the corresponding order numbers for the
date range specified on the selection screen.
SELECT vbrkvbeln vbrpposnr vbrp~matnr
vbrpaubel vbfaposnv
INTO CORRESPONDING FIELDS OF TABLE i_invoice_items FROM vbrk
INNER JOIN vbpa ON vbrkvbeln = vbpavbeln
INNER JOIN vbrp ON vbrkvbeln = vbrpvbeln
INNER JOIN vbfa ON vbrkvbeln = vbfavbeln AND
vbrpposnr = vbfaposnn AND
vbrpaubel = vbfavbelv
WHERE vbrk~fkdat BETWEEN s_fkdat-low AND s_fkdat-high AND
vbrk~bukrs IN s_bukrs AND
vbpa~parvw = 'WE' AND
vbpa~kunnr IN s_kunnr AND
vbrk~vkorg IN s_vkorg AND
vbrp~prodh IN s_prdha AND
vbrp~werks IN s_werks AND
vbfavbelv = vbrpaubel AND
vbfa~vbtyp_n = 'M' AND
vbfa~vbtyp_v = 'C'.
get all open orders i.e. orders that have not been invoiced - Start.
Step 1 - Get all invoiced orders.
SELECT vbfavbelv vbfaposnv
INTO CORRESPONDING FIELDS OF TABLE i_inv_ord_items
FROM vbfa
INNER JOIN vbpa ON vbfavbelv = vbpavbeln
INNER JOIN vbak ON vbfavbelv = vbakvbeln
INNER JOIN vbap ON vbfavbelv = vbapvbeln AND
vbfaposnv = vbapposnr
WHERE vbtyp_n = 'M' AND
vbtyp_v = 'C' AND
vbpa~parvw = 'WE' AND
vbpa~kunnr IN s_kunnr AND
vbak~vkorg IN s_vkorg AND
vbak~bukrs_vf IN s_bukrs AND
vbap~abgru = ' ' AND
vbap~werks IN s_werks AND
vbap~prodh IN s_prdha.
STEP 2 - Get all orders that have not been invoiced.
Step 2a) Get all orders that match the filters specified on the selection screen
SELECT vbakvbeln vbapposnr matnr
INTO CORRESPONDING FIELDS OF TABLE i_ord_items FROM vbak
INNER JOIN vbap ON vbakvbeln = vbapvbeln
INNER JOIN vbpa ON vbakvbeln = vbpavbeln
WHERE vbpa~parvw = 'WE' AND
vbpa~kunnr IN s_kunnr AND
vbak~vkorg IN s_vkorg AND
vbak~bukrs_vf IN s_bukrs AND
prodh IN s_prdha AND
werks IN s_werks AND
vbap~abgru = ' '.
SORT i_ord_items BY vbeln posnr.
Step 2b) Delete orders that have been invoiced by
deleting records found in Step 1
LOOP AT i_inv_ord_items INTO wa_inv_ord_items.
READ TABLE i_ord_items
INTO wa_ord_items
WITH KEY vbeln = wa_inv_ord_items-vbelv
posnr = wa_inv_ord_items-posnv
BINARY SEARCH.
IF sy-subrc = 0.
gv_index = sy-tabix.
DELETE i_ord_items
INDEX gv_index.
ENDIF.
ENDLOOP.
Step 2c) Remove entries that exist in the invoiced orders internal table
to avoid duplicate entries
SORT i_ord_items BY vbeln posnr.
LOOP AT i_invoice_items INTO wa_invoice_items.
READ TABLE i_ord_items
INTO wa_ord_items
WITH KEY vbeln = wa_invoice_items-aubel
posnr = wa_invoice_items-posnv
BINARY SEARCH.
IF sy-subrc = 0.
gv_index = sy-tabix.
DELETE i_ord_items
INDEX gv_index.
ENDIF.
ENDLOOP.
get all open orders i.e. orders that have not been invoiced - End.
Combine the open orders and invoiced orders into one internal table
--Code added by CHHEDAM.SMS129705.Date- 03/28/2007--
Clear 'invoiced' orders if open orders are opted.
IF g_open EQ 'X'.
CLEAR: i_invoice_items[].
ENDIF.
--End of code added by CHHEDAM.SMS129705.Date- 03/28/2007--
IF g_open EQ 'X' OR g_both EQ 'X'.
LOOP AT i_ord_items INTO wa_ord_items.
CLEAR wa_invoice_items.
MOVE: wa_ord_items-vbeln TO wa_invoice_items-aubel,
wa_ord_items-posnr TO wa_invoice_items-posnv,
wa_ord_items-matnr TO wa_invoice_items-matnr.
APPEND wa_invoice_items TO i_invoice_items.
ENDLOOP.
ENDIF.
SORT i_invoice_items BY vbeln.
IF i_invoice_items[] IS NOT INITIAL.
SELECT *
FROM vbak
INTO TABLE gt_vbak_table
FOR ALL ENTRIES IN i_invoice_items
WHERE vbeln = i_invoice_items-aubel.
IF sy-subrc = 0.
DELETE gt_vbak_table
WHERE vkorg NOT IN s_vkorg OR
bukrs_vf NOT IN s_bukrs OR
auart NOT IN s_auart.
ENDIF.
SORT gt_vbak_table BY vbeln.
IF gt_vbak_table[] IS NOT INITIAL.
SELECT *
FROM vbap
INTO TABLE gt_vbap_table
FOR ALL ENTRIES IN gt_vbak_table
WHERE vbeln = gt_vbak_table-vbeln.
IF sy-subrc = 0.
DELETE gt_vbap_table
WHERE werks NOT IN s_werks OR
prodh NOT IN s_prdha.
ENDIF.
ENDIF.
ENDIF.
SORT gt_vbak_table BY vbeln.
SORT gt_vbap_table BY vbeln posnr.
LOOP AT i_invoice_items INTO wa_invoice_items.
READ TABLE gt_vbak_table
INTO gt_vbak_table_line
WITH KEY vbeln = wa_invoice_items-aubel
BINARY SEARCH.
IF sy-subrc = 0.
display_table_line-aubel = gt_vbak_table_line-vbeln.
display_table_line-vkorg = gt_vbak_table_line-vkorg.
display_table_line-auart = gt_vbak_table_line-auart.
display_table_line-bukrs_vf = gt_vbak_table_line-bukrs_vf.
display_table_line-bill_to = gt_vbak_table_line-kunnr.
display_table_line-vdatu = gt_vbak_table_line-vdatu.
display_table_line-faksk = gt_vbak_table_line-faksk.
display_table_line-lifsk = gt_vbak_table_line-lifsk.
ENDIF.
READ TABLE gt_vbap_table
INTO gt_vbap_table_line
WITH KEY vbeln = wa_invoice_items-aubel
posnr = wa_invoice_items-posnv
BINARY SEARCH.
IF sy-subrc = 0.
display_table_line-posnr = gt_vbap_table_line-posnr.
display_table_line-matnr = gt_vbap_table_line-matnr.
display_table_line-kdmat = gt_vbap_table_line-kdmat.
display_table_line-maktx = gt_vbap_table_line-arktx.
display_table_line-werks = gt_vbap_table_line-werks.
display_table_line-prodh = gt_vbap_table_line-prodh.
display_table_line-kwmeng = gt_vbap_table_line-kwmeng.
display_table_line-vrkme = gt_vbap_table_line-vrkme.
display_table_line-waerk = gt_vbap_table_line-waerk.
display_table_line-net_price = gt_vbap_table_line-netwr.
display_table_line-kzwi1 = gt_vbap_table_line-kzwi1.
display_table_line-kzwi2 = gt_vbap_table_line-kzwi2.
display_table_line-kzwi3 = gt_vbap_table_line-kzwi3.
display_table_line-kzwi4 = gt_vbap_table_line-kzwi4.
display_table_line-kzwi5 = gt_vbap_table_line-kzwi5.
display_table_line-wavwr = gt_vbap_table_line-wavwr.
display_table_line-mwsbp = gt_vbap_table_line-mwsbp.
ENDIF.
display_table_line-vbeln = wa_invoice_items-vbeln.
APPEND display_table_line TO display_table_line.
CLEAR wa_invoice_items.
CLEAR display_table_line.
ENDLOOP.
Get the Purchase Order Number, Sales District and Desc
IF display_table_line[] IS NOT INITIAL.
CLEAR: gt_vbkd_table.
CLEAR: gt_t171t_table.
SELECT *
FROM vbkd
INTO TABLE gt_vbkd_table
FOR ALL ENTRIES IN display_table_line
WHERE vbeln = display_table_line-aubel.
SORT gt_vbkd_table BY vbeln.
IF gt_vbkd_table[] IS NOT INITIAL.
SELECT *
FROM t171t
INTO TABLE gt_t171t_table
FOR ALL ENTRIES IN gt_vbkd_table
WHERE bzirk = gt_vbkd_table-bzirk.
ENDIF.
SORT gt_t171t_table BY bzirk.
ENDIF.
Get Ship To Account
IF display_table_line[] IS NOT INITIAL.
CLEAR: gt_vbpa_table.
SELECT *
INTO TABLE gt_vbpa_table
FROM vbpa
FOR ALL ENTRIES IN display_table_line
WHERE vbeln = display_table_line-aubel.
IF sy-subrc = 0.
DELETE gt_vbpa_table
WHERE parvw <> 'WE'.
ENDIF.
ENDIF.
SORT gt_vbpa_table BY vbeln parvw.
Get Ship To Name and City
IF gt_vbpa_table[] IS NOT INITIAL.
CLEAR: gt_kna1_table.
SELECT *
INTO TABLE gt_kna1_table
FROM kna1
FOR ALL ENTRIES IN gt_vbpa_table
WHERE kunnr = gt_vbpa_table-kunnr.
ENDIF.
SORT gt_kna1_table BY kunnr.
IF display_table_line[] IS NOT INITIAL.
CLEAR: gt_vbpa2_table.
SELECT *
INTO TABLE gt_vbpa2_table
FROM vbpa
FOR ALL ENTRIES IN display_table_line
WHERE vbeln = display_table_line-aubel.
IF sy-subrc = 0.
DELETE gt_vbpa2_table
WHERE parvw <> 'ZS' .
ENDIF.
ENDIF.
SORT gt_vbpa2_table BY vbeln parvw.
IF gt_vbpa2_table[] IS NOT INITIAL.
CLEAR: gt_kna12_table.
SELECT *
INTO TABLE gt_kna12_table
FROM kna1
FOR ALL ENTRIES IN gt_vbpa2_table
WHERE kunnr = gt_vbpa2_table-kunnr.
ENDIF.
SORT gt_kna12_table BY kunnr.
Get Sales Group and Desc
IF display_table_line[] IS NOT INITIAL.
CLEAR: gt_knvv_table.
SELECT *
INTO TABLE gt_knvv_table
FROM knvv
FOR ALL ENTRIES IN display_table_line
WHERE kunnr = display_table_line-bill_to AND
vkorg = display_table_line-vkorg AND
vtweg = '01'.
SORT gt_knvv_table BY kunnr vkorg vtweg.
IF gt_knvv_table[] IS NOT INITIAL.
CLEAR: gt_tvgrt_table.
SELECT *
INTO TABLE gt_tvgrt_table
FROM tvgrt
FOR ALL ENTRIES IN gt_knvv_table
WHERE vkgrp = gt_knvv_table-vkgrp AND
spras = sy-langu.
ENDIF.
SORT gt_tvgrt_table BY vkgrp spras.
ENDIF.
Get Order Status for the line items in the sales orders
IF display_table_line[] IS NOT INITIAL.
CLEAR: gt_vbup_table.
SELECT *
INTO TABLE gt_vbup_table
FROM vbup
FOR ALL ENTRIES IN display_table_line
WHERE vbeln = display_table_line-aubel AND
posnr = display_table_line-posnr.
ENDIF.
SORT gt_vbup_table BY vbeln posnr.
IF gt_vbup_table[] IS NOT INITIAL.
CLEAR: gt_tvbst_table.
SELECT *
INTO TABLE gt_tvbst_table
FROM tvbst
FOR ALL ENTRIES IN gt_vbup_table
WHERE spras = sy-langu AND
tbnam = 'VBUP' AND
fdnam = 'GBSTA' AND
statu = gt_vbup_table-gbsta.
ENDIF.
SORT gt_tvbst_table BY spras tbnam fdnam statu.
Get Blocked Reason Text for Billing and Delivery Block
IF display_table_line[] IS NOT INITIAL.
CLEAR: gt_tvfst_table.
SELECT *
INTO TABLE gt_tvfst_table
FROM tvfst
FOR ALL ENTRIES IN display_table_line
WHERE spras = sy-langu AND
faksp = display_table_line-faksk.
ENDIF.
SORT gt_tvfst_table BY spras faksp.
IF display_table_line[] IS NOT INITIAL.
CLEAR: gt_tvlst_table.
SELECT *
INTO TABLE gt_tvlst_table
FROM tvlst
FOR ALL ENTRIES IN display_table_line
WHERE spras = sy-langu AND
lifsp = display_table_line-lifsk.
ENDIF.
SORT gt_tvlst_table BY spras lifsp.
SORT display_table_line BY vbeln aubel posnr matnr.
DELETE ADJACENT DUPLICATES
FROM display_table_line
COMPARING aubel posnr matnr .
LOOP AT display_table_line INTO display_table_line.
gv_index = sy-tabix.
Get the Purchase Order Number, Sales District and Desc
READ TABLE gt_vbkd_table
INTO gt_vbkd_table_line
WITH KEY vbeln = display_table_line-aubel
BINARY SEARCH.
IF sy-subrc = 0.
display_table_line-bstkd = gt_vbkd_table_line-bstkd.
display_table_line-bzirk = gt_vbkd_table_line-bzirk.
READ TABLE gt_t171t_table
INTO gt_t171t_table_line
WITH KEY bzirk = gt_vbkd_table_line-bzirk
BINARY SEARCH.
IF sy-subrc = 0.
display_table_line-bztxt = gt_t171t_table_line-bztxt.
ENDIF.
ENDIF.
Get Ship To Account
READ TABLE gt_vbpa_table
INTO gt_vbpa_table_line
WITH KEY vbeln = display_table_line-aubel
parvw = 'WE'
BINARY SEARCH.
IF sy-subrc = 0.
display_table_line-ship_to = gt_vbpa_table_line-kunnr.
ENDIF.
Get Ship To Name and City
READ TABLE gt_kna1_table
INTO gt_kna1_table_line
WITH KEY kunnr = display_table_line-ship_to
BINARY SEARCH.
IF sy-subrc = 0.
display_table_line-ship_to_name = gt_kna1_table_line-name1.
display_table_line-ship_to_city = gt_kna1_table_line-ort01.
ENDIF.
Get Ship To Salesman Number
READ TABLE gt_vbpa2_table
INTO gt_vbpa2_table_line
WITH KEY vbeln = display_table_line-aubel
parvw = 'ZS'
BINARY SEARCH.
IF sy-subrc = 0.
display_table_line-salesrep = gt_vbpa2_table_line-kunnr.
ENDIF.
Get Ship To Salesman
READ TABLE gt_kna12_table
INTO gt_kna12_table_line
WITH KEY kunnr = display_table_line-salesrep
BINARY SEARCH.
IF sy-subrc = 0.
display_table_line-ship_to_srep = gt_kna12_table_line-name1.
ENDIF.
Get Sales Group and Desc
READ TABLE gt_knvv_table
INTO gt_knvv_table_line
WITH KEY kunnr = display_table_line-bill_to
vkorg = display_table_line-vkorg
vtweg = '01'
BINARY SEARCH.
IF sy-subrc = 0.
display_table_line-vkgrp = gt_knvv_table_line-vkgrp.
READ TABLE gt_tvgrt_table
INTO gt_tvgrt_table_line
WITH KEY vkgrp = gt_knvv_table_line-vkgrp
spras = sy-langu
BINARY SEARCH.
IF sy-subrc = 0.
display_table_line-bezei = gt_tvgrt_table_line-bezei.
ENDIF.
ENDIF.
Get Order Status for the line items in the sales orders
READ TABLE gt_vbup_table
INTO gt_vbup_table_line
WITH KEY vbeln = display_table_line-aubel
posnr = display_table_line-posnr
BINARY SEARCH.
IF sy-subrc = 0.
display_table_line-gbsta = gt_vbup_table_line-gbsta.
ENDIF.
READ TABLE gt_tvbst_table
INTO gt_tvbst_table_line
WITH KEY spras = sy-langu
tbnam = 'VBUP'
fdnam = 'GBSTA'
statu = display_table_line-gbsta
BINARY SEARCH.
IF sy-subrc = 0.
display_table_line-status = gt_tvbst_table_line-bezei.
ENDIF.
Get Blocked Reason Text for Billing and Delivery Block
READ TABLE gt_tvfst_table
INTO gt_tvfst_table_line
WITH KEY spras = sy-langu
faksp = display_table_line-faksk
BINARY SEARCH.
IF sy-subrc = 0.
display_table_line-fakskt = gt_tvfst_table_line-vtext.
ENDIF.
SELECT SINGLE vtext INTO display_table_line-lifskt
READ TABLE gt_tvlst_table
INTO gt_tvlst_table_line
WITH KEY spras = sy-langu
lifsp = display_table_line-lifsk
BINARY SEARCH.
IF sy-subrc = 0.
display_table_line-lifskt = gt_tvlst_table_line-vtext.
ENDIF.
Get Total Net and Total Gross Invoice Amount
display_table_line-brtwr = display_table_line-kzwi1 -
display_table_line-kzwi2 -
display_table_line-kzwi3 -
display_table_line-kzwi4 -
display_table_line-kzwi5.
Calculate Discount
display_table_line-disc = display_table_line-kzwi2 +
display_table_line-kzwi4.
Unit Price and cost.
IF display_table_line-kwmeng NE 0.
display_table_line-unit_price = display_table_line-brtwr /
display_table_line-kwmeng.
display_table_line-wavwr = display_table_line-wavwr /
display_table_line-kwmeng.
ELSE.
display_table_line-wavwr = 0.
ENDIF.
Calculate the GPM percentage.
IF display_table_line-unit_price NE 0.
display_table_line-gpm_perc = ( ( display_table_line-unit_price -
display_table_line-wavwr ) /
display_table_line-unit_price ) * 100.
ENDIF.
Update the internal table.
SHIFT display_table_line-matnr LEFT DELETING LEADING '0'.
SHIFT display_table_line-bill_to LEFT DELETING LEADING '0'.
SHIFT display_table_line-ship_to LEFT DELETING LEADING '0'.
SHIFT display_table_line-vbeln LEFT DELETING LEADING '0'.
SHIFT display_table_line-aubel LEFT DELETING LEADING '0'.
WRITE display_table_line-vdatu TO display_table_line-vdatu_char MM/DD/YYYY.
MODIFY display_table_line
INDEX gv_index
FROM display_table_line
TRANSPORTING vbeln aubel bzirk bztxt
bill_to ship_to ship_to_name ship_to_city
salesrep ship_to_srep vkgrp bezei
bstkd gbsta status fakskt
lifskt matnr vdatu brtwr
disc unit_price wavwr gpm_perc
vdatu_char.
CLEAR: display_table_line, tvbst_wa.
ENDLOOP.
IF s_vkgrp[] IS NOT INITIAL.
DELETE display_table_line WHERE vkgrp NOT IN s_vkgrp.
ENDIF.
IF s_bzirk[] IS NOT INITIAL.
DELETE display_table_line WHERE bzirk NOT IN s_bzirk.
ENDIF.
IF s_srep[] IS NOT INITIAL.
DELETE display_table_line WHERE salesrep NOT IN s_srep.
ENDIF.
SORT display_table_line BY vkorg vkgrp ship_to_srep bill_to.
DELETE display_table_line WHERE aubel = ' '.
ENDMETHOD. "read_main_data
METHOD display_report.
CALL METHOD alv_class->set_table_for_first_display
EXPORTING
I_BUFFER_ACTIVE =
I_BYPASSING_BUFFER =
I_CONSISTENCY_CHECK =
I_STRUCTURE_NAME =
IS_VARIANT =
I_SAVE =
I_DEFAULT = 'X'
is_layout = gv_layout
IS_PRINT =
IT_SPECIAL_GROUPS =
IT_TOOLBAR_EXCLUDING =
IT_HYPERLINK =
IT_ALV_GRAPHICS =
IT_EXCEPT_QINFO =
IR_SALV_ADAPTER =
CHANGING
it_outtab = display_table_line[]
it_fieldcatalog = gt_field_cat
IT_SORT =
IT_FILTER =
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDMETHOD. "display_report
Thanks in Advance,
Ramana Prasad.THi Janakiraman,
unfortunately we don't have an upload storage here in the SDN. At this point we have two options:
a) you could upload the screenshots to a website that provides storage and then you can paste the url to the screenshots here
b) we can route this through our support channel. You can send a message to our support team in the <a href="http://service.sap.com/smb/sbo/support">SAP Business One Support Center</a> in our <a href="http://service.sap.com/smb/sbo">SAP PartnerEdge Portal</a>.
Please use the method that works best for you.
Thanks,
Torsten -
Problem when trying to print standart invoice crystal report for SAP
Hi All, I have the following problem when trying to print a system invoice report in crystal reports for SAP
I pass params and load the report using this code
Private Sub DisplayThreadReportSeq()
Dim oView As New frmViewReport
Dim strReportPath As String = ""
Dim strParamName As String = ""
Try
Dim CR As New ReportDocument
CR.Load(oReport.CrstPath)
' Declare the parameter related objects.
SetReportValues(CR)
Dim crParameterDiscreteValue As ParameterDiscreteValue
Dim crParameterFieldDefinitions As ParameterFieldDefinitions
Dim crParameterFieldLocation As ParameterFieldDefinition
Dim crParameterValues As ParameterValues
' Get the report's parameters collection.
For Each oPar As cslParam In oReport.Params
crParameterFieldDefinitions = CR.DataDefinition.ParameterFields
crParameterFieldLocation = crParameterFieldDefinitions.Item(oPar.ParName)
crParameterValues = crParameterFieldLocation.CurrentValues
crParameterDiscreteValue = New CrystalDecisions.Shared.ParameterDiscreteValue
crParameterDiscreteValue.Value = oPar.Value
crParameterValues.Add(crParameterDiscreteValue)
crParameterFieldLocation.ApplyCurrentValues(crParameterValues)
Next
If pPrint Then
If oReport.Printer "" Then
CR.PrintOptions.PrinterName = oReport.Printer
End If
CR.PrintToPrinter(IIf(oReport.Copies = "", 1, oReport.Copies), False, 0, 0)
SBO_Application.StatusBar.SetText("Printed Document Successfully", SAPbouiCOM.BoMessageTime.bmt_Medium, SAPbouiCOM.BoStatusBarMessageType.smt_Success)
Else
oView.Text = pReport
oView.TopMost = True
oView.Viewer.ReportSource = CR
oView.Hide()
oView.ShowDialog()
End If
Catch ex As Exception
Util_GenErrorLog("DisplayReport", ex)
End Try
End Sub
This code works fine when the report invoke to print is developed in crystal reports version for .net 2008 or .net 2005
when trying to print a report standart getting from SAP BO 8.8.1 using this code I getting the following error:
Error in File C:UsersecombaAppDataLocalTemp5ARInvoiceStandartSap {300B9A68-DF05-4D7B-8F3B-1670A4493BEE}.rpt:
Error in formula .
'Shared numberVar SectionTotalMaxHeght;
A number, currency amount, boolean, date, time, date-time, or string is expected here.
This report is the standart report that SAP 8.8.1 includes and works fine on SAP.
I referenced this dlls CrystalDecisions.CrystalReports.Engine.dll, CrystalDecisions.CrystalReports.Shared, version 10.2.3600
How I can get these dll´s version for Crystal Report 2008 for SAP Business one or How I can solve this problem
thanks in advance,
Ezequiel.Hi Ezequiel,
You can try to search in SAP Business One Reporting & Printing forum section or post there.
nd.Q -
Delivry Challan/Proforma Invoice and Actual A/R Invoice Number sud b same
Hi.. Experts , Please read the following scenario :
my client wants to send the proforma Invoice to his customer at the time of delivery. He does not want to punch actual A/R Invoice at this stage reason some time his delivery gets rejected due to some reason. So he wants to be at safer side.
When the send goods is successfully delivered only then he wants to punch actual A/R invoice in the system with the same number of Proforma Invoice.
Solution I have given :
What I have done, I have prepared one more PLD named Proforma Invoice based on the Delivery document. the Number of this Proforma Invoice is based on manually entry number. when the goods is successfully delivered to the customer, Actual A/R Invoice with same Number (Proforma Invoice number) manually entered.
Please let me know whether this solution is suitable or not..
Regards
RakhiHi Joseph
No there is no issue in document Number but I feel it would be bit tough to maintain document number manually in future because here I I have to punch A/R Invoice Number manully with the number of Proforma Invoice (delivery Document Number).
Lets say during delivery , the proforma Invoice number i punch is 3000 but this document number is not available for A/R Invoice. then how I will maintain this situtation ?
Regards
Rakhi -
Dear Experts,
i am getting the below error when i was giving * (Star) to view all the items in DB
[Microsoft][SQL Server Native Client 11.0][SQL Server]The text, ntext, and image data types cannot be compared or sorted, except when using IS NULL or LIKE operator. 'Items' (OITM) (OITM)
As i was searching individually it is working fine
can any one help me how to find this..
Regards,
Meghanath.SDear Nithi Anandham,
i am not having any query while finding all the items in item master data i am giving find mode and in item code i was trying to type *(Star) and enter while typing enter the above issue i was facing..
Regards,
Meghanath -
hi Experts,
while running SQL Query i am getting an error as
The text, ntext, and image data types cannot be compared or sorted, except when using IS NULL or LIKE operator. for the query
select T1. Dscription,T1.docEntry,T1.Quantity,T1.Price ,
T2.LineText
from OQUT T0 INNER JOIN QUT1 T1 ON T0.DocEntry = T1.DocEntry INNER JOIN
QUT10 T2 ON T1.DocEntry = T2.DocEntry where T1.DocEntry='590'
group by T1. Dscription,T1.docEntry,T1.Quantity,T1.Price
,T2.LineText
how to resolve the issueDear Meghanath,
Please use the following query, Hope your purpose will serve.
select T1. Dscription,T1.docEntry,T1.Quantity,T1.Price ,
CAST(T2.LineText as nvarchar (MAX))[LineText]
from OQUT T0 INNER JOIN QUT1 T1 ON T0.DocEntry = T1.DocEntry LEFT OUTER JOIN
QUT10 T2 ON T1.DocEntry = T2.DocEntry --where T1.DocEntry='590'
group by T1. Dscription,T1.docEntry,T1.Quantity,T1.Price
,CAST(T2.LineText as nvarchar (MAX))
Regards,
Amit
Maybe you are looking for
-
Unable to see Hyperion FR reports in PDF view.
Hi All, We are using Hyperion 11.1.1.3 version .User can able to open the report in HTML view but not in PDF View.When users try to open the report in PDF view ,found that PDF view grayed out(disabled).we tried to change the file preference-->preview
-
How do I place text on a ScatterGraph and have an arrow point to a data point on a plot?
For example, show the minimum point with the string "MIN" and draw an arrow from the text to the minimum point. I am using Measurement Studio 7.0 with C#. This could be accomplished in MS 6.0 with annotations.
-
why dose my after effects CS6 crash
-
Is a simple question. I have a KT3 Ultra2 series mb with a via kt333 chip series. I am running an Athlon xp2400 cpu on Windows XP. The infoview reports the processor to be only an xp1800+. How and where do i fix this??????? (I am bios friendly) thanx
-
Hi since a couple of weeks my KN9 presentations saved in KN8 don't open anymore nor on my KN8 neither on those of my colleagues. The message just says: can't open the xxx.key file I need to save presentations created in KN9 into KN8 to share them wit