diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py
index 1a09d38..75825fc 100644
--- a/erpnext/accounts/utils.py
+++ b/erpnext/accounts/utils.py
@@ -7,8 +7,7 @@
 from frappe.utils import nowdate, cstr, flt, now, getdate, add_months
 from frappe import throw, _
 from frappe.utils import formatdate
-from erpnext.utilities import build_filter_conditions
-
+import frappe.widgets.reportview
 
 class FiscalYearError(frappe.ValidationError): pass
 class BudgetError(frappe.ValidationError): pass
@@ -197,26 +196,28 @@
 	jv_obj.save()
 
 def get_account_list(doctype, txt, searchfield, start, page_len, filters):
-	if not filters.get("group_or_ledger"):
-		filters["group_or_ledger"] = "Ledger"
+	filters = add_group_or_ledger_filter("Account", filters)
 
-	conditions, filter_values = build_filter_conditions(filters)
-
-	return frappe.db.sql("""select name, parent_account from `tabAccount`
-		where docstatus < 2 %s and %s like %s order by name limit %s, %s""" %
-		(conditions, searchfield, "%s", "%s", "%s"),
-		tuple(filter_values + ["%%%s%%" % txt, start, page_len]))
+	return frappe.widgets.reportview.execute("Account", filters = filters,
+		fields = ["name", "parent_account"],
+		limit_start=start, limit_page_length=page_len, as_list=True)
 
 def get_cost_center_list(doctype, txt, searchfield, start, page_len, filters):
-	if not filters.get("group_or_ledger"):
-		filters["group_or_ledger"] = "Ledger"
+	filters = add_group_or_ledger_filter("Cost Center", filters)
 
-	conditions, filter_values = build_filter_conditions(filters)
+	return frappe.widgets.reportview.execute("Cost Center", filters = filters,
+		fields = ["name", "parent_cost_center"],
+		limit_start=start, limit_page_length=page_len, as_list=True)
 
-	return frappe.db.sql("""select name, parent_cost_center from `tabCost Center`
-		where docstatus < 2 %s and %s like %s order by name limit %s, %s""" %
-		(conditions, searchfield, "%s", "%s", "%s"),
-		tuple(filter_values + ["%%%s%%" % txt, start, page_len]))
+def add_group_or_ledger_filter(doctype, filters):
+	if isinstance(filters, dict):
+		if not filters.get("group_or_ledger"):
+			filters["group_or_ledger"] = "Ledger"
+	elif isinstance(filters, list):
+		if "group_or_ledger" not in [d[0] for d in filters]:
+			filters.append([doctype, "group_or_ledger", "=", "Ledger"])
+
+	return filters
 
 def remove_against_link_from_jv(ref_type, ref_no, against_field):
 	linked_jv = frappe.db.sql_list("""select parent from `tabJournal Voucher Detail`
