جدول ODRF في SAP Business One (مستندات المسودة (الرأس))
ODRF هو جدول SAP Business One الذي يخزن رأس كل مستند مسودة: الفواتير والتسليمات والإيصالات وغيرها من المستندات المحفوظة كمسودة أو التي تنتظر الموافقة. ويبين ODRF.ObjType المستند الذي ستصبحه المسودة (مثلًا 13 = فاتورة المبيعات). والأسطر في DRF1 وتُربط عبر DocEntry.
الحقول الرئيسية في ODRF
| الحقل | ما يحتويه |
|---|---|
DocEntry | المفتاح الداخلي للمسودة. يُربط بـ DRF1.DocEntry. |
ObjType | نوع المستند الذي تخصه المسودة، مثلًا 13 = فاتورة المبيعات، 15 = التسليم، 14 = الإشعار الدائن للمبيعات. |
DocNum | رقم المستند. |
DocDate | تاريخ الترحيل. |
CardCode / CardName | شريك الأعمال. يُربط بـ OCRD.CardCode. |
DocStatus | O = مفتوح، C = مغلق. |
WddStatus | حالة التفويض: - = بدون، W = قيد الانتظار، Y = معتمد، N = مرفوض، P = منشأ، A = منشأ بواسطة المعتمِد، C = ملغى. |
DocTotal / DocCur | إجمالي المستند وعملته. |
UserSign | المستخدم الذي أنشأ المسودة. يُربط بـ OUSR. |
CreateDate | تاريخ الإنشاء. |
كيف يرتبط ODRF بالجداول الأخرى
ODRF جدول رأس واحد مشترك لمسودات أنواع كثيرة من المستندات؛ ويفرّق ObjType بينها. و DRF1 يحتوي على الأسطر. والمستند الحقيقي المرحّل من مسودة يحتفظ بالرابط في عمود draftKey الخاص به (مثلًا OPDN.draftKey = ODRF.DocEntry).
عمليات الربط الشائعة
ODRF T0 INNER JOIN DRF1 T1 ON T1.DocEntry = T0.DocEntry(الأسطر)ODRF T0 LEFT JOIN OCRD T2 ON T2.CardCode = T0.CardCode(شريك الأعمال)OPDN T3 INNER JOIN ODRF T0 ON T0.DocEntry = T3.draftKey(إيصال استلام البضائع لأمر الشراء المرحّل من المسودة)
متى تستخدم جدول ODRF
استخدم ODRF لسرد المسودات المفتوحة حسب نوع المستند والمستخدم، ولإيجاد المستندات التي تنتظر الموافقة (WddStatus W)، ولتنظيف المسودات القديمة التي لم تُرحّل قط.
مثال على استعلام: المسودات المفتوحة حسب نوع المستند مع حالة الموافقة
SQL Server
SELECT T0.DocEntry, T0.ObjType, T0.DocDate, T0.CardCode, T0.CardName, T0.DocTotal, T0.WddStatus, T0.UserSign, DATEDIFF(day, T0.CreateDate, GETDATE()) AS DaysOld FROM ODRF T0 WHERE T0.DocStatus = 'O' ORDER BY T0.ObjType, T0.CreateDate
SAP HANA (أسماء الأعمدة بين علامتي اقتباس مزدوجتين)
SELECT T0."DocEntry", T0."ObjType", T0."DocDate", T0."CardCode", T0."CardName", T0."DocTotal", T0."WddStatus", T0."UserSign", DAYS_BETWEEN(T0."CreateDate", CURRENT_TIMESTAMP) AS "DaysOld" FROM ODRF T0 WHERE T0."DocStatus" = 'O' ORDER BY T0."ObjType", T0."CreateDate"
الصق أيًّا من النسختين في الأدوات ← الاستعلامات ← مولّد الاستعلامات (Tools → Queries → Query Generator). تحتاج اللهجة الأخرى لاستعلامك الخاص؟ استخدم محوّل SQL إلى HANA.
خطأ شائع: عرض المسودات على أنها مستندات مرحّلة
مسودات كل الأنواع موجودة في ODRF، لذا يجب أن يصفّي التقرير على ObjType للمستند المقصود، ويجب ألا تُضاف المسودات أبدًا إلى إجماليات المبيعات أو المشتريات. استخدم DocEntry المسودة (لا DocNum) لربطها بالمستند المرحّل عبر draftKey. انظر استعلام الموافقات المعلقة.
استعلامات جاهزة تستخدم ODRF
- مستندات بانتظار الموافقة: طلبات الموافقة التي ما زالت معلقة، مع نوع المستند والمُنشئ وعمر الطلب بالأيام.
- الفواتير المُنشأة لكل مستخدم اليوم: عدد فواتير المبيعات التي أنشأها كل مستخدم SAP B1 اليوم، مع القيمة الإجمالية.
أسئلة حول جدول ODRF
أين تُخزن مستندات المسودة في SAP Business One؟
في ODRF (الرأس) و DRF1 (الأسطر)، لكل أنواع المستندات. ويبين ODRF.ObjType نوع المسودة.
كيف أجد المسودات التي تنتظر الموافقة؟
صفِّ على ODRF.WddStatus = 'W' (قيد الانتظار).
كيف أجد المستند المرحّل من مسودة؟
المستند المرحّل يكون فيه draftKey = ODRF.DocEntry.
جداول ذات صلة
DRF1 (مستندات المسودة (الأسطر)) · OINV (فاتورة المبيعات (الرأس)) · ORDR (أمر البيع (الرأس)) · ابحث في كل جداول SAP Business One
المصادر: توثيق SAP Business One و SDK (مرجع جداول قاعدة البيانات في DI API)، بوابة SAP Help.
جاهز للبدء؟
أخبرنا بما تحتاجه. ستحصل على إجابة تقنية واضحة ونطاق عمل محدد وسعر ثابت، عادةً خلال 24 ساعة.
