diff --git a/org.adempiere.base/src/org/compiere/print/ReportEngine.java b/org.adempiere.base/src/org/compiere/print/ReportEngine.java index fb37cb4123..9f15cb00cd 100644 --- a/org.adempiere.base/src/org/compiere/print/ReportEngine.java +++ b/org.adempiere.base/src/org/compiere/print/ReportEngine.java @@ -898,9 +898,12 @@ queued-job-count = 0 (class javax.print.attribute.standard.QueuedJobCount) delimiter = '\t'; try { + Object [] preValues = new Object [m_layout.colSuppressRepeats.length]; + int printColIndex = -1; // for all rows (-1 = header row) for (int row = -1; row < m_printData.getRowCount(); row++) { + printColIndex = -1; StringBuffer sb = new StringBuffer(); if (row != -1) m_printData.setRowIndex(row); @@ -923,10 +926,14 @@ queued-job-count = 0 (class javax.print.attribute.standard.QueuedJobCount) m_printFormat.getItem(col).getPrintName(language)); else { + printColIndex++; Object obj = m_printData.getNode(new Integer(item.getAD_Column_ID())); String data = ""; - if (obj == null) - ; + if (obj == null){ + if (m_layout.colSuppressRepeats[printColIndex]){ + preValues[col] = null; + } + } else if (obj instanceof PrintDataElement) { PrintDataElement pde = (PrintDataElement)obj; @@ -934,6 +941,14 @@ queued-job-count = 0 (class javax.print.attribute.standard.QueuedJobCount) data = pde.getValueAsString(); else data = pde.getValueDisplay(language); // formatted + + if (m_layout.colSuppressRepeats[printColIndex]){ + if (data.equals(preValues[printColIndex])){ + continue; + }else{ + preValues[printColIndex] = data; + } + } } else if (obj instanceof PrintData) {