SAP ABAP BDC: ما هو اتصال البيانات الدفعي؟

⚡ ملخص ذكي

SAP تقوم لغة ABAP BDC (اتصال البيانات المجمعة) بنقل البيانات القديمة إلى نظام R/3 من خلال تشغيل المعاملات القياسية تلقائيًا. تشرح هذه الصفحة جلسات إدخال البيانات المجمعة، وطرق المعاملات التقليدية وطريقة استدعاء المعاملات، وبنية BDCDATA، وسير عمل BDC_OPEN_GROUP، ومسجل إدخال البيانات المجمعة.

  • 🔄 الغرض الأساسي: يقوم نظام BDC بتغذية مجموعات البيانات في شاشات المعاملة تلقائيًا، وتشغيل كل شاشة والتحقق من صحة الأعمال كما يفعل المستخدم.
  • 🧾 جلسة إدخال البيانات المجمعة: تقوم الجلسة بتجميع استدعاءات المعاملات مع بيانات الإدخال الخاصة بها ويتم تخزينها في قاعدة البيانات حتى يتم تنفيذها.
  • 🛠️ طريقتان: يستخدم إدخال الدفعات الكلاسيكي BDC_OPEN_GROUP و BDC_INSERT و BDC_CLOSE_GROUP، بينما تستخدم طريقة استدعاء المعاملة CALL TRANSACTION USING.
  • 🇧🇷 اختيار الطريقة: يتم إدخال البيانات المجمعة التقليدية بشكل متزامن مع سجل، بينما تكون عملية استدعاء المعاملة أسرع وغير متزامنة وتتعامل مع معاملة واحدة.
  • 🗂️ بنية بيانات BDCDATA: تصف الحقول PROGRAM و DYNPRO و DYNBEGIN و FNAM و FVAL الشاشة والحقل والقيمة لكل خطوة.
  • ⏺️ مسجل: يقوم مسجل إدخال الدفعات بالتقاط معاملة يدوية وإنشاء جلسة أو برنامج BDC جاهز يتم تشغيله لاحقًا في SM35.

SAP ABAP BDC - اتصال البيانات الدفعي

مقدمة إلى إدخال الدفعة

يُستخدم الإدخال الدفعي عادةً لنقل البيانات من أنظمة غير R/3 إلى أنظمة R/3 أو لنقل البيانات بين أنظمة R/3.

إنها تقنية نقل البيانات التي تسمح لك بنقل مجموعات البيانات تلقائيًا إلى الشاشات التابعة للمعاملات، وبالتالي إلى SAP نظام. يتم التحكم في إدخال الدُفعات من خلال جلسة إدخال الدُفعات.

جلسة إدخال دفعة

يقوم بتجميع سلسلة من مكالمات المعاملات مع بيانات الإدخال وإجراءات المستخدم. يمكن استخدام جلسة إدخال دفعي لتنفيذ معاملة حوار في إدخال دفعي، حيث تتم معالجة بعض أو كل الشاشات بواسطة الجلسة. يتم تخزين جلسات الإدخال المجمعة في قاعدة البيانات كجداول قاعدة بيانات ويمكن استخدامها داخل البرنامج كجداول داخلية عند الوصول إلى المعاملات.

يشير إلى ملاحظة

  • يعمل BDI عن طريق تنفيذ العادي SAP المعاملات تمامًا كما يفعل المستخدم ولكنه ينفذ المعاملة تلقائيًا.سيتم إجراء جميع عمليات التحقق من صحة الشاشة والتحقق من صحة منطق الأعمال أثناء استخدام Batch Data Input.
  • وهي مناسبة لإدخال كمية كبيرة من البيانات.
  • ليس هناك حاجة للتفاعل اليدوي

طرق الإدخال الدفعي

SAP توفير طريقتين أساسيتين لنقل البيانات القديمة إلى نظام R/3.

  1. طريقة الإدخال الدفعي الكلاسيكية.
  2. طريقة معاملة المكالمة.

طريقة الإدخال الدفعي الكلاسيكية

في هذه الطريقة يقوم برنامج ABAP/4 بقراءة البيانات الخارجية إلى SAP النظام والمخازن في جلسة إدخال دفعة واحدة.

بعد إنشاء الجلسة، يمكنك تشغيل الجلسة لتنفيذ الأمر SAP الصفقة فيه.

تستخدم هذه الطريقة الوحدات الوظيفية BDC_OPEN، وBDC_INSERT، وBDC_CLOSE

يمكن معالجة جلسة الإدخال المجمعة بثلاث طرق

  1. فى الطليعة
  2. في الخلفية
  3. أثناء المعالجة، مع عرض الخطأ

يجب عليك معالجة جلسات الإدخال المجمعة في المقدمة أو باستخدام شاشة الخطأ إذا كنت تريد اختبار نقل البيانات.

إذا كنت ترغب في تنفيذ عملية نقل البيانات أو اختبار أدائها، فيجب عليك معالجة الجلسات في الخلفية.

نقاط يجب ملاحظتها حول طريقة الإدخال الدفعي الكلاسيكي

  • Syncمعالجة متقنة
  • نقل البيانات لمعاملات متعددة.
  • Syncتحديث قاعدة البيانات هرونوس.
  • يتم إنشاء سجل عملية إدخال دفعة لكل جلسة.
  • لا يمكن إنشاء الجلسة بالتوازي.

طريقة معاملة المكالمة.

بهذه الطريقة ABAPيستخدم برنامج /4 عبارة CALL TRANSACTION USING لتشغيل SAP عملية تجارية.

تتم عملية إدخال الدفعة بأكملها عبر الإنترنت في البرنامج

طريقة معاملة المكالمة

يشير إلى ملاحظة:

  • معالجة أسرع للبيانات
  • معالجة غير متزامنة
  • نقل البيانات لمعاملة واحدة.
  • لم يتم إنشاء سجل معالجة إدخال الدُفعات.

إدخال الدفعات التقليدي مقابل استدعاء المعاملة

تُنجز الطريقتان نفس العملية، لكنهما تختلفان في السرعة، وتسجيل البيانات، ومعالجة الأخطاء. يوضح الجدول أدناه متى تكون كل طريقة هي الخيار الأمثل.

المعايير إدخال الدفعات الكلاسيكي معاملة المكالمة
تقنية BDC_OPEN_GROUP، BDC_INSERT، BDC_CLOSE_GROUP إجراء المعاملة باستخدام
اﻟﻤﻌﺎﻟﺠﺔ Syncمتزامن، قم بتشغيله لاحقًا من SM35 يعمل عبر الإنترنت، ضمن البرنامج
المعاملات العديد من المعاملات في جلسة واحدة معاملة واحدة لكل مكالمة
سجل يتم إنشاء سجل العمليات لكل جلسة تلقائيًا لا يوجد سجل، يقوم البرنامج بجمع الرسائل
سرعة أبطأ، لكنه قوي وقابل لإعادة التشغيل أسرع
أفضل ل عمليات تحميل كبيرة لمرة واحدة من أنظمة قديمة يجب أن تكون قابلة للتدقيق عمليات نقل تفاعلية أو عالية السرعة لمستند واحد

بعد مقارنة الأساليب، يوضح القسم التالي الإجراء العام الذي يتبعه المشروع.

إجراءات إدخال الدُفعات

إجراءات إدخال الدُفعات

ستلاحظ عادةً التسلسل التالي من الخطوات لتطوير إدخال الدفعات لمنظمتك

  1. تحليل البيانات التراثية. تحديد كيفية تعيين البيانات التي سيتم نقلها إلى SAP بناء. لاحظ أيضًا نوع البيانات الضرورية أو تحويلات طول البيانات.
  2. توليد SAP هياكل البيانات لاستخدامها في برامج التصدير.
  3. تصدير البيانات إلى ملف تسلسلي. لاحظ أن تنسيق الأحرف مطلوب بواسطة محدد مسبقًا SAP برامج الإدخال دفعة.
  4. إذا كان SAP لا يتم استخدام برامج BDC المتوفرة، قم بترميز برنامج الإدخال الدفعي الخاص بك. اختر طريقة إدخال الدفعة المناسبة وفقًا للموقف.
  5. معالجة البيانات وإضافتها إلى SAP .
  6. تحليل سجل العملية. بالنسبة إلى أسلوب معاملة المكالمات، حيث لا يتم إنشاء سجل مناسب، استخدم الرسائل المجمعة بواسطة برنامجك.
  7. من نتائج تحليل العملية، قم بتصحيح البيانات الخاطئة وإعادة معالجتها.

كتابة برنامج BDC

يمكنك ملاحظة العملية التالية لكتابة برنامج BDC الخاص بك

  1. تحليل المعاملة (المعاملات) لمعالجة بيانات الإدخال الدفعية.
  2. حدد طريقة إدخال الدُفعات التي سيتم استخدامها.
  3. قراءة البيانات من ملف متسلسل
  4. إجراء تحويل البيانات أو التحقق من الأخطاء.
  5. تخزين البيانات في بنية الإدخال الدفعي،BDCDATA.
  6. قم بإنشاء جلسة إدخال دفعة لإدخال الدفعة الكلاسيكية، أو قم بمعالجة البيانات مباشرة باستخدام عبارة CALL TRANSACTION USING.

دفعة بنية بيانات الإدخال

إعلان بنية بيانات الإدخال الدفعي

DATA : BEGIN OF < bdc table>

OCCURS <occurs parameters>.

INCLUDE STRUCTURE BDCDATA.

DATA:END OF <bdc table>.
اسم الحقل النوع الطول الوصف
PROGRAM CHAR 8 تجمع وحدة
دينبرو NUMC 4 رقم دينبرو
دينبيجين CHAR 1 بدء تشغيل دينبرو
فنام CHAR 35 اسم الحقل
ففال CHAR 80 قيمة الحقل

ترتيب الحقول داخل البيانات لشاشة معينة ليس له أي أهمية

نقاط لملاحظة

  • عند إدخال بيانات BDC، تأكد من مراعاة إعدادات المستخدم. هذا الأمر بالغ الأهمية عند ملء الحقول التي تتضمن أرقامًا (مثل الكمية والمبلغ). إعدادات المستخدم هي التي تحدد نوع البيانات.ping رمز للأرقام مثال: يمكن كتابة الرقم خمسين ألفًا على النحو التالي 50,000.00 أو 50.000,00 بناءً على إعدادات المستخدم.
  • قم بتكثيف حقل FVAL لحقول المبلغ والكمية بحيث تتم محاذاتهم إلى اليسار.
  • لاحظ أنه يجب التعامل مع كافة الحقول التي تقوم بملءها من خلال BDC كحقول لنوع الحرف أثناء ملء جدول بيانات BDC.
  • في بعض الشاشات، عندما تقوم بملء القيم في عنصر تحكم جدول باستخدام BDC، يتعين عليك ملاحظة عدد الصفوف الموجودة بالحجم الافتراضي للشاشة والرمز لأكبر عدد من الصفوف. إذا كان عليك ملء المزيد من الصفوف، فيجب عليك كتابة التعليمات البرمجية لوظيفة "الصفحة لأسفل" كما تفعل عندما تقوم بملء عنصر تحكم الجدول يدويًا.
  • سيختلف عدد الأسطر التي ستظهر في السيناريو أعلاه بناءً على حجم الشاشة التي يستخدمها المستخدم. لذا قم دائمًا برمز حجم الشاشة القياسي واجعل BDC الخاص بك يعمل دائمًا بحجم الشاشة القياسي بغض النظر عما يحتفظ به المستخدم من حجم شاشته.

إنشاء جلسة إدخال دفعة

  1. افتح جلسة جلسة الإدخال المجمعة باستخدام الوحدة الوظيفية BDC_OPEN_GROUP.
  2. لكل معاملة في الجلسة:
  3. املأ BDCDATA بالقيم الخاصة بجميع الشاشات والحقول التي تمت معالجتها في المعاملة.
  4. انقل المعاملة إلى الجلسة باستخدام BDC_INSERT.
  5. أغلق جلسة الإدخال المجمعة مع BDC_CLOSE_GROUP

مثال: استخدام BDC لمعاملة المكالمة

يُظهر البرنامج أدناه طريقة استدعاء المعاملة من البداية إلى النهاية. يقوم البرنامج بإنشاء جدول BDCDATA لشاشتين من المعاملة، ويُشغّله في الوضع N (بدون عرض) مع جدول للأخطاء حتى يُمكن الإبلاغ عن حالات الفشل.

REPORT z_bdc_call_transaction.

DATA: lt_bdcdata TYPE STANDARD TABLE OF bdcdata,
      ls_bdcdata TYPE bdcdata,
      lt_messages TYPE STANDARD TABLE OF bdcmsgcoll.

* Helper that appends one BDCDATA line
FORM bdc_field USING p_fnam p_fval.
  CLEAR ls_bdcdata.
  ls_bdcdata-fnam = p_fnam.
  ls_bdcdata-fval = p_fval.
  APPEND ls_bdcdata TO lt_bdcdata.
ENDFORM.

* Screen 1: start the dynpro, then fill the fields
CLEAR ls_bdcdata.
ls_bdcdata-program  = 'SAPMV45A'.
ls_bdcdata-dynpro   = '0101'.
ls_bdcdata-dynbegin = 'X'.
APPEND ls_bdcdata TO lt_bdcdata.

PERFORM bdc_field USING 'VBAK-AUART' 'OR'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.

* Run the transaction: mode N = no display, update S = synchronous
CALL TRANSACTION 'VA01'
  USING         lt_bdcdata
  MODE          'N'
  UPDATE        'S'
  MESSAGES INTO lt_messages.

IF sy-subrc <> 0.
  * Read lt_messages to report the errors that occurred
ENDIF.

💡 نصيحة: يتحكم مُعامل الوضع (MODE) في طريقة العرض: يُظهر الخيار A جميع الشاشات، ويتوقف الخيار E فقط عند حدوث خطأ، بينما يعمل الخيار N بصمت. استخدم الخيار E أثناء الاختبار والخيار N عند تشغيل البرنامج في بيئة الإنتاج.

مسجل الإدخال دفعة

يسجل مسجل إدخال الدفعة (النظام > الخدمات > إدخال الدفعة > المسجل) المعاملات التي يتم إدخالها يدويًا وينشئ جلسة إدخال دفعية يمكن تنفيذها لاحقًا باستخدام SM35.

مسجل الإدخال دفعة

  • ابدأ تشغيل مسجل إدخال الدُفعات عن طريق تحديد زر الضغط للتسجيل من الشاشة الأولية لإدخال الدُفعات.
  • اسم التسجيل هو اسم محدد من قبل المستخدم ويمكن أن يتطابق مع اسم جلسة الإدخال المجمعة التي يمكن إنشاؤها من التسجيل.
  • إدخال SAP المعاملة والبدء في نشر المعاملة.
  • بعد الانتهاء من نشر أ SAP المعاملة، إما أن تختار الحصول على المعاملة وحفظها لإنهاء التسجيل أو المعاملة التالية وترحيل معاملة أخرى.
  • بمجرد حفظ التسجيل، يمكنك إنشاء جلسة إدخال دفعة من التسجيل و/أو إنشاء برنامج إدخال دفعة من التسجيل.
  • يمكن الآن تحليل جلسة الإدخال الدفعي التي قمت بإنشائها تمامًا مثل أي جلسة إدخال دفعي أخرى.
  • يعد البرنامج الذي تم إنشاؤه بواسطة وظيفة مسجل الإدخال الدفعي أداة قوية لمبرمج واجهة البيانات. إنه يوفر قاعدة صلبة يمكن بعد ذلك تغييرها وفقًا لمتطلبات العميل.

⚠️ تحذير: يسجل البرنامج تسلسل الشاشة بدقة كما حدث، لذا لا يتم تسجيل الشاشة التي تظهر فقط لبيانات معينة، مثل نافذة التنبيه عند عدم اكتمال العملية. اختبر البرنامج المُنشأ دائمًا ببيانات تُفعّل كل شاشة اختيارية.

الأسئلة الشائعة

يحمل BDC_OKCODE رمز الوظيفة الذي يُفعّله المستخدم باستخدام زر أو مفتاح، مثل /00 للضغط على Enter أو =SAVE للحفظ. ويُحدد هذا الرمز الإجراء الذي يجب تنفيذه على الشاشة بعد ملء الحقول.

SM35 هو جهاز مراقبة إدخال الدفعات. يقوم بإدراج الجلسات التي تم إنشاؤها بواسطة إدخال الدفعات الكلاسيكي، وتشغيلها في المقدمة أو الخلفية، وعرض سجل العملية بحيث يمكن تحليل المعاملات الفاشلة وإعادة معالجتها.

لا يزال BDC يُستخدم في حال عدم وجود BAPI، لأنه يعيد استخدام عمليات التحقق من صحة الشاشة الخاصة بالمعاملة. يجمع LSMW بين BDC والتسجيلات وBAPIs في أداة ترحيل واحدة، و BAPI يفضل استخدامه عندما يكون هناك واجهة برمجة تطبيقات مستقرة متاحة.

نعم. تقوم مساعدات الذكاء الاصطناعي في أدوات تطوير ABAP بأخذ تسجيل أو قائمة شاشة، ثم تقوم بإنشاء بيانات BDCDATA، وكتلة CALL TRANSACTION، ومعالجة الرسائل. يقوم المطور بربط ملف المصدر واختبار التحميل.

تقوم أدوات الذكاء الاصطناعي بتحليل الملف القديم، وتحديد الحقول الإلزامية المفقودة وحالات عدم تطابق التنسيق قبل التحميل، وتلخيص سجل إدخال الدفعة بعد ذلك حتى يمكن تصحيح السجلات الخاطئة وإعادة معالجتها بشكل أسرع.

تلخيص هذه التدوينة بـ: