# لغة ABAP في Maguyva: رسوم بيانية للفئات في شيفرة SAP المخصصة

Canonical source: https://maguyva.ai/ar/languages/abap

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

يدعم Maguyva لغة ABAP بشجرة AST والرموز والرسم البياني، ليتمكن وكلاء الذكاء الاصطناعي من رسم خرائط الفئات والواجهات وإعادة التعريف والاستثناءات في شيفرة SAP المخصصة.

## لمحة عن الدعم

- المستوى: دعم AST والرموز
- البرمجة
- الامتدادات: .abap
- تحليل AST حقيقي لبحث واعٍ بالصياغة النحوية وسياق بنيوي.
- تُغذّي الرموز المسمّاة البحث الدلالي والمراجع المتقاطعة. ويتوفر التنقل عبر الرسم البياني عند تمكين استخراج العلاقات.
- تُسهم هذه اللغة بالرموز والعلاقات في البحث المراعي لبنية الرسم البياني؛ وتختلف أنواع الحواف المدعومة بحسب التراكيب الأصلية في اللغة.
- يتوفر كل من تحليل AST واستخلاص الرموز.

## الأنسب لـ

- فرق SAP التي تحفظ شيفرة ABAP المخصصة في Git على شكل ملفات مصدرية `.abap` وتحتاج إلى فهمها قبل ترحيل أو مراجعة clean core.
- بيئات ABAP كائنية التوجه حيث تُخفي هرميات الفئات والواجهات وإعادة التعريف التنفيذَ الذي يعمل فعلًا.
- تحليلات الأثر بمساعدة الوكلاء، حيث يكون السؤال: «ما الذي سينكسر إذا تغيّرت هذه الفئة؟»

## سير عمل الوكلاء

- رسم خريطة الفئات التي ترث من فئة أساسية والأساليب التي تعيد تعريفها.
- العثور على جميع الفئات التي تنفّذ واجهة قبل تغيير توقيعات أساليبها.
- تتبّع موضع إطلاق فئة استثناء وموضع التقاطها.

## لماذا يستحق ABAP رسم خريطته قبل تغييره

تحمل شيفرة ABAP المخصصة في الغالب عقودًا من قواعد العمل. الشيفرة كائنية التوجه في مواضع وإجرائية في أخرى، وبنية الوراثة والواجهات هي التي تقرر أي أسلوب يُنفَّذ. وهذا لا يظهر حين تقرأ فئة واحدة في كل مرة.

يمنح Maguyva الوكيل الرسم البياني للفئات أولًا، فتبدأ خطة التغيير مما يعتمد على الفئة لا من التخمين.

## ما الذي يستخرجه Maguyva من ABAP

يحلّل Maguyva الشيفرة المصدرية `.abap` بقواعد نحوية مخصصة للغة ABAP. تشمل الرموز تعريفات الفئات وتنفيذاتها، والواجهات، وتصريحات الأساليب وتنفيذاتها، وإجراءات `FORM`.

يسجّل الرسم البياني العلاقات التي تهم مطوّري ABAP:

- الوراثة من `CLASS ... INHERITING FROM`.
- تنفيذ الواجهات من `INTERFACES`.
- التجاوزات من `METHODS ... REDEFINITION`.
- الاستثناءات من `RAISE EXCEPTION` و`CATCH`.
- استدعاءات الأساليب (`obj->m( )` و`cls=>m( )` و`CALL METHOD`)، ومراجع الأنواع من `TYPE` و`TYPE REF TO`، وتصدير أساليب القسم العام منسوبةً إلى فئتها.
- القراءات والكتابات وتدفق التحكم (`IF` و`CASE` و`LOOP` و`TRY`) داخل أجسام الأساليب.

## أمثلة على مطالبات الوكلاء

- "ما الفئات التي ترث من `zcl_order_base`، وما الأساليب التي تعيد تعريفها؟" (`find_symbol` ثم `dependency_search` في الاتجاه الوارد)
- "أين يُطلَق `zcx_pricing_error`، ومن يلتقطه؟" (`dependency_search`)
- "لخّص كيف ينتقل مسار إنشاء التسليم من التقرير إلى فئة الحفظ." (`get_task_context`)

## القيود المعروفة

- لا تحلّل قواعد ABAP الحالية عبارات Open SQL (`SELECT ... FROM ... INTO`) و`EXEC SQL` و`AUTHORITY-CHECK`، لذا فإن قراءات الجداول عبر SQL ليست حوافَّ في الرسم البياني بعد. استخدم `text_pattern_search` لأسماء الجداول.
- عبارات `INTERFACES` علاقات تنفيذ لا استيراد. في البحث البنيوي لا تُختار استيرادًا إلا عبارات `INCLUDE`.
- يفهرس Maguyva شيفرة ABAP الموجودة في مستودع Git على شكل ملفات `.abap`. ولا يتصل بنظام SAP.

## الخطوات التالية

اربط مستودعًا عبر [دليل البدء السريع](/ar/docs/quickstart)، ثم راجع مصفوفة الدعم في [صفحة التوافق](/ar/docs/compatibility). وللبيئات القديمة الأخرى، اطّلع على [دليل لغة COBOL](/ar/languages/cobol).

## تفاصيل المحرك

- يُحلَّل ABAP بقواعد نحوية مخصصة. الفئات والواجهات وتصريحات الأساليب وتنفيذاتها وإجراءات `FORM` كلها رموز.
- يسجّل الرسم البياني الوراثة عبر `INHERITING FROM`، والتنفيذ عبر `INTERFACES`، والتجاوزات عبر `REDEFINITION`، و`RAISE EXCEPTION` و`CATCH`، واستدعاءات مثل `obj->m( )` و`cls=>m( )`.
- لا تحلّل القواعد الحالية Open SQL و`EXEC SQL` و`AUTHORITY-CHECK`، لذا فإن قراءات الجداول عبر SQL ليست حوافَّ في الرسم البياني بعد.

## نقاط دخول مفيدة عبر MCP

- `find_symbol`: استخدمه مع اسم فئة أو واجهة أو أسلوب حين تحتاج إلى التعريف والمراجع.
- `dependency_search`: قبل أي تغيير، استخدم التتبّع في الاتجاه الوارد على فئة أساسية أو واجهة للعثور على الفئات الفرعية والتنفيذات والمستدعين.
- `text_pattern_search`: استخدمه لأسماء جداول قاعدة البيانات وعبارات SQL التي لا يغطيها الرسم البياني بعد.
