اتجاه المبيعات الشهري
صافي المبيعات المفوترة لكل شهر خلال آخر 12 شهرًا.
الأداة
SELECT YEAR(T0.DocDate) AS SalesYear, MONTH(T0.DocDate) AS SalesMonth, COUNT(T0.DocEntry) AS Invoices, SUM(T0.DocTotal - T0.VatSum) AS NetSales FROM OINV T0 WHERE T0.CANCELED = 'N' AND T0.DocDate >= DATEADD(month, -12, GETDATE()) GROUP BY YEAR(T0.DocDate), MONTH(T0.DocDate) ORDER BY SalesYear, SalesMonth
SELECT YEAR(T0."DocDate") AS "SalesYear", MONTH(T0."DocDate") AS "SalesMonth", COUNT(T0."DocEntry") AS "Invoices", SUM(T0."DocTotal" - T0."VatSum") AS "NetSales" FROM OINV T0 WHERE T0."CANCELED" = 'N' AND T0."DocDate" >= ADD_MONTHS(CURRENT_TIMESTAMP, -12) GROUP BY YEAR(T0."DocDate"), MONTH(T0."DocDate") ORDER BY "SalesYear", "SalesMonth"
ما الذي يجيب عنه هذا الاستعلام
يريد المالك عرضًا بسيطًا لمبيعات 12 شهرًا المفوترة لتقرير مجلس الإدارة أو لمربع في لوحة المعلومات: هل الإيرادات في نمو أم ثابتة أم موسمية؟ صف واحد لكل شهر يكفي لإدراجه مباشرة في رسم بياني خطي في Excel.
مثال على النتائج
قيم تجريبية توضيحية. أعمدتك هي نفسها؛ والأرقام تأتي من شركتك.
| SalesYear | SalesMonth | Invoices | NetSales |
|---|---|---|---|
| 2026 | 7 | 212 | 184300 |
| 2026 | 8 | 198 | 171950 |
| 2026 | 9 | 236 | 205480 |
| 2026 | 10 | 171 | 149200 |
SQL Server مقابل SAP HANA
تصبح DATEADD(month, -12, GETDATE()) هي ADD_MONTHS(CURRENT_TIMESTAMP, -12). والدالتان YEAR() و MONTH() موجودتان في HANA بالمعنى نفسه، فيبقى GROUP BY كما هو باستثناء الاقتباس.
الأخطاء الشائعة وحلولها
- الشهر الأول يبدو منخفضًا جدًا: تبدأ النافذة من رقم يوم اليوم قبل 12 شهرًا، فيُحتسب الشهر الأقدم جزئيًا فقط. ابدأ من أول يوم في ذلك الشهر (مثلًا باستخدام DATEFROMPARTS في SQL Server) إذا كنت تحتاج 12 شهرًا كاملة.
- الأشهر التي لا مبيعات فيها مفقودة: يعيد GROUP BY الأشهر التي فيها فواتير فقط. اربط جدول تقويم أو قائمة أشهر إذا كان رسمك البياني يحتاج صفرًا للأشهر الفارغة.
- الأرقام لا تطابق تقرير تحليل المبيعات: يقرأ هذا الاستعلام فواتير المبيعات فقط. اطرح الإشعارات الدائنة من ORIN لكل شهر للحصول على صافي المبيعات بعد المرتجعات.
- الإجماليات لا تطابق تقرير تحليل المبيعات (خصم الرأس): يقرأ هذا الاستعلام 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 (فاتورة المبيعات (الرأس))
ثلاث خطوات بدون تسجيل
انسخ النسخة المناسبة
استخدم تبويب SQL Server لقواعد بيانات MS SQL، وتبويب HANA لـ SAP B1 على HANA.
افتح مولّد الاستعلامات
في SAP Business One اذهب إلى الأدوات ← الاستعلامات ← مولّد الاستعلامات (Tools → Queries → Query Generator)، والصق الاستعلام وانقر تنفيذ (Execute).
احفظ وشارك
انقر حفظ، واختر فئة، وسمِّ الاستعلام. يستطيع فريقك تشغيله من مدير الاستعلامات.
أسئلة حول هذه الأداة
كيف أشغّل استعلام «اتجاه المبيعات الشهري» في SAP Business One؟
انسخ النسخة التي تناسب قاعدة بياناتك، وافتح الأدوات ← الاستعلامات ← مولّد الاستعلامات، والصقه في مربع SQL وانقر تنفيذ. احفظه لإعادة استخدامه لاحقًا.
ما الجداول التي يستخدمها هذا الاستعلام؟
يقرأ OINV من المخطط القياسي لـ SAP Business One. لا يحتاج إلى أي حقول معرّفة من قِبل المستخدم.
هل يمكن تحويله إلى لوحة معلومات أو تنبيه؟
نعم. نحوّل الاستعلامات إلى تقارير Crystal، أو تقارير Excel تتحدّث تلقائيًا، أو تنبيهات SAP B1، أو رسائل واتساب للمديرين.
مصممة لفرق SAP Business One
تحتاج هذا داخل SAP Business One؟
نطوّر إضافات وتقارير وتكاملات لـ SAP B1 على SQL Server و HANA. أخبرنا بما تحتاجه واحصل على سعر ثابت، عادةً خلال 24 ساعة.
