diff --git a/erpnext/accounts/report/general_ledger/general_ledger.py b/erpnext/accounts/report/general_ledger/general_ledger.py
index 1e38cd7..ed0fd9d 100644
--- a/erpnext/accounts/report/general_ledger/general_ledger.py
+++ b/erpnext/accounts/report/general_ledger/general_ledger.py
@@ -34,9 +34,9 @@
 		frappe.throw(_("From Date must be before To Date"))
 
 def get_columns():
-	return [_("Posting Date") + ":Date:100", _("Account") + ":Link/Account:200", _("Debit") + ":Float:100",
-		_("Credit") + ":Float:100", _("Voucher Type") + "::120", _("Voucher No") + "::160", _("Link") + "::20",
-		_("Against Account") + "::120", _("Cost Center") + ":Link/Cost Center:100", _("Remarks") + "::400"]
+	return ["Posting Date:Date:100", "Account:Link/Account:200", "Debit:Float:100",
+		"Credit:Float:100", "Voucher Type::120", "Voucher No:Dynamic Link/Voucher Type:160",
+		"Against Account::120", "Cost Center:Link/Cost Center:100", "Remarks::400"]
 
 def get_result(filters, account_details):
 	gl_entries = get_gl_entries(filters)
@@ -162,15 +162,6 @@
 	for d in data:
 		result.append([d.get("posting_date"), d.get("account"), d.get("debit"),
 			d.get("credit"), d.get("voucher_type"), d.get("voucher_no"),
-			get_voucher_link(d.get("voucher_type"), d.get("voucher_no")),
 			d.get("against"), d.get("cost_center"), d.get("remarks")])
 
 	return result
-
-def get_voucher_link(voucher_type, voucher_no):
-	icon = ""
-	if voucher_type and voucher_no:
-		icon = """<a href="%s"><i class="icon icon-share" style="cursor: pointer;">
-			</i></a>""" % ("/".join(["#Form", voucher_type, voucher_no]))
-
-	return icon
diff --git a/erpnext/stock/report/stock_ledger/stock_ledger.py b/erpnext/stock/report/stock_ledger/stock_ledger.py
index 4c5458d..17f280e 100644
--- a/erpnext/stock/report/stock_ledger/stock_ledger.py
+++ b/erpnext/stock/report/stock_ledger/stock_ledger.py
@@ -13,16 +13,13 @@
 	data = []
 	for sle in sl_entries:
 		item_detail = item_details[sle.item_code]
-		voucher_link_icon = """<a href="%s"><i class="icon icon-share"
-			style="cursor: pointer;"></i></a>""" \
-			% ("/".join(["#Form", sle.voucher_type, sle.voucher_no]),)
 
 		data.append([sle.date, sle.item_code, item_detail.item_name, item_detail.item_group,
 			item_detail.brand, item_detail.description, sle.warehouse,
 			item_detail.stock_uom, sle.actual_qty, sle.qty_after_transaction,
 			(sle.incoming_rate if sle.actual_qty > 0 else 0.0),
 			sle.valuation_rate, sle.stock_value, sle.voucher_type, sle.voucher_no,
-			voucher_link_icon, sle.batch_no, sle.serial_no, sle.company])
+			sle.batch_no, sle.serial_no, sle.company])
 
 	return columns, data
 
@@ -31,8 +28,9 @@
 		_("Brand") + ":Link/Brand:100", _("Description") + "::200", _("Warehouse") + ":Link/Warehouse:100",
 		_("Stock UOM") + ":Link/UOM:100", _("Qty") + ":Float:50", _("Balance Qty") + ":Float:100",
 		_("Incoming Rate") + ":Currency:110", _("Valuation Rate") + ":Currency:110", _("Balance Value") + ":Currency:110",
-		_("Voucher Type") + "::110", _("Voucher #") + "::100", _("Link") + "::30", _("Batch") + ":Link/Batch:100",
-		_("Serial #") + ":Link/Serial No:100", _("Company") + ":Link/Company:100"]
+		_("Voucher Type") + "::110", _("Voucher #") + ":Dynamic Link/Voucher Type:100", _("Batch") + ":Link/Batch:100",
+		_("Serial #") + ":Link/Serial No:100", _("Company") + ":Link/Company:100"
+	]
 
 def get_stock_ledger_entries(filters):
 	return frappe.db.sql("""select concat_ws(" ", posting_date, posting_time) as date,
