البرنامج التعليمي للشاشات الفرعية لـ ABAP: استدعاء الشاشة الفرعية في SAP

⚡ ملخص ذكي

تُضمّن الشاشات الفرعية في لغة ABAP شاشةً داخل منطقةٍ من شاشةٍ أخرى أثناء التشغيل، مع منطق تدفقها. تشرح هذه الصفحة مناطق الشاشات الفرعية، وعبارة CALL SUBSCREEN في PBO وPAI، ونقل البيانات، والقيود التي تُسبب أخطاءً أثناء التشغيل.

  • 🪟 التعريف الأساسي: الشاشة الفرعية هي شاشة مستقلة يتم عرضها داخل منطقة محددة من الشاشة الرئيسية، وقد تشترك عدة شاشات فرعية في شاشة رئيسية واحدة.
  • 🧩 تضمين التشبيه: يتم إدخال منطق تدفق الشاشة المضمنة في منطق تدفق الشاشة الرئيسية، تمامًا كما يتم إدخال ملف تضمين في برنامج.
  • 🪜 ثلاث خطوات: حدد منطقة الشاشة الفرعية، ثم حدد شاشة الشاشة الفرعية، ثم قم بتضمين تلك الشاشة في المنطقة.
  • ⌨️ مكالمة مكتب الميزانية البرلمانية: اتصل بالشاشة الفرعية مشتمل يقوم بتعيين رقم شاشة مكون من أربعة أحرف للمنطقة وتشغيل منطق PBO الخاص بها.
  • ⌨️ مكالمة PAI: اتصل بالشاشة الفرعية يقوم نظام PAI بتشغيل منطق PAI الخاص بالشاشة المضمنة ونقل بيانات الحقول التي تحمل نفس الاسم.
  • 🚫 القيود: لا يجوز للشاشة الفرعية استخدام SET PF-STATUS أو SET TITLEBAR أو SET SCREEN أو LEAVE SCREEN أو OK_CODE الخاص بها أو AT EXIT-COMMAND.
  • 🌐 الحقول العالمية: الحقول المستخدمة بواسطة الشاشة الفرعية هي حقول عامة تم تعريفها في ملف TOP المضمن في البرنامج.

شاشات ABAP الفرعية

ما هي الشاشة الفرعية في SAP ABAP؟

قبل قراءة هذا الدليل، تأكد من أنك تعرف ما هو برامج الحوار هو.

  • الشاشة الفرعية هي شاشة مستقلة يتم عرضها في منطقة شاشة أخرى (شاشة رئيسية).
  • تسمح لك الشاشات الفرعية بتضمين شاشة واحدة داخل أخرى في وقت التشغيل. يمكنك تضمين شاشات فرعية متعددة على الشاشة الرئيسية.
  • ينطبق مصطلح الشاشة الفرعية على كل من الشاشة التي تقوم بتضمينها، والمنطقة الموجودة على الشاشة الرئيسية التي تضعها فيها. يدور هذا البرنامج التعليمي حول مناطق الشاشة الفرعية. تسمى الشاشات الفعلية التي تم إنشاؤها من خلال معاملة SE51، شاشات الشاشة الفرعية إذا تم تعريفها في سمات الشاشة.
  • عند استخدام شاشة فرعية، يتم أيضًا تضمين منطق التدفق الخاص بالشاشة المدمجة في منطق التدفق الخاص بالشاشة الرئيسية. ومن ثم، فإن استخدام الشاشات الفرعية على الشاشات يشبه استخدام التضمين في برامج ABAP.

لاستخدام شاشة فرعية، يجب عليك اتباع ثلاث خطوات بسيطة

  1. حدد منطقة (مناطق) الشاشة الفرعية على الشاشة
  2. تحديد شاشات الشاشة الفرعية المناسبة
  3. قم بتضمين شاشة الشاشة الفرعية في منطقة الشاشة الفرعية.

تحتاج أيضًا إلى ضبط إطار الشاشة الفرعية والشاشة الرئيسية. تحتاج إلى تسميته في حقل اسم الحقل.

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

اتصل بالشاشة الفرعية

مثال

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

استدعاء الشاشة الفرعية في SAP

تُظهر لقطة الشاشة الشاشة الرئيسية مع منطقتي الشاشة الفرعية المملوءتين بشاشتين فرعيتين منفصلتين.

يمكنك تضمين شاشة فرعية باستخدام عبارة CALL SUBSCREEN في منطق التدفق الخاص بالشاشة الرئيسية.

استدعاء الشاشة الفرعية في PBO

لتضمين شاشة فرعية في منطقة الشاشة الفرعية للشاشة الرئيسية واستدعاء منطق تدفق PBO الخاص بها، استخدم العبارة التالية في حدث PBO للشاشة الرئيسية:

PROCESS BEFORE OUTPUT.

CALL SUBSCREEN <area> INCLUDING [<prog>] <dynp>.

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

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

استدعاء الشاشة الفرعية في PAI

لاستدعاء منطق تدفق PAI للشاشة الفرعية، استخدم العبارة التالية في منطق تدفق PAI للشاشة الرئيسية:

PROCESS AFTER INPUT.

CALL SUBSCREEN <area>.

يتضمن هذا البيان منطق تدفق PAI لشاشة الشاشة الفرعية المضمنة في منطقة الشاشة الفرعية في حدث PBO. يمكن أن يستدعي هذا وحدات PAI لبرنامج ABAP الذي يتم فيه تعريف شاشة الشاشة الفرعية. يتم نقل البيانات بين الحقول ذات الأسماء المتطابقة في شاشة الشاشة الفرعية وبرنامج ABAP إما عند تشغيل حدث PAI، أو عند عبارات FIELD المقابلة في منطق تدفق PAI لشاشة الشاشة الفرعية.

كيفية إنشاء شاشة فرعية وتضمينها

يتم تنفيذ الخطوات الثلاث المذكورة سابقًا في الشاشة Painter وفي منطق تدفق الشاشة الرئيسية. التسلسل أدناه يُنشئ شاشة رئيسية واحدة مع منطقة شاشة فرعية واحدة.

  1. إنشاء منطقة الشاشة الفرعية: افتح الشاشة الرئيسية، على سبيل المثال الشاشة رقم 100، في الشاشة Painter (SE51). اختر الشاشة الفرعية اختر العنصر من شريط العناصر، وارسمه على التخطيط، ثم أدخل اسمًا مثل SUB_AREA في حقل الاسم. سيُستخدم هذا الاسم لاحقًا في عبارة CALL SUBSCREEN.
  2. إنشاء شاشة فرعية: أنشئ شاشة ثانية، على سبيل المثال الشاشة رقم 110، واضبط نوع الشاشة على الشاشة الفرعية في الخصائص. لا تحتوي الشاشة الفرعية على حقل رمز موافق ولا حالة واجهة مستخدم رسومية خاصة بها.
  3. ضع الحقول: ارسم حقول الإدخال على الشاشة 110. حافظ على التخطيط داخل حجم منطقة الشاشة الفرعية، لأنه يتم عرض الجزء الذي يناسب فقط، ويتم قياسه من الزاوية العلوية اليسرى.
  4. أعلن عن البيانات العالمية: ضع الحقول في ملف التضمين العلوي لمجموعة الوحدات النمطية، بحيث تقرأ كل من الشاشة الرئيسية والشاشة الفرعية نفس المتغيرات العامة.
  5. اتصل بالشاشة الفرعية: أضف CALL SUBSCREEN إلى PBO وإلى PAI للشاشة الرئيسية، كما هو موضح أدناه.
  6. قم بالتفعيل والاختبار: قم بتفعيل الشاشات والبرنامج، ثم ابدأ العملية. يتم ملء منطقة الشاشة الفرعية بواسطة الشاشة 110، وتعمل وحداتها ضمن منطق تدفق الشاشة 100.
* Flow logic of the main screen 100
PROCESS BEFORE OUTPUT.
  MODULE status_0100.
  CALL SUBSCREEN sub_area INCLUDING 'SAPMZDEMO' '0110'.

PROCESS AFTER INPUT.
  CALL SUBSCREEN sub_area.
  MODULE user_command_0100.

💡 نصيحة: قم بتخزين رقم الشاشة في متغير عام بدلاً من قيمة ثابتة عندما يتعين على المنطقة عرض شاشة فرعية مختلفة بناءً على إدخال المستخدم. يجب أن يحمل المتغير نفس الاسم في البرنامج وفي عبارة استدعاء الشاشة الفرعية (CALL SUBSCREEN).

نقطة لنتذكر

  • يجب أن تكون أسماء عناصر الشاشات الفرعية داخل الشاشة فريدة
  • يجب ألا يكون لديك OK_CODE أو FCODE مرفقًا بشاشة فرعية. OK_CODE للشاشة الرئيسية نفسها هو OK_CODE للشاشة الفرعية
  • لا يمكن أن تحتوي الشاشات الفرعية على أي وحدات حوار تحتوي على SET TITLBAR أو SET PF-STATUS أو SET SCREEN أو LEAVE SCREEN أو LEAVE TO SCREEN. سيؤدي هذا إلى حدوث خطأ في وقت التشغيل.
  • تحتاج إلى استدعائه في منطق التدفق (كل من PBO و PAI) للشاشة الرئيسية.
  • CALL SUBSCREEN غير مسموح به في عبارات CHAIN..ENDCHAIN ​​وLOOP ENDLOOP
  • لا يمكن أن يكون لديك وحدة AT EXIT-COMMAND
  • الحقول التي تستخدمها هي الحقول العمومية. يجب أن يتم الإعلان عنها في الأعلى وتشمل
  • في حالة استخدام شاشات فرعية من جهة أخرى برنامج الحوار لن يتم نقل البيانات إلا إذا قمت بإضافة رمز محدد.

⚠️ تحذير: يؤدي وضع CALL SUBSCREEN داخل CHAIN ​​… ENDCHAIN ​​أو داخل حلقة الشاشة إلى حدوث خطأ في بناء الجملة، كما أن استدعاء رقم شاشة غير موجود يؤدي إلى حدوث خطأ في وقت التشغيل عند العرض الأول.

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

شريط علامات التبويب هو حاوية تحتوي على صفحات علامات تبويب تُشكّل بدورها مناطق فرعية. تمثل الشاشة الفرعية المحتوى، ويقتصر دور شريط علامات التبويب على تحديد أي من هذه الشاشات الفرعية يكون مرئيًا للمستخدم حاليًا.

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

لا تُنقل البيانات إلا بين حقول الشاشة وحقول البرنامج التي تحمل أسماءً متطابقة ومُعرّفة على مستوى النظام. ولا تنقل الشاشة الفرعية المأخوذة من برنامج آخر أي بيانات إلا إذا تم تمرير القيم صراحةً بواسطة الكود.

نعم. تقوم مساعدات الذكاء الاصطناعي بقراءة التفريغ المختصر ومنطق التدفق، ثم تشير إلى الأسباب المعتادة، مثل رقم الشاشة المفقود، أو أمر SET PF-STATUS المحظور داخل الشاشة الفرعية، أو أمر CALL SUBSCREEN الموضوع داخل CHAIN.

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

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