جدول 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تكلفة الصنف في هذا المستودع عندما تُدار التكاليف لكل مستودع.
LockedY إذا كان الصنف مقفلًا في هذا المستودع.

كيف يرتبط 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 ساعة.