المبيعات حسب العميل لفترة زمنية
صافي المبيعات لكل عميل (الفواتير ناقص الإشعارات الدائنة) بين تاريخين، من الأعلى إلى الأدنى.
الأداة
SELECT X.CardCode, X.CardName, SUM(X.NetSales) AS NetSales FROM ( SELECT T0.CardCode, T0.CardName, T0.DocTotal - T0.VatSum AS NetSales FROM OINV T0 WHERE T0.CANCELED = 'N' AND T0.DocDate BETWEEN '[%0]' AND '[%1]' UNION ALL SELECT T1.CardCode, T1.CardName, -(T1.DocTotal - T1.VatSum) FROM ORIN T1 WHERE T1.CANCELED = 'N' AND T1.DocDate BETWEEN '[%0]' AND '[%1]' ) X GROUP BY X.CardCode, X.CardName ORDER BY NetSales DESC
SELECT X."CardCode", X."CardName", SUM(X."NetSales") AS "NetSales" FROM ( SELECT T0."CardCode", T0."CardName", T0."DocTotal" - T0."VatSum" AS "NetSales" FROM OINV T0 WHERE T0."CANCELED" = 'N' AND T0."DocDate" BETWEEN '[%0]' AND '[%1]' UNION ALL SELECT T1."CardCode", T1."CardName", -(T1."DocTotal" - T1."VatSum") FROM ORIN T1 WHERE T1."CANCELED" = 'N' AND T1."DocDate" BETWEEN '[%0]' AND '[%1]' ) X GROUP BY X."CardCode", X."CardName" ORDER BY "NetSales" DESC
ما الذي يجيب عنه هذا الاستعلام
قبل اجتماع المبيعات الشهري، يريد مدير المبيعات قائمة واحدة مرتبة بالعملاء حسب ما اشتروه فعلًا في الفترة. المرتجعات مهمة هنا: العميل الذي صدرت له فواتير بقيمة 50,000 ثم إشعار دائن بقيمة 20,000 يجب أن يظهر بـ 30,000 لا 50,000.
تريده رسمًا بيانيًا يستطيع فريقك تصفيته؟ تعرّف على طريقة بناء لوحة معلومات SAP Business One بدون Power BI.
مثال على النتائج
قيم تجريبية توضيحية. أعمدتك هي نفسها؛ والأرقام تأتي من شركتك.
| CardCode | CardName | NetSales |
|---|---|---|
| C20000 | Acme Trading | 48250 |
| C30000 | Northwind Retail | 31720.5 |
| C40000 | Blue Harbor Foods | 18900 |
| C50000 | Summit Supplies | 6410.75 |
SQL Server مقابل SAP HANA
المنطق متطابق؛ نسخة HANA تضع فقط كل عمود واسم مستعار بين علامتي اقتباس مزدوجتين (T0."DocTotal" و AS "NetSales")، لأن HANA يحوّل الأسماء غير المقتبسة إلى أحرف كبيرة. والعمود السالب غير المسمّى في النصف الثاني من UNION لا مشكلة فيه في قاعدتي البيانات، لأن أسماء الأعمدة تؤخذ من أول SELECT.
الأخطاء الشائعة وحلولها
- الفواتير الملغاة ما زالت تغيّر الإجماليات: أبقِ الشرط CANCELED = 'N' في النصفين. في SAP B1 تأخذ الفاتورة الملغاة CANCELED = 'Y' ويأخذ إشعار الإلغاء الدائن CANCELED = 'C'؛ والتصفية على 'N' تستبعدهما معًا، فلا يتقاصّان عن طريق الخطأ.
- Conversion failed when converting date and/or time from character string: عند الاختبار خارج SAP B1، استبدل '[%0]' و '[%1]' بتواريخ بصيغة YYYYMMDD (مثل '20261001')، وهي صيغة يقرؤها SQL Server بالطريقة نفسها أيًّا كانت إعدادات اللغة.
- الإجماليات تختلف عن كشف حساب العميل بالعملة الأجنبية: DocTotal و VatSum بالعملة المحلية. استخدم DocTotalFC - VatSumFC في نصفي UNION لترتيب العملاء بعملة المستند.
- الإجماليات لا تطابق تقرير تحليل المبيعات (خصم الرأس): يقرأ هذا الاستعلام DocTotal - VatSum من رأس المستند، وهي قيمة تتضمن خصم الرأس (OINV.DiscPrcnt) والشحن. إذا غيّرته لجمع INV1.LineTotal، مثلًا لإيرادات الأصناف، فلن يكون خصم الرأس داخل LineTotal وسيضخّم مجموع الأسطر المبيعات. استخدم SUM(T1.LineTotal * (1 - T0.DiscPrcnt / 100.0)) (وفي HANA: SUM(T1."LineTotal" * (1 - T0."DiscPrcnt" / 100.0)))، واطرح الإشعارات الدائنة (ORIN/RIN1) بالمعامل نفسه. انظر عدم تطابق إجمالي المبيعات في SAP B1: حل مشكلة خصم الرأس.
استعلامات ذات صلة
مرجع الجداول: جدول OINV (فاتورة المبيعات (الرأس)) · جدول ORIN (الإشعار الدائن للمبيعات (الرأس))
ثلاث خطوات بدون تسجيل
انسخ النسخة المناسبة
استخدم تبويب SQL Server لقواعد بيانات MS SQL، وتبويب HANA لـ SAP B1 على HANA.
افتح مولّد الاستعلامات
في SAP Business One اذهب إلى الأدوات ← الاستعلامات ← مولّد الاستعلامات (Tools → Queries → Query Generator)، والصق الاستعلام وانقر تنفيذ (Execute).
احفظ وشارك
انقر حفظ، واختر فئة، وسمِّ الاستعلام. يستطيع فريقك تشغيله من مدير الاستعلامات.
أسئلة حول هذه الأداة
كيف أشغّل استعلام «المبيعات حسب العميل لفترة زمنية» في SAP Business One؟
انسخ النسخة التي تناسب قاعدة بياناتك، وافتح الأدوات ← الاستعلامات ← مولّد الاستعلامات، والصقه في مربع SQL وانقر تنفيذ. احفظه لإعادة استخدامه لاحقًا.
ما الجداول التي يستخدمها هذا الاستعلام؟
يقرأ OINV، ORIN من المخطط القياسي لـ SAP Business One. لا يحتاج إلى أي حقول معرّفة من قِبل المستخدم.
ماذا أُدخل عندما تفتح نافذة الاختيار؟
يستخدم هذا الاستعلام معاملات: [%0] = من تاريخ، [%1] = إلى تاريخ. يعرض SAP B1 نافذة اختيار لكل معامل عند تشغيل الاستعلام.
هل يمكن تحويله إلى لوحة معلومات أو تنبيه؟
نعم. نحوّل الاستعلامات إلى تقارير Crystal، أو تقارير Excel تتحدّث تلقائيًا، أو تنبيهات SAP B1، أو رسائل واتساب للمديرين.
مصممة لفرق SAP Business One
تحتاج هذا داخل SAP Business One؟
نطوّر إضافات وتقارير وتكاملات لـ SAP B1 على SQL Server و HANA. أخبرنا بما تحتاجه واحصل على سعر ثابت، عادةً خلال 24 ساعة.
