1. Tổng Quan Vấn Đề
Trong quá trình hỗ trợ vận hành hệ thống SAP có một lỗi nghiêm trọng đã được phát hiện chương trình customize cho phép tạo Delivery Order (DO) ngay cả khi số lượng tồn kho không đủ, mà không có bất kỳ cảnh báo hay thông báo lỗi nào.
Hậu quả của vấn đề này là:
-
Chương trình vẫn sinh ra DO thành công dù không đủ tồn kho.
-
Gây lỗi tại trường LIPS-SITKZ bằng blank
-
Quá trình tạo Billing, Shipment, Packing, Loading, PGI và VLPOD đều hiển thị trạng thái "Completed".
-
Tuy nhiên, hệ thống không ghi nhận được giá vốn (COGS) cho những DO tạo sai này.
2. Nguyên Nhân Gốc Rễ
Lỗi xảy ra do hệ thống hiện đang dùng chương trình tạo DO sử dụng function tạo DO SAP chuẩn, với ngày due_date
mặc định là '31-12-9999'
. Điều này có nghĩa là SAP cho phép tạo DO ngay cả khi chưa có hàng trong kho dẫn đến việc không thể ghi nhận giá vốn sau này.
Hình 1: Chương trình tạo DO trước khi sửa |
3. Giải Pháp: Sửa Logic Chương Trình Customize
Ở lỗi này, mình vẫn giữ nguyên phần sử dụng function tạo DO chuẩn của SAP, nhưng phần due_date
đang mặc định là '31-12-9999'
thì mình lấy thông tin từ bảng VBEP - bảng này chứa các thông tin số lượng hệ thống đã confirm, ngày Delivery Date và Delivery Status (SO có bị block hay không).
✅ Kiểm tra Delivery Status và Delivery Date:
-
Nếu Delivery Status = 'Blocked' → không cho phép tạo DO, báo rằng SO đang bị khóa.
-
Nếu Delivery Status và Delivery Date = blank → hệ thống mặc định ngày tạo DO là ngày hiện tại.
-
Nếu Delivery Status = blank và Delivery Date ≠ blank → dùng Delivery Date làm ngày tạo DO.
4. Kết Luận
Đây là một cải tiến nhỏ nhưng rất cần thiết để giảm thiểu lỗi ghi nhận giá vốn. Bạn có cách khác để fix lỗi này không thì chia sẻ ở phần comment nhé.
Cảm ơn bạn đã theo dõi.
0 Comments