جدول OITW في SAP Business One (مخزون الصنف حسب المستودع)
OITW هو جدول SAP Business One الذي يحتوي على مخزون كل صنف في كل مستودع: المتوفر، والمحجوز لأوامر البيع، والمطلوب من الموردين. مفتاحه ItemCode مع WhsCode، ويُربط بـ OITM عبر ItemCode وبـ OWHS عبر WhsCode.
الحقول الرئيسية في OITW
| الحقل | ما يحتويه |
|---|---|
ItemCode | الصنف. يُربط بـ OITM.ItemCode. |
WhsCode | المستودع. يُربط بـ OWHS.WhsCode. |
OnHand | المخزون الفعلي في هذا المستودع. |
IsCommited | الكمية المحجوزة لأوامر البيع المفتوحة في هذا المستودع. |
OnOrder | الكمية في أوامر الشراء المفتوحة لهذا المستودع. |
MinStock | الحد الأدنى للمخزون لهذا الصنف في هذا المستودع. |
AvgPrice | تكلفة الصنف في هذا المستودع عندما تُدار التكاليف لكل مستودع. |
Locked | Y إذا كان الصنف مقفلًا في هذا المستودع. |
كيف يرتبط OITW بالجداول الأخرى
OITW تابع لـ OITM: للصنف الواحد صف في OITW لكل مستودع مرتبط به، حتى لو كان المخزون صفرًا. ليس جدول أسطر مستندات، لذلك لا يوجد DocEntry؛ والزوج ItemCode + WhsCode يحدد الصف. وعند تفعيل مواقع التخزين، يضيف OIBQ و OBIN مستوى آخر.بيانات المستودع نفسه (الاسم، وخاصية القابلية للاحتساب، ومواقع التخزين) موجودة فيجدول OWHS.
عمليات الربط الشائعة
OITW T0 INNER JOIN OITM T1 ON T0.ItemCode = T1.ItemCode(اسم الصنف، المجموعة)OITW T0 INNER JOIN OWHS T2 ON T0.WhsCode = T2.WhsCode(اسم المستودع)
متى تستخدم جدول OITW
اقرأ OITW كلما كان السؤال «كم يوجد من هذا الصنف في ذلك المستودع»: التوفر للمبيعات، وقوائم المخزون لكل فرع، وإعادة الطلب حسب المستودع، وتقييم المخزون حسب المستودع. المخزون المتاح عادةً هو OnHand - IsCommited + OnOrder، أو OnHand - IsCommited إذا كنت لا تحتسب أوامر الشراء المفتوحة.
مثال على استعلام: المخزون المتاح لكل صنف ومستودع
SQL Server
SELECT T0.ItemCode, T1.ItemName, T0.WhsCode, T2.WhsName, T0.OnHand, T0.IsCommited, T0.OnOrder, T0.OnHand - T0.IsCommited + T0.OnOrder AS Available FROM OITW T0 INNER JOIN OITM T1 ON T0.ItemCode = T1.ItemCode INNER JOIN OWHS T2 ON T0.WhsCode = T2.WhsCode WHERE T0.OnHand <> 0 OR T0.IsCommited <> 0 ORDER BY T0.ItemCode, T0.WhsCode
SAP HANA (أسماء الأعمدة بين علامتي اقتباس مزدوجتين)
SELECT T0."ItemCode", T1."ItemName", T0."WhsCode", T2."WhsName", T0."OnHand", T0."IsCommited", T0."OnOrder", T0."OnHand" - T0."IsCommited" + T0."OnOrder" AS "Available" FROM OITW T0 INNER JOIN OITM T1 ON T0."ItemCode" = T1."ItemCode" INNER JOIN OWHS T2 ON T0."WhsCode" = T2."WhsCode" WHERE T0."OnHand" <> 0 OR T0."IsCommited" <> 0 ORDER BY T0."ItemCode", T0."WhsCode"
الصق أيًّا من النسختين في الأدوات ← الاستعلامات ← مولّد الاستعلامات (Tools → Queries → Query Generator). تحتاج اللهجة الأخرى لاستعلامك الخاص؟ استخدم محوّل SQL إلى HANA.
إجمالي المخزون عبر المستودعات (القابلة للاحتساب فقط)
للحصول على رقم مخزون واحد لكل صنف عبر عدة مستودعات، اجمع صفوف OITW لكل صنف. اربط OWHS عبر WhsCode وأبقِ المستودعات القابلة للاحتساب فقط (OWHS.Nettable = 'Y'، وهي المستودعات التي يحتسبها MRP)، فتبقى مستودعات المرتجعات أو الجودة المعيّنة غير قابلة للاحتساب خارج الحساب. المخزون ناقص المحجوز هو ما يمكنك الالتزام به بعد؛ أضف OnOrder للحصول على رقم المتاح الذي يحتسب أوامر الشراء المفتوحة.
SQL Server
SELECT T0.ItemCode, T1.ItemName, SUM(T0.OnHand) AS InStock, SUM(T0.IsCommited) AS Committed, SUM(T0.OnHand - T0.IsCommited) AS FreeStock, SUM(T0.OnHand - T0.IsCommited + T0.OnOrder) AS Available FROM OITW T0 INNER JOIN OITM T1 ON T0.ItemCode = T1.ItemCode INNER JOIN OWHS T2 ON T0.WhsCode = T2.WhsCode WHERE T2.Nettable = 'Y' GROUP BY T0.ItemCode, T1.ItemName ORDER BY T0.ItemCode
SAP HANA
SELECT T0."ItemCode", T1."ItemName", SUM(T0."OnHand") AS "InStock", SUM(T0."IsCommited") AS "Committed", SUM(T0."OnHand" - T0."IsCommited") AS "FreeStock", SUM(T0."OnHand" - T0."IsCommited" + T0."OnOrder") AS "Available" FROM OITW T0 INNER JOIN OITM T1 ON T0."ItemCode" = T1."ItemCode" INNER JOIN OWHS T2 ON T0."WhsCode" = T2."WhsCode" WHERE T2."Nettable" = 'Y' GROUP BY T0."ItemCode", T1."ItemName" ORDER BY T0."ItemCode"
خطأ شائع: IsCommited بحرف t واحد، والصفوف ذات المخزون الصفري
عمود المحجوز يُكتب IsCommited، لذلك يعطي IsCommitted خطأ «عمود غير صالح». ويحتفظ OITW أيضًا بصف لكل مستودع مرتبط حتى مع مخزون صفري، فصفِّ OnHand <> 0 (أو OnHand و IsCommited و OnOrder) لإبقاء القائمة قصيرة. انظر استعلام المخزون حسب المستودع مع صيغ بديلة.
استعلامات جاهزة تستخدم OITW
- المخزون حسب المستودع: الكمية المتوفرة والمحجوزة والمطلوبة والمتاحة لكل صنف ومستودع.
- قيمة المخزون حسب المستودع: كمية المخزون مضروبة في متوسط تكلفة الصنف، مجمّعة لكل مستودع.
أسئلة حول جدول OITW
لماذا يختلف إجمالي OITW عن OnHand للصنف في OITM؟
OITM.OnHand هو مخزون الصنف في كل مستودعاته، بينما يحتوي OITW على صف لكل مستودع. مجموع OITW.OnHand لكل صفوف الصنف يعطي الرقم نفسه، لذلك يأتي الفرق دائمًا تقريبًا من الاستعلام: تصفية على المستودعات (القابلة للاحتساب فقط، أو النشطة فقط، أو فرع واحد) أو ربط يُسقط صفوفًا، مثل INNER JOIN مع OWHS بشرط إضافي. قارن الاثنين أولًا دون أي تصفية للمستودعات، ثم أعد إضافة الشروط واحدًا تلو الآخر.
جداول ذات صلة
OITM (الأصناف (البيانات الرئيسية للصنف)) · OWHS (المستودعات) · OINM (يومية المستودع (تدقيق المخزون)) · ORDR (أمر البيع (الرأس)) · INV1 (فاتورة المبيعات (الأسطر)) · ابحث في كل جداول SAP Business One
المصادر: توثيق SAP Business One و SDK (مرجع جداول قاعدة البيانات في DI API)، بوابة SAP Help.
جاهز للبدء؟
أخبرنا بما تحتاجه. ستحصل على إجابة تقنية واضحة ونطاق عمل محدد وسعر ثابت، عادةً خلال 24 ساعة.
