SAP شرح BAPI – كيفية إنشاء BAPI في ABAP
⚡ ملخص ذكي
BAPI في SAP لغة ABAP هي طريقة قياسية ومتوافقة مع بروتوكول RFC لإنشاء كائنات الأعمال، مما يسمح للتطبيقات الخارجية بالوصول إلى عمليات وبيانات نظام R/3. تشرح هذه الصفحة واجهات برمجة تطبيقات الأعمال (BAPIs) القياسية، وكيفية إنشاء واحدة في SWO1، واختبارها، وإصدارها، وكيفية استدعاء واجهة برمجة تطبيقات الأعمال من ABAP.

ما هو بابي؟
واجهة برمجة تطبيقات الأعمال (BAPI) هي واجهات (طرق) برمجة موحدة تمكن التطبيقات الخارجية من الوصول إلى العمليات التجارية والبيانات في نظام R/3.
هم توفير أساليب مستقرة وموحدة لتحقيق التكامل السلس بين نظام R/3 والتطبيقات الخارجية والأنظمة القديمة والوظائف الإضافية.
يتم تعريف BAPIs في BOR (مستودع كائنات الأعمال) كأساليب SAP أنواع كائنات الأعمال التي تؤدي وظائف أعمال محددة. يتم تنفيذها كـ وظيفة تمكين RFC الوحدات النمطية ويتم إنشاؤها في منشئ الوظائف الخاص بـ ABAP Workbench.
توفر بعض طرق وأساسيات BAPI وظائف أساسية ويمكن استخدامها في معظم الأحيان SAP كائنات الأعمال.وتسمى هذه BAPI القياسية.
قائمة BAPIs الموحدة:
- معالجات BAPI لقراءة البيانات – GetList() و GetDetail() و GetStatus() و ExistenceCheck()
- واجهات برمجة التطبيقات (BAPIs) لإنشاء البيانات أو تغييرها - Create() وChange() وDelete() وUndelete()،
- معالجات BAPI للمعالجة الجماعية -ChangeMultiple() وCreateMultiple() وDeleteMultiple().
مزايا BAPI
يُفضّل استخدام واجهة برمجة تطبيقات الأعمال (BAPI) على التقنيات القائمة على الشاشة لأنها واجهة موثقة ومعتمدة. SAP يحافظ على استقراره عبر الإصدارات. وهذا يوفر العديد من الفوائد العملية.
- واجهة مستقرة: لا يتغير توقيع BAPI الذي تم إصداره عند الترقية، لذلك يستمر البرنامج الذي يستدعيه في العمل.
- إعادة استخدام منطق الأعمال: يقوم برنامج BAPI بتشغيل نفس عمليات التحقق التي تقوم بها المعاملة، لذلك تظل البيانات المضافة من خلاله متسقة.
- تم تفعيل التحكم عن بعد: لأن BAPI عبارة عن وحدة وظائف تدعم RFC، يمكن استدعاؤها من مكان آخر SAP النظام ، أ Java أو برنامج .NET، أو خدمة ويب.
- لا يعتمد على الشاشة: على عكس تسجيل الإدخال المجمع، فإن BAPI لا يتعطل عند تغيير تخطيط الشاشة.
بعد توضيح المفهوم وفوائده، يقوم القسم التالي ببناء BAPI خطوة بخطوة.
كيفية إنشاء بابي
الخطوة 1) انتقل إلى المعاملة swo1 (الأدوات->Business Framework -> BAPI Development ->Business Object Builder). حدد كائن الأعمال، وفقًا للمتطلبات الوظيفية التي يتم إنشاء BAPI من أجلها.
الخطوة 2) افتح كائن الأعمال في وضع التغيير. ثم حدد الأدوات المساعدة -> أساليب API -> إضافة طريقة. ثم أدخل اسم وحدة الوظيفة وحدد متابعة.
الخطوة 3) في مربع الحوار التالي، يجب تحديد المعلومات التالية:
- الطريقة: اقتراح اسم مناسب للطريقة،
- النصوص: أدخل وصفًا لـ BAPI،
- أزرار الاختيار: الحوار، Synchronous، مستقل عن المثيل. عادةً ما يتم تنفيذ BAPI بشكل متزامن.
الخطوة 4) لإنشاء الطريقة، حدد "نعم" في مربع الحوار التالي.
الخطوة 5) بعد إنشاء البرنامج وتنفيذه، قم بفحص البرنامج بالطريقة التي تم إنشاؤها للتو. وهكذا، يتم إنشاء BAPI.
اختبار بابي
يمكنك اختبار BAPI عن طريق الاختبار الطريقة الفردية لكائن الأعمال في Business Object Builder. (أو يمكن للمرء استخدام المعاملة "SWUD" لاختبار الطريقة).
الافراج عن وتجميد BAPI
- لتحرير BAPI، قم أولاً بتحرير الوحدة النمطية للوظيفة (باستخدام المعاملة se37).
- قم بتعيين حالة الطريقة على "تم إصدارها" في Business Object Builder (باستخدام المعاملة SWo1 - تحرير-> تغيير الحالة-> تم إصدارها.)
يمكنك أيضًا استخدام BAPI Explorer (رمز المعاملة BAPI) لعرض 360 درجة على BAPI
كيفية استدعاء BAPI في ABAP
يتم استدعاء واجهة برمجة التطبيقات (BAPI) كما هو الحال مع أي وحدة وظائف تدعم بروتوكول RFC. القاعدة الأساسية هي أن واجهة برمجة التطبيقات لا تُصدر أمر COMMIT WORK خاص بها، لذا يجب على المُستدعي تأكيد التغيير باستخدام BAPI_TRANSACTION_COMMIT، أو تجاهله باستخدام BAPI_TRANSACTION_ROLLBACK. يُنشئ المثال أدناه طلب مبيعات باستخدام واجهة برمجة تطبيقات قياسية.
DATA: ls_header TYPE bapisdhd1, lt_items TYPE STANDARD TABLE OF bapisditm, lt_return TYPE STANDARD TABLE OF bapiret2, lv_order TYPE vbeln. * Fill the header and item structures, then call the BAPI CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2' EXPORTING order_header_in = ls_header IMPORTING salesdocument = lv_order TABLES order_items_in = lt_items return = lt_return. * A BAPI does not commit on its own - decide based on the return table READ TABLE lt_return WITH KEY type = 'E' TRANSPORTING NO FIELDS. IF sy-subrc = 0. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. ENDIF.
⚠️ تحذير: تحقق دائمًا من جدول الإرجاع بحثًا عن رسالة من النوع E أو A قبل إتمام العملية. يؤدي استدعاء BAPI_TRANSACTION_COMMIT بعد حدوث خطأ إلى حفظ مستند غير مكتمل، وهو أحد أكثر أخطاء BAPI شيوعًا.
BAPI مقابل BDC مقابل RFC
أ. BAPI، أ. BDC، و RFC عادي ينقل جميع البيانات إلى SAPلكنها تختلف في درجة استقرارها وفي المواد التي تعيد استخدامها. يقارن الجدول أدناه بينها.
| المعايير | BAPI | BDC | RFC (مخصص) |
|---|---|---|---|
| السطح البيني | طريقة مُحرَّرة لكائن أعمال | تسلسل شاشة المعاملة | أي وحدة وظائف مخصصة |
| استقرار التحديث | مضمونة لواجهات برمجة التطبيقات (BAPIs) المُصدرة | يتوقف البرنامج عند تغيير الشاشة | يعتمد ذلك على المطور |
| إمكانية التحكم عن بعد | نعم | لا | نعم |
| التحقق من صحة الأعمال | كامل، كما هو الحال في المعاملة | يعرض الشاشة كاملةً | ما يكتبه المطور فقط |
| أفضل ل | تكامل وواجهات مستقرة | التحميلات حيث لا يوجد BAPI | خدمات مخصصة من نقطة إلى نقطة |
القاعدة العامة هي استخدام BAPI المُصدر كلما كان موجودًا، والرجوع إلى BDC عندما لا يكون موجودًا، وحجز RFCs المخصصة للخدمات المصممة خصيصًا.





