تقارير ALV في SAP البرنامج التعليمي - عارض قائمة ABAP
⚡ ملخص ذكي
تقارير ALV في SAPتُتيح لك القوائم التي يُنتجها برنامج ABAP List Viewer إمكانية محاذاة الأعمدة، والفرز، والتصفية، والمجاميع الكلية والجزئية دون الحاجة إلى كتابة أكواد برمجية مخصصة. تشرح هذه الصفحة أنواع القوائم البسيطة، والقوائم الكتلية، والقوائم الهرمية، ووحدات وظائف REUSE الخاصة بها، بالإضافة إلى خيارات العرض المختلفة.

ما هو ALV؟ SAP ABAP؟
تتضمن الميزات الشائعة المطلوبة في أي تقرير "محاذاة الأعمدة"، والفرز، والتصفية، والمجاميع الفرعية، والمجاميع الكلية، وما إلى ذلك. يتطلب تنفيذ هذه الميزات من الصفر جهدًا برمجيًا كبيرًا. لتجنب ذلك، يمكننا استخدام مفهوم يُسمى عارض قوائم ABAP (ALV).
يقدم كل من هذه التقارير وحدات الوظيفة والتي تساعد في إنتاج المخرجات المطلوبة دون بذل الكثير من الجهد. دعونا ننظر إليها بالتفصيل -
يقدم نظام ALV الكلاسيكي ثلاثة أنواع من القوائم، ولكل منها مجموعة خاصة بها من وحدات وظائف REUSE:
- تقرير بسيط: جدول داخلي واحد معروض كقائمة أو شبكة.
- تقرير الحظر: تظهر عدة جداول داخلية واحدة تلو الأخرى ككتل منفصلة.
- تقرير هرمي: جدول رأس وجدول عناصر مرتبطين بمفتاح مشترك.
تقرير بسيط
وحدات وظيفية مهمة في هذه تقرير هم -
- Reuse_alv_fieldcatalog_merge
- إعادة استخدام_alv_list_display
- Reuse_alv_events_get
- إعادة استخدام_alv_grid_display
- إعادة استخدام_alv_commentary_write
REUSE_ALV_FIELDCATALOG_MERGE
يتم استخدام وحدة الوظيفة هذه لملء كتالوج الحقول وهو أمر ضروري لعرض البيانات في ALV.
إذا كانت بيانات الإخراج من جدول قاموس واحد وتم تحديد جميع الأعمدة، فلن نحتاج إلى إنشاء كتالوج الحقول حصريًا. يكفي ذكر اسم الجدول كمعلمة (I_structure_name) في REUSE_ALV_LIST_DISPLAY. لكن في حالات أخرى نحتاج إلى إنشائه.
ملاحظة: يمكن أيضًا ملء كتالوج الحقل يدويًا عن طريق ملء جميع التفاصيل المطلوبة في الجدول الداخلي
المعلمات الهامة في هي:
1- التصدير:
- I_program_name : معرف التقرير
- I_internal_tabname: جدول الإخراج الداخلي
- I_inclname : تضمين أو اسم التقرير حيث تتم معالجة كافة النماذج الديناميكية.
2. التغيير
- ct_fieldcat : ان طاولة داخلية بالنوع SLIS_T_FIELDCAT_ALV الذي تم الإعلان عنه في تجمع النوع SLIS.
REUSE_ALV_LIST_DISPLAY
هذه هي الوحدة الوظيفية التي تطبع البيانات.
المعلمات الهامة هي:
1- التصدير:
- I_callback_program: معرف التقرير
- I_bypassing_buffer : 'X'
- I_buffer_active : ' '
- I_callback_pf_status_set: روتين حيث يمكن للمستخدم تعيين حالة pf الخاصة به أو تغيير وظيفة حالة pf الموجودة.
- I_callback_user_command: روتين حيث يتم التعامل مع رموز الوظائف.
- I_structure name : اسم جدول القاموس
- Is_Layout: هيكل لتعيين تخطيط التقرير
- It_fieldcat: جدول داخلي يحتوي على قائمة بجميع الحقول وسماتها التي سيتم طباعتها (يمكن ملء هذا الجدول تلقائيًا بواسطة الوظيفة)
- It_events: جدول داخلي يحتوي على قائمة بجميع الأحداث المحتملة لـ ALV وأسماء النماذج المقابلة لها.
2. الجداول:
- أ. t_outtab: جدول داخلي بالبيانات المراد إخراجها
REUSE_ALV_EVENTS_GET
إرجاع جدول الأحداث المحتملة لنوع القائمة أأ
1. الاستيراد:
الأحداث_والأحداث :يتم إرجاع جدول الأحداث مع كافة أحداث رد الاتصال الممكنة لنوع القائمة المحدد (العمود 'NAME'). لتتم معالجة الأحداث بواسطة رد الاتصال، يجب ملء حقل "النموذج" الخاص بها. إذا تمت تهيئة الحقل، فسيتم تجاهل الحدث. يمكن قراءة الإدخال من جدول الأحداث، وملء الحقل "FORM" وتعديل الإدخال باستخدام الثوابت من تجمع النوع SLIS.
2- التصدير:
I_list_type: 0 = قائمة بسيطة REUSE_ALV_LIST_DISPLAY
1 = قائمة تسلسلية هرمية REUSE_ALV_HIERSEQ_LIST_DISPLAY
2 = قائمة الحظر البسيطة REUSE_ALV_BLOCK_LIST_APPEND
3 = قائمة الكتل الهرمية المتسلسلة REUSE_ALV_BLOCK_LIST_HS_APPEND
REUSE_ALV_GRID_DISPLAY
وظيفة جديدة من الإصدار ABAP4.6 لعرض النتائج في الشبكة بدلاً من المعاينة.
المعلمات: نفس reuse_alv_list_display
ملاحظة: لا يمكن للشبكة التعامل مع كميات كبيرة من البيانات. فوظائف مثل الفرز والتمرير لأسفل تستهلك الكثير من الموارد/الوقت إذا كان حجم البيانات المراد عرضها كبيرًا. لا يوجد تعريف واضح يحدد ما إذا كان حجم البيانات X هو الأنسب للقائمة أو الشبكة، بل على المطور اتخاذ القرار بناءً على خبرته. إذا لم يكن متأكدًا، فالقائمة هي الخيار الأفضل.
REUSE_ALV_COMMENTARY_WRITE
يُستخدم هذا في حدث أعلى الصفحة لطباعة العناوين والتعليقات الأخرى الخاصة بالقائمة.
معلمات مهمة
- It_list_commentary: جدول داخلي بالعناوين من النوع slis_t_listheader.
يحتوي هذا الجدول الداخلي على ثلاثة حقول:
- النوع: 'H' - الرأس، 'S' - التحديد، 'A' - الإجراء
- المفتاح: فقط عندما يكون النوع "S".
- المعلومات: النص المراد طباعته
مثال: تقرير شبكي بسيط بتقنية ALV
يحوّل البرنامج أدناه وحدات الوظائف المذكورة أعلاه إلى تقرير عملي. يقرأ البرنامج جدول مواعيد الرحلات SPFLI، وينشئ فهرس الحقول تلقائيًا، ويعرض النتيجة في جدول.
REPORT z_alv_demo. TYPE-POOLS: slis. DATA: lt_spfli TYPE STANDARD TABLE OF spfli, lt_fieldcat TYPE slis_t_fieldcat_alv, ls_layout TYPE slis_layout_alv. START-OF-SELECTION. * 1. Read the data into the output table SELECT * FROM spfli INTO TABLE lt_spfli. * 2. Build the field catalog from the dictionary structure CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING i_program_name = sy-repid i_internal_tabname = 'LT_SPFLI' i_structure_name = 'SPFLI' CHANGING ct_fieldcat = lt_fieldcat. * 3. Set the layout and display the grid ls_layout-zebra = 'X'. ls_layout-colwidth_optimize = 'X'. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = sy-repid is_layout = ls_layout it_fieldcat = lt_fieldcat i_save = 'A' TABLES t_outtab = lt_spfli.
تُؤدي ثلاثة معايير معظم العمل. يسمح I_STRUCTURE_NAME باستخلاص فهرس الحقول من القاموس، فلا حاجة لوصف أي عمود يدويًا. يُفعّل IS_LAYOUT عرض الصفوف المخططة وعرض الأعمدة الأمثل. يسمح I_SAVE = 'A' بحفظ كلٍ من خيارات العرض الخاصة بالمستخدم والخيارات القياسية من القائمة النهائية.
تقرير الحظر
يبدو هذا وكأنه تقرير بسيط، ولكن هذا التقرير يحتوي على ميزات الفرز والتصفية فقط. يُستخدم هذا التقرير إذا كان عليك عرض أكثر من تقرير واحد على المخرجات. من الناحية الفنية، إذا كان لديك عدة جداول داخلية تحتوي على بيانات لعرضها ككتل منفصلة، فإننا ننتقل إلى تقرير الكتل من ALV.
الوظائف الهامة المستخدمة لإنشاء هذا التقرير هي:
- REUSE_ALV_BLOCK_LIST_INIT
- REUSE_ALV_BLOCK_LIST_APPEND
- REUSE_ALV_BLOCK_LIST_DISPLAY
REUSE_ALV_BLOCK_LIST_INIT
يتم استخدام وحدة الوظيفة هذه لتعيين حالة واجهة المستخدم الرسومية الافتراضية وما إلى ذلك. تشبه المعلمات تلك المستخدمة في reuse_alv_list_display أو reuse_alv_grid_display
REUSE_ALV_BLOCK_LIST_APPEND
تضيف وحدة الوظيفة هذه البيانات إلى الكتلة.
معلمات مهمة
1.التصدير :
- is_layout: إعدادات التخطيط للكتلة
- it_fieldcat : كتالوج الحقول
- I_tabname : اسم الجدول الداخلي الذي يتضمن جميع الأحداث الممكنة
2.الجداول:
- t_outtab: جدول داخلي ببيانات الإخراج.
REUSE_ALV_BLOCK_LIST_DISPLAY
تعرض وحدة الوظيفة هذه القائمة بالبيانات الملحقة بالوظيفة أعلاه.
المعلمات: جميع المعلمات اختيارية.
التقارير الهرمية
يُستخدم العرض الهرمي لعرض البيانات المرتبطة ببعضها البعض، مثل تفاصيل طلب المبيعات والعناصر. هنا يمكن أن تكون تفاصيل طلب المبيعات هي بيانات الرأس بينما يمكن أن تكون العناصر في طلب المبيعات هي بيانات العنصر
الوحدة الوظيفية المستخدمة لهذا هي
REUSE_ALV_HIERSEQ_LIST_DISPLAY
يصدر:
- I_CALLBACK_PROGRAM
- I_CALLBACK_PF_STATUS_SET
- I_CALLBACK_USER_COMMAND
- IS_LAYOUT
- It_fieldcat
- it_events
- I_tabname_header : اسم الجدول الداخلي في البرنامج الذي يحتوي على بيانات الإخراج ذات أعلى مستوى هرمي.
- I_tabname_item : اسم الجدول الداخلي في البرنامج الذي يحتوي على بيانات الإخراج لأدنى مستوى هرمي.
- Is_keyinfo: تحتوي هذه البنية على أسماء حقول جدول الرأس والعناصر التي تربط الجدولين (المفتاح المشترك).
ترابيزات
- t_outtab_header: جدول الرأس الذي يحتوي على البيانات المراد إخراجها
- t_outtab_item : اسم الجدول الداخلي في البرنامج الذي يحتوي على بيانات الإخراج لأدنى مستوى هرمي.
يتم الإعلان عن جميع تعريفات الجداول والهياكل والثوابت الداخلية في تجمع نوع يسمى SLIS. يمكن ملء هذا الجدول الداخلي تلقائيًا باستخدام REUSE_ALV_FIELDCATALOG_MERGE'.
عرض المتغيرات
- يتم استخدام متغيرات العرض لتعيين الخصائص الافتراضية لمخرجات alv مثل معايير الفرز ومعايير التصفية والإجمالي والإجمالي الفرعي وما إلى ذلك
- يمكن أن تكون متغيرات العرض خاصة بالمستخدم وقياسية (يمكن لأي مستخدم استخدام المتغيرات القياسية)
- يتم التحكم في أنواع متغيرات العرض التي يمكن حفظها بواسطة المعامل i_save الذي يتم تمريره في وحدات الوظائف reuse_alv_list_display / reuse_alv_grid_display
- يمكنك توفير خيار على شاشة التحديد لتحديد متغير العرض الذي سيتم استخدامه
وحدات الوظائف الشائعة المتعلقة باختيار/التحقق من صحة متغيرات العرض هي
- Reuse_alv_variant_default_get
- إعادة استخدام_alv_variant_f4
- إعادة استخدام_alv_variant_existence
💡 نصيحة: مرر قيمة I_SAVE = 'U' للسماح بالخيارات الخاصة بالمستخدم فقط، و'X' للخيارات القياسية فقط، و'A' لكلا الخيارين. القيمة الفارغة تمنع الحفظ تمامًا.
هذا كل شيء ABAP - برمجة ALV!
