Giải pháp tích hợp Website thương mại điện tử với hệ thống hoạch định doanh nghiệp SAP Business One và SAP S/4HANA
Tích hợp Website thương mại điện tử với hệ thống SAP Business One và SAP S/4HANA yêu cầu lớp trung gian điều phối (Middleware / API Gateway) giao tiếp qua giao thức OData RESTful hoặc SAP Service Layer. Do đặc thù kiểm soát chặt chẽ về kế toán, lô hạn sử dụng và hạn mức tín dụng trong nhân SAP HANA hoặc MS SQL, website không ghi trực tiếp vào bảng lõi mà trao đổi qua các đối tượng nghiệp vụ chuẩn. Kiến trúc phân tách đọc - ghi giúp tra cứu tồn kho khả dụng (ATP) nhanh và hạch toán chuẩn xác.
Các tập đoàn sản xuất, chuỗi phân phối dược phẩm, vật liệu xây dựng và bán lẻ quy mô lớn tại Việt Nam thường vận hành lõi tài chính - kế toán và chuỗi cung ứng trên nền tảng SAP Business One (SAP B1) hoặc SAP S/4HANA. Khi mở rộng sang kênh thương mại điện tử B2C và cổng đặt hàng đại lý B2B, bài toán trọng tâm là kết nối mượt mà với hệ thống SAP.
1. Đặc thù kiến trúc giao tiếp của SAP Business One (Service Layer) và SAP S/4HANA (OData / BAPI)
Khác với các hệ thống ERP mã nguồn mở cho phép can thiệp sâu vào mã nguồn lõi, hệ sinh thái SAP tuân thủ nghiêm ngặt nguyên tắc bảo toàn tính toàn vẹn của cơ sở dữ liệu (Database Integrity) và dấu vết kiểm toán (Audit Trail). Mọi hành vi dùng câu lệnh SQL (INSERT, UPDATE, DELETE) tác động trực tiếp vào cơ sở dữ liệu MS SQL Server hoặc SAP HANA bên dưới SAP đều bị nghiêm cấm tuyệt đối, vì hành động này sẽ phá vỡ cấu trúc khóa, làm lệch sổ cái và khiến doanh nghiệp mất ngay quyền hỗ trợ kỹ thuật chính hãng từ SAP.
Đối với phân khúc SAP Business One (SAP B1), phương thức tích hợp hiện đại và tiêu chuẩn là thông qua **SAP B1 Service Layer** (xây dựng trên giao thức OData v3/v4 qua HTTPS, trả về định dạng JSON) thay thế cho bộ thư viện DI API (COM Object) thế hệ cũ vốn nặng nề và dễ rò rỉ bộ nhớ. Trong khi đó, với các tập đoàn sử dụng **SAP S/4HANA**, luồng tích hợp chuẩn đi qua cổng **SAP Gateway (OData RESTful APIs)**, **SOAP Web Services**, hoặc thông qua nền tảng đám mây **SAP Integration Suite (CPI - Cloud Platform Integration)** kết nối về các hàm nghiệp vụ chuẩn BAPI / RFC và bản tin bất đồng bộ IDoc.
Vì cả SAP Service Layer lẫn SAP OData Gateway đều tiêu tốn tài nguyên phiên làm việc (Session License / Memory) và thực thi hàng loạt quy tắc kiểm tra nghiệp vụ phức tạp mỗi khi nhận yêu cầu, việc phơi bày trực tiếp cổng SAP ra ngoài Internet cho giao diện Website gọi thẳng là một rủi ro lớn về cả bảo mật lẫn hiệu năng. Do đó, kiến trúc bắt buộc phải có một lớp **Middleware / Integration Hub** đứng giữa để điều phối phiên kết nối (Connection Pooling), chuyển đổi định dạng dữ liệu và bảo vệ máy chủ SAP bên trong vùng mạng nội bộ an toàn.
| Tiêu chí kỹ thuật | SAP Business One (SAP B1) | SAP S/4HANA (Enterprise) |
|---|---|---|
| Cổng giao tiếp API chủ đạo | SAP B1 Service Layer (REST/OData trên SAP HANA hoặc SQL Server) và B1if (Integration Framework). | SAP Gateway OData Services (v2/v4), SAP Integration Suite (CPI), BAPI/RFC và cơ chế bản tin IDoc. |
| Quản lý dữ liệu hàng hóa gốc | Đối tượng Items (bảng OITM) và tồn kho theo kho hàng ItemWarehouseInfo (bảng OITW). | Material Master (MARA, MARC, MARD) phân chia chặt chẽ theo Plant, Storage Location và Sales Organization. |
| Quản lý đối tác và khách hàng | BusinessPartners (bảng OCRD) phân loại CardType = cCustomer kèm hạn mức tín dụng và điều khoản thanh toán. | Business Partner (BP) thống nhất vai trò Customer (FLCU00/FLCU01) gắn với vùng bán hàng (Sales Area). |
| Chứng từ đơn hàng và hóa đơn | Orders (ORDR / RDR1), DeliveryNotes (ODLN) và Invoices (OINV) liên kết qua trường BaseEntry. | Sales Order (VBAK / VBAP), Outbound Delivery (LIKP / LIPS) và Billing Document (VBRK / VBRP). |
2. Đồng bộ Master Data, tính giá phức tạp (Pricing Procedure) và kiểm tra tồn kho khả dụng (ATP)
Trong môi trường SAP, dữ liệu gốc (Master Data) như danh mục vật tư hàng hóa (Material Master / Items) và hồ sơ đối tác (Business Partner) được cấu trúc theo nhiều tầng tổ chức: Công ty (Company Code), Tổ chức bán hàng (Sales Organization), Kênh phân phối (Distribution Channel), Ngành hàng (Division - hợp thành Sales Area) và Nhà máy/Kho (Plant / Warehouse). Khi đồng bộ sang Website thương mại điện tử, lớp Middleware phải lọc đúng tổ hợp Sales Area dành riêng cho kênh bán hàng trực tuyến để lấy ra danh sách mã hàng được phép kinh doanh.
Bài toán phức tạp tiếp theo là cơ chế định giá. Trên SAP S/4HANA (sử dụng kỹ thuật Condition Technique với các bảng điều kiện PR00, K004, K007, MWST) cũng như trên SAP B1 (sử dụng Price Lists, Special Prices for Business Partners và Period and Volume Discounts), mức giá cuối cùng mà một khách hàng (đặc biệt là đại lý B2B) nhìn thấy phụ thuộc vào nhóm khách hàng, sản lượng lũy kế, bậc chiết khấu số lượng và chương trình khuyến mại tặng kèm hàng (Free Goods). Để hiển thị giá tức thì trên Website mà không phải gọi vào SAP ở mỗi cú nhấp chuột, hệ thống tích hợp sẽ trích xuất định kỳ (hoặc theo sự kiện thay đổi bảng điều kiện) các ma trận giá đã tính sẵn sang bảng giá trên Website, và chỉ gọi API mô phỏng đơn hàng (Sales Order Simulation BAPI) ở bước chốt giỏ hàng B2B giá trị lớn.
Đối với tồn kho, SAP quản lý khái niệm **Available-to-Promise (ATP)** rất chặt chẽ. Trên SAP B1, tồn kho khả dụng được tính bằng công thức InStock (Tồn thực tế) - IsCommited (Đã phân bổ giữ chỗ cho đơn hàng khác) + Ordered (Đang trên đường nhập về nếu cho phép bán trước). Trên SAP S/4HANA, cơ chế kiểm tra ATP căn cứ vào tồn kho không hạn chế (Unrestricted-Use Stock trong bảng MARD), trừ đi các yêu cầu xuất kho (Sales Requirements / Deliveries) và loại bỏ hoàn toàn tồn kho đang chờ kiểm định chất lượng (Quality Inspection Stock) hoặc tồn kho bị phong tỏa (Blocked Stock).
- Đồng bộ bổ sung thông tin Lô sản xuất và Hạn sử dụng (Batch Number & Expiration Date / Shelf Life) từ SAP sang Website đối với các ngành dược phẩm, mỹ phẩm, thực phẩm chức năng để tự động ngừng bán các lô hàng sắp cận hạn theo quy định.
- Với cổng thương mại điện tử bán buôn B2B kết nối SAP, đồng bộ tức thì thông tin Hạn mức tín dụng (Credit Limit), Công nợ hiện tại (Account Balance) và Số ngày nợ quá hạn từ đối tượng Business Partner để khóa hoặc cảnh báo ngay tại bước thanh toán nếu đại lý vượt trần công nợ.
- Sử dụng kỹ thuật Delta Sync (chỉ đồng bộ các bản ghi có dấu thời gian UpdateDate / UpdateTS hoặc thông qua bảng Change Pointers BDCP2 trên SAP) thay vì tải lại toàn bộ hàng trăm nghìn mã vật tư mỗi lần chạy đồng bộ.
3. Quy trình đẩy đơn hàng về SAP: kiểm soát Transaction Notification, thuế và phân bổ lô
Nhiều dự án tích hợp Website với SAP gặp thất bại ở giai đoạn vận hành thực tế do xem nhẹ các quy tắc kiểm duyệt nội bộ (Validation Rules) bên trong SAP. Trên SAP Business One, bộ phận kế toán và IT nội bộ thường cài đặt các đoạn mã kiểm tra trong thủ tục lưu trữ SBO_SP_TransactionNotification (ví dụ: bắt buộc đơn hàng phải có mã nhân viên kinh doanh phụ trách, bắt buộc phải chọn trung tâm chi phí Cost Center / Profit Center, hoặc không cho phép chiết khấu dòng hàng vượt quá tỷ lệ quy định). Trên SAP S/4HANA, các quy tắc tương tự nằm trong các User Exit, BAdI và cấu hình Incompletion Log của chứng từ Sales Order.
Nếu lớp tích hợp của Website đẩy đơn hàng vào SAP mà thiếu một trong các trường bắt buộc nội bộ này, SAP sẽ từ chối tạo chứng từ và trả về lỗi. Do đó, trước khi lập trình luồng đẩy đơn hàng (POST /b1s/v1/Orders trên SAP B1 hoặc API_SALES_ORDER_SRV trên S/4HANA), đội ngũ triển khai phải rà soát toàn bộ kịch bản kiểm tra của TransactionNotification và cấu hình sẵn các giá trị mặc định chuẩn cho kênh thương mại điện tử (như gán mã nhân viên bán hàng mặc định là Kênh Online, gán đúng mã kho xuất hàng TMĐT và mã thuế suất đầu ra tương ứng).
Một điểm quan trọng khác là quy trình xuất hóa đơn và ghi nhận thanh toán. Đối với các đơn hàng bán lẻ B2C phát sinh hàng nghìn đơn nhỏ lẻ mỗi ngày từ người tiêu dùng cá nhân không lấy hóa đơn đỏ riêng, nếu đẩy từng khách hàng thành một mã Business Partner mới vào SAP sẽ làm phình to bảng dữ liệu đối tác của kế toán. Giải pháp chuẩn là cấu hình một hoặc một nhóm mã Khách hàng lẻ trực tuyến (One-Time Customer / Online Retail Customer theo khu vực) trên SAP, trong khi thông tin tên, địa chỉ nhận hàng thực tế và mã số thuế xuất hóa đơn (nếu khách có yêu cầu) được truyền vào các trường địa chỉ giao hàng cụ thể (ShipToCode / AddressExtension) và trường tham chiếu trên từng chứng từ Sales Order.
- Lưu mã định danh đơn hàng của Website vào trường NumAtCard (Số tham chiếu của khách hàng trên SAP B1) hoặc PurchaseOrderByCustomer (BSTKD trên SAP S/4HANA) kèm kiểm tra chống trùng lặp trước khi tạo mới chứng từ.
- Xử lý chuẩn xác chênh lệch làm tròn tiền tệ và thuế giá trị gia tăng (VAT): truyền rõ giá trước thuế, mã thuế (TaxCode / VatGroup) và tổng tiền thanh toán để SAP tự tính khớp đến từng đồng, tránh lỗi lệch 1-2 đồng do quy tắc làm tròn dòng hàng.
- Đóng gói luồng tạo chứng từ liên hoàn bằng kỹ thuật $batch OData hoặc Changeset khi cần vừa khởi tạo thông tin khách hàng B2B mới vừa tạo đơn đặt hàng trong một giao dịch nguyên tử (Atomic Transaction).
4. Bảo mật mạng nội bộ (DMZ), quản lý phiên kết nối SAP và cơ chế đối soát toàn diện
Hạ tầng máy chủ SAP thường được đặt trong vùng mạng nội bộ riêng biệt (Private Subnet / On-Premise Data Center) được bảo vệ nghiêm ngặt bởi tường lửa doanh nghiệp, trong khi Website thương mại điện tử lại nằm trên môi trường Đám mây công cộng (Public Cloud) để phục vụ người dùng khắp nơi. Việc mở trực tiếp cổng cơ sở dữ liệu hoặc cổng SAP Service Layer ra ngoài Internet công cộng là điều tối kỵ trong kiến trúc an ninh thông tin doanh nghiệp.
Kiến trúc triển khai chuẩn mực sử dụng kết nối đường hầm mã hóa **Site-to-Site VPN (IPsec)** hoặc **SAP Cloud Connector** kết hợp với một máy chủ **API Gateway / Reverse Proxy** đặt tại vùng trung gian (DMZ). Máy chủ Website chỉ được phép gửi yêu cầu từ một địa chỉ IP tĩnh duy nhất (IP Whitelisting) kèm chứng chỉ bảo mật hai chiều (**Mutual TLS - mTLS**) tới lớp Middleware tại vùng DMZ; từ đó lớp Middleware mới xác thực và giao tiếp với máy chủ SAP bên trong.
Về mặt quản trị phiên làm việc trên SAP B1 Service Layer, thay vì đăng nhập mới (POST /b1s/v1/Login) cho từng đơn hàng đơn lẻ gây tiêu tốn thời gian khởi tạo phiên (thường mất từ 500ms đến hơn 1 giây) và làm cạn kiệt kết nối, lớp Middleware cần duy trì một bể phiên làm việc tái sử dụng (**Session Pool**). Bể kết nối này tự động gia hạn phiên trước khi hết thời gian chờ (SessionTimeout), phân tải đều qua các nút Service Layer Load Balancer và ghi nhật ký đối soát đầu - cuối cho mọi chứng từ tài chính.
- Xây dựng bảng đối soát tự động cuối ngày (End-of-Day Reconciliation Report) so sánh tổng doanh thu, tổng số lượng hàng đặt trên Website với tổng giá trị chứng từ ORDR / VBAK đã tạo thành công trên SAP để kế toán kiểm tra chỉ trong vài phút.
- Trang bị cơ chế ngắt mạch tự động (Circuit Breaker): khi phát hiện máy chủ SAP đang trong khung giờ bảo trì định kỳ hoặc sao lưu cơ sở dữ liệu, lớp Middleware tự động tạm dừng đẩy đơn trong 15 phút và xếp toàn bộ giao dịch mới vào hàng đợi bền vững.
- Ẩn hoàn toàn thông báo lỗi kỹ thuật nội bộ của SAP (như tên bảng ORDR, mã lỗi BAPI_RET2 hay cấu trúc kho) khỏi màn hình người mua hàng trên Website, chỉ hiển thị thông báo thân thiện và gửi chi tiết mã lỗi kỹ thuật về kênh trực vận hành IT.
Câu hỏi thường gặp
Giải đáp nhanh những điểm thương hiệu bán lẻ D2C, chuỗi cửa hàng đa chi nhánh, doanh nghiệp sản xuất – phân phối B2B và đơn vị xây dựng sàn giao dịch thương mại điện tử hay hỏi về chủ đề này.
Tích hợp Website thương mại điện tử với SAP Business One có bắt buộc phải mua thêm bản quyền người dùng (SAP User License) không?
Mọi kết nối qua SAP B1 Service Layer hoặc DI API đều cần xác thực bằng một tài khoản trên SAP. Tùy theo chính sách cấp phép phiên bản SAP B1 mà doanh nghiệp đang sở hữu, doanh nghiệp có thể sử dụng loại tài khoản tích hợp chuyên dụng (Indirect Access / B1i User) hoặc một bản quyền người dùng dịch vụ dùng chung trong bể kết nối (Session Pool) của lớp Middleware để phục vụ toàn bộ giao dịch từ Website mà không cần cấp tài khoản SAP cho từng khách mua hàng.
Hệ thống SAP Business One đang chạy trên nền SQL Server cũ chưa lên SAP HANA thì có tích hợp thời gian thực với Website được không?
Hoàn toàn tích hợp được. Các phiên bản SAP Business One từ 10.0 trở đi đã hỗ trợ chính thức Service Layer ngay trên cả nền tảng Microsoft SQL Server bên cạnh SAP HANA. Trường hợp doanh nghiệp đang dùng phiên bản SAP B1 9.x cũ trên SQL Server chưa có Service Layer, đội ngũ kỹ thuật có thể xây dựng một dịch vụ Windows Service trung gian bọc bên ngoài DI API hoặc thông qua SAP B1 Integration Framework (B1if) để cung cấp RESTful API chuẩn cho Website.
Làm thế nào để Website hiển thị đúng tồn kho theo từng lô (Batch) và hạn sử dụng được quản lý trong SAP?
Trong SAP B1 (bảng OIBT / OBTN) và SAP S/4HANA (bảng MCHB / MCHA), tồn kho của các mặt hàng quản lý theo lô được gắn kèm ngày sản xuất và ngày hết hạn. Lớp tích hợp sẽ truy vấn danh sách tồn kho khả dụng được nhóm theo số lô và lọc bỏ các lô có hạn sử dụng còn lại thấp hơn ngưỡng quy định (ví dụ dưới 6 tháng), đồng thời áp dụng quy tắc FEFO (First Expired, First Out - Hết hạn trước xuất trước) khi gợi ý phân bổ lô trên chứng từ đơn hàng đẩy về SAP.
Nhận tư vấn kiến trúc & Báo giá chi tiết hệ thống Website Thương mại điện tử
Hãy cho Uptech biết mô hình bán hàng của bạn (B2C, B2B hay Đa kho/Sàn), số lượng mã sản phẩm (SKU) dự kiến và các phần mềm cổng thanh toán, vận chuyển, ERP/POS cần kết nối. Kỹ sư giải pháp của Uptech sẽ phân tích và gửi bản đề xuất kiến trúc kèm dự toán chi phí minh bạch trong 24 giờ làm việc.
- Phản hồi kèm sơ đồ kiến trúc đề xuất trong vòng 24 giờ làm việc
- Tư vấn miễn phí lộ trình đồng bộ tồn kho ERP/POS và cấu trúc SEO danh mục lớn
- Hợp đồng pháp nhân rõ ràng, bàn giao mã nguồn, xuất hóa đơn GTGT (VAT) đầy đủ