diff --git a/client/src/org/compiere/print/AReport.java b/client/src/org/compiere/print/AReport.java
index be58321d29..37ef0a06fb 100644
--- a/client/src/org/compiere/print/AReport.java
+++ b/client/src/org/compiere/print/AReport.java
@@ -21,6 +21,8 @@ import java.awt.event.*;
 import java.sql.*;
 import java.util.*;
 import java.util.logging.*;
+
+import javax.sql.RowSet;
 import javax.swing.*;
 import org.compiere.apps.*;
 import org.compiere.model.*;
@@ -99,34 +101,23 @@ public class AReport implements ActionListener
 	private void getPrintFormats (int AD_Table_ID, JComponent invoker)
 	{
 		int AD_Client_ID = Env.getAD_Client_ID(Env.getCtx());
-		//
-		String sql = MRole.getDefault().addAccessSQL (
-			"SELECT AD_PrintFormat_ID, Name, AD_Client_ID "
-				+ "FROM AD_PrintFormat "
-				+ "WHERE AD_Table_ID=? AND IsTableBased='Y' "
-				+ "ORDER BY AD_Client_ID DESC, IsDefault DESC, Name",		//	Own First
-			"AD_PrintFormat", MRole.SQL_NOTQUALIFIED, MRole.SQL_RO);
+		RowSet rowSet = MPrintFormat.getAccessiblePrintFormats(AD_Table_ID, -1, null);
 		KeyNamePair pp = null;
 		try
 		{
-			PreparedStatement pstmt = DB.prepareStatement(sql, null);
-			pstmt.setInt(1, AD_Table_ID);
-			ResultSet rs = pstmt.executeQuery();
-			while (rs.next())
+			while (rowSet.next())
 			{
-				pp = new KeyNamePair (rs.getInt(1), rs.getString(2));
-				if (rs.getInt(3) == AD_Client_ID)
+				pp = new KeyNamePair (rowSet.getInt(1), rowSet.getString(2));
+				if (rowSet.getInt(3) == AD_Client_ID)
 				{
 					m_list.add(pp);
 					m_popup.add(pp.toString()).addActionListener(this);
 				}
 			}
-			rs.close();
-			pstmt.close();
 		}
 		catch (SQLException e)
 		{
-			log.log(Level.SEVERE, sql, e);
+			log.log(Level.SEVERE, e.getLocalizedMessage(), e);
 		}
 
 		//	No Format exists - create it
@@ -198,24 +189,13 @@ public class AReport implements ActionListener
 			
 			//	Execute Process
 			ProcessCtl worker = ProcessCtl.process(parent, WindowNo, pi, null);
-			if(worker == null) // Process has been canceled
-				return;
-			
-			try {
-				worker.start();
-			} catch(java.lang.IllegalThreadStateException itse) {
-				// Do nothing
-			}
 		}
 		else
 		{
 			// It's a default report using the standard printing engine
 			ReportEngine re = new ReportEngine (Env.getCtx(), pf, m_query, info);
-			Viewer viewer = new Viewer(re);
-			AEnv.addToWindowManager(viewer);
+			ReportCtl.preview(re);
 		}
-	//	if (m_popup.isVisible())
-	//		m_popup.setVisible(false);
 	}	//	launchReport
 
 	/**
@@ -240,28 +220,12 @@ public class AReport implements ActionListener
 	
 	/**************************************************************************
 	 * 	Get AD_Table_ID for Table Name
-	 * 	@param TableName table name
+	 * 	@param tableName table name
 	 * 	@return AD_Table_ID or 0
 	 */
-	static public int getAD_Table_ID (String TableName)
+	public static int getAD_Table_ID (String tableName)
 	{
-		int AD_Table_ID = 0;
-		String sql = "SELECT AD_Table_ID FROM AD_Table WHERE TableName=?";
-		try
-		{
-			PreparedStatement pstmt = DB.prepareStatement(sql, null);
-			pstmt.setString(1, TableName);
-			ResultSet rs = pstmt.executeQuery();
-			if (rs.next())
-				AD_Table_ID = rs.getInt(1);
-			rs.close();
-			pstmt.close();
-		}
-		catch (SQLException e)
-		{
-			log.log(Level.SEVERE, sql, e);
-		}
-		return AD_Table_ID;
+		return MTable.getTable_ID(tableName);
 	}	//	getAD_Table_ID
 
 }	//	AReport
diff --git a/client/src/org/compiere/print/ReportCtl.java b/client/src/org/compiere/print/ReportCtl.java
index 89f562b915..fdcaffe3a6 100644
--- a/client/src/org/compiere/print/ReportCtl.java
+++ b/client/src/org/compiere/print/ReportCtl.java
@@ -267,7 +267,11 @@ public class ReportCtl
 			re.print();
 	}
 	
-	private static void preview(ReportEngine re) 
+	/**
+	 * Launch viewer for report
+	 * @param re
+	 */
+	public static void preview(ReportEngine re) 
 	{
 		ReportViewerProvider provider = getReportViewerProvider();
 		provider.openViewer(re);