الوحدات النمطية في ABAP: وحدات الماكرو والإجراءات الفرعية والوحدات الوظيفية

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

الحاجة إلى الوحدات النمطية

  • تحسين هيكل البرنامج.
  • من السهل قراءة الكود
  • من السهل الحفاظ على الكود
  • تجنب التكرار و promoإعادة استخدام كود tes

تقنيات الوحدات المختلفة

  • استخدام وحدات الماكرو
  • استخدام ملفات التضمين
  • روتينات
  • وحدات الوظيفة

دعونا ننظر في كل واحد منهم بالتفصيل:

ساب-ABAP ماكرو

إذا كنت تريد إعادة استخدام نفس مجموعة العبارات أكثر من مرة في أحد البرامج، فيمكنك تضمينها في ماكرو.

يمكنك فقط استخدام ماكرو داخل البرنامج الذي تم تعريفه فيه، ولا يمكن استدعاؤه إلا في أسطر البرنامج التاليwing تعريفه.

يمكن أن تكون وحدات الماكرو مفيدة لإجراء العمليات الحسابية الطويلة أو complex اكتب البيانات.

بناء الجملة

DEFINE <macro_name>

'Macro Statements

END-OF-DEFINITION

يمكن لوحدات الماكرو استخدام المعلمات &N حيث ن = 1,2,3…

مثال:-

DATA: number1 TYPE I VALUE 1.

DEFINE increment.

ADD 1 to &1.

WRITE &1.

END-OF-DEFINITION.

Increment number1.

WRITE number1.

الإخراج: 2

تضمين البرامج

تضمين البرامج مخصص فقط لتكوين كود المصدر، ولا يحتوي على واجهة معلمات.

يتيح لك تضمين البرامج استخدام نفس الكود المصدري في برامج مختلفة. يمكن أن تكون مفيدة إذا كان لديك إعلانات بيانات مطولة تريد استخدامها في برامج مختلفة.

بناء الجملة

Include <include program Name>

نقاط لملاحظة

  • تضمين البرامج لا يمكن أن يطلق على نفسه.
  • تضمين البرامج يجب أن يحتوي على بيانات كاملة.

على سبيل المثال:

INCLUDE ZILX0004.

WRITE: / 'User', SY-UNAME,/ 'Date', SY-DATUM.

================================

PROGRAM ZRPM0001.

INCLUDE ZILX0004.

روتينات

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

بناء الجملة-

FORM <Subroutine> [<pass>].

<Statement block>.

ENDFORM.

= اسم الروتين الفرعي

= يتم تمرير المعلمات

أنواع الروتينات الفرعية

  1. داخلي
    • الروتين الفرعي المحدد في نفس البرنامج الذي يتم استدعاؤه.
    • يمكن الوصول إلى كافة كائنات البيانات المعلنة في برنامج ABAP/4 الرئيسي.
  2. خارجي
    • روتين فرعي محدد خارج البرنامج الذي يتم استدعاؤه.
    • بحاجة إلى استخدام الخيار أو الإعلان عن كائنات البيانات في الأجزاء الشائعة من الذاكرة.

استدعاء روتين فرعي

الروتينات الفرعية الداخلية

PERFORM <subroutine> [<pass>]

= اسم الروتين الفرعي

= يتم تمرير المعلمات

البيانات المعلنة في البرنامج الرئيسي متاحة تلقائيا.

الروتينات الفرعية الخارجية

PERFORM <subroutine>(<Program>) [<pass>].

PERFORM <subroutine> (<Program>) [<pass>] [IF FOUND].

PERFORM (<subroutine>) IN PROGRAM  (<Program>) [<pass>] [IF FOUND].

PERFORM <index> OF <subroutine1> <subroutine2> <subroutine3> [<pass>].

نقاط لملاحظة

  • يُسمح بالمكالمات المتداخلة في الإجراءات الفرعية (أي الأداء داخل نموذج ... ENDFORM ).
  • المكالمات العودية ممكنة أيضا.
  • لتعريف البيانات المحلية، استخدم عبارة DATA بعد FORM . في كل مرة تدخل فيها الروتين الفرعي، تتم إعادة إنشاء البيانات (بقيمة أولية) ويتم تحريرها في النهاية (من المكدس).
  • لتحديد البيانات العامة المستخدمة ضمن روتين فرعي، استخدم عبارة LOCAL بعد FORM . يتم حفظ القيم عند إدخال الروتين الفرعي ثم تحريرها في النهاية (من المكدس)

وحدات الوظيفة

وحدات الوظائف هي إجراءات ABAP/4 للأغراض العامة والتي يمكن لأي شخص استخدامها. في الواقع، هناك عدد كبير من وحدات الوظائف القياسية المتاحة.

يتم تنظيم الوحدات الوظيفية في مجموعات وظيفية: مجموعات من الوظائف المرتبطة منطقيًا. تنتمي الوحدة الوظيفية دائمًا إلى مجموعة الوظائف.

بناء الجملة-

FUNCTION <function module>

<Statements>

ENDFUNCTION.

معلومات مهمة مرتبطة بوحدة الوظيفة

  • الإدارة
  • معلمات الاستيراد/التغيير/التصدير.
  • معلمات/استثناءات الجدول.
  • الوثائق
  • كود المصدر – L U01 . هي مجموعة الوظائف
  • البيانات العالمية – ل أعلى البيانات العالمية لمجموعة الوظائف - يمكن الوصول إليها عبر الوحدات الوظيفية في المجموعة الوظيفية.
  • البرنامج الرئيسي – SAPL . يحتوي على قائمة بجميع ملفات التضمين لمجموعة الوظائف تلك

استدعاء وحدة الوظيفة

لاستدعاء وحدة دالة، استخدم عبارة CALL FUNCTION:

CALL FUNCTION <module>

[EXPORTING  f1 = a 1.... f n = a n]

[IMPORTING  f1 = a 1.... f n = a n]

[CHANGING   f1 = a 1.... f n = a n]

[TABLES     f1 = a 1.... f n = a n]

[EXCEPTIONS e1 = r 1.... e n = r n [ERROR_MESSAGE = r E]    

[OTHERS = ro]].

مجموعات الوظائف

مجموعات الوظائف عبارة عن حاويات للوحدات الوظيفية. في الواقع، هناك عدد كبير من مجموعات الوظائف القياسية.
يمكن لجميع الوحدات الوظيفية في مجموعة وظيفية الوصول إلى البيانات العامة للمجموعة.

مثل البرامج القابلة للتنفيذ (النوع 1) و حمامات الوحدة (النوع M)، يمكن أن تحتوي مجموعات الوظائف على شاشات وشاشات اختيار وقوائم.

نقاط لملاحظة

  • لا يمكن تنفيذ مجموعات الوظائف.
  • يمكن أن يصل طول اسم مجموعة الوظائف إلى 26 حرفًا.
  • عندما تقوم بإنشاء مجموعة وظيفية أو وحدة وظيفية، يتم إنشاء البرنامج الرئيسي والبرامج المضمنة تلقائيًا.
  • تقوم مجموعات الوظائف بتغليف البيانات.

كيفية إنشاء مجموعة وظيفية

  1. انتقل إلى المعاملة SE80.
  2. حدد البرنامج في القائمة المنسدلة.
  3. اكتب اسم مجموعة الوظائف التي تريد إنشاءها. بشكل عام، تبدأ مجموعات الوظائف التي يصنعها المستخدم بالحرف "Z". على سبيل المثال - . اضغط على مفتاح الإدخال.
  4. لاحظ أنه يتم إنشاء تضمين TOP بشكل افتراضي إذا قام المستخدم بالتحقق من خيار إنشاء تضمين TOP.

كيفية إنشاء وحدة وظيفية

  1. قم بإنشاء مجموعة وظيفية (قل "ZCAL").
  2. قم بإنشاء وحدة وظيفية، وقم بتعيين السمات مثل (مجموعة الوظائف، والتطبيق، والنص القصير، ونوع العملية) وحفظها.
  3. يتضمن الملف "LZCALU01" رمز مصدر لوحدة الوظيفة الأولى.
  4. تضمين الملف "LZCALTOP" سيحتوي على بيانات عالمية.
  5. يحتوي البرنامج الرئيسي "SAPLZCAL".
    • البيانات العالمية تتضمن ملف "LZCALTOP"
    • تتضمن وحدات الوظائف ملف "LZCALUXX"
    • يحددها المستخدم تضمين الملفات "LZCALF.." و"LZCALO.." و"LZCALI.."
  6. تحديد معلمات الواجهة والاستثناءات
  7. اكتب الكود المصدري
  8. تنشيط وحدة الوظائف
  9. اختبار الوحدة الوظيفية – اختبار فردي وتصحيح الأخطاء
  10. توثيق وإصدار وحدة وظيفية

هذا كل شيء بالنسبة للنمطية في ABAP.