“Query trong SAP B1 giúp người dùng viết truy vấn SQL tùy chỉnh để lấy dữ liệu từ hệ thống.
Query Manager là công cụ quản lý, lưu trữ, phân quyền và chia sẻ các truy vấn đó, giúp việc truy xuất dữ liệu nhanh chóng và bảo mật hơn.”
1️⃣ Query và Query Manager trong SAP Business One
Query là một truy vấn SQL tùy chỉnh mà người dùng tạo để trích xuất dữ liệu phục vụ phân tích, báo cáo hoặc kiểm tra nghiệp vụ.
Query Manager là giao diện quản lý các truy vấn trong SAP Business One. Tại đây, người dùng có thể:
- Lưu và tổ chức các truy vấn theo nhóm;
- Phân quyền truy cập cho từng người dùng hoặc nhóm người dùng;
- Gắn tham số động (Filter) giúp dễ dàng tái sử dụng;
- Thực thi trực tiếp trong hệ thống mà không cần mở SQL Server.
Thông thường, các truy vấn trong Query Manager chỉ dùng để lấy dữ liệu. Tuy nhiên, chúng ta hoàn toàn có thể mở rộng – gọi và chạy một Store Procedure trực tiếp từ Query – để xử lý nghiệp vụ phức tạp hơn.
2️⃣ Tạo Store Procedure trong SQL Server
Trước tiên, bạn cần tạo sẵn Store Procedure trong cơ sở dữ liệu SAP B1 (ví dụ: Testing_Report).
Store này có thể dùng để tổng hợp dữ liệu, phân tích doanh thu theo nhóm hàng, tháng hoặc các điều kiện cụ thể.

Ví dụ: Store nhận hai tham số: @Month và @Group để lọc dữ liệu theo tháng và nhóm hàng.
3️⃣ Viết Query để thực thi Store Procedure
Trong SAP B1, mở Query Generator và nhập câu lệnh dưới đây để gọi Store:
DECLARE @ItmGrp NVARCHAR(50) = '[%0]';
DECLARE @Month INT = CONVERT(INT, [%1]);
EXEC Testing_Report
@Month = @Month,
@Group = @ItmGrp;
Ở đây, [%0] và [%1] là hai tham số đầu vào (parameters) mà SAP B1 sẽ hiển thị dưới dạng hộp thoại Filter khi chạy Query.
4️⃣ Gắn Filter cho tham số đầu vào
Bạn có thể gắn danh sách chọn (List of Values) cho tham số, giúp người dùng dễ dàng chọn Group hoặc Tháng mà không cần gõ tay.
Filter cho Group (bảng OITB):
/* SELECT * FROM OITB T0 WHERE CAST(T0.ItmsGrpCod AS NVARCHAR(50)) = '[%0]' */
Filter cho Tháng (bảng OFPR):
/* SELECT * FROM OFPR T1 WHERE T1.SubNum = [%1] AND "Category" = YEAR(CURRENT_DATE) */
Khi thực thi Query, hệ thống sẽ hiển thị hộp thoại để người dùng chọn tham số như hình minh họa:
5️⃣ Kết quả khi thực thi
Sau khi chọn tham số và chạy Query, kết quả sẽ được hiển thị ngay trong cửa sổ SAP B1.
Dữ liệu được lấy từ Store Procedure, giúp người dùng tận dụng toàn bộ logic SQL có sẵn mà không cần viết lại trong Query.
6️⃣ Lưu ý kỹ thuật
- Query Manager trong SAP B1 không hỗ trợ
CREATEhoặcALTER— chỉ có thể gọi Store Procedure đã tồn tại. - Không nên thực hiện thao tác INSERT/UPDATE/DELETE trong Store được gọi, trừ khi dùng đúng context nghiệp vụ (vì có thể ảnh hưởng dữ liệu gốc).
- Khi dùng tham số, nên khai báo kiểu dữ liệu rõ ràng (
INT,NVARCHAR, …). - Store Procedure nên được đặt tên dễ hiểu và quản lý version rõ ràng (ví dụ:
sp_SalesSummary_v1).
Kết luận
“Khai thác Store Procedure từ Query Manager là một thủ thuật đơn giản nhưng rất hiệu quả trong SAP B1.
Nó giúp bạn tận dụng sức mạnh SQL sẵn có, tự động hóa báo cáo và tăng tính linh hoạt khi truy xuất dữ liệu.”
Bạn có thể xem toàn bộ quá trình demo tại video hướng dẫn:
🎬 Xem video hướng dẫn trên YouTube
Rất mong nhận được phản hồi và chia sẻ thêm từ cộng đồng SAP Business One Việt Nam.
Paul Nguyen
28/08/2024
Tác giả: Nghĩa Nguyễn (Paul) – Tư vấn hệ thống & Phát triển giải pháp ERP - BI - Automation cho doanh nghiệp SME.
- 🌐 Website: Paul Digital Hub
- 📰 Blog: Hội nhập kỷ nguyên số
- 💼 LinkedIn: Paul Nguyen – Digital Consultant
- 📊 Kinh nghiệm: 10+ năm triển khai & tư vấn SAP Business One, CRM, Power BI, Microsoft 365
- 📞 Zalo: 0933 873 165
🚀 Paul Digital Consultant – Kết nối Công nghệ & Doanh nghiệp