تقارير ALV في SAP البرنامج التعليمي - عارض قائمة ABAP

⚡ ملخص ذكي

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

  • 📋 الغرض الأساسي: يوفر برنامج ABAP List Viewer ميزات القائمة القياسية من خلال وحدات وظيفية جاهزة، لذلك لا يلزم برمجتها مرة أخرى.
  • 🗂️ فهرس ميداني: يقوم REUSE_ALV_FIELDCATALOG_MERGE بإنشاء الكتالوج الذي يصف كل عمود إخراج، ويمكن أيضًا ملؤه يدويًا.
  • 🖥️ القائمة والشبكة: تقوم الدالة REUSE_ALV_LIST_DISPLAY بطباعة قائمة كلاسيكية، بينما تقوم الدالة REUSE_ALV_GRID_DISPLAY بعرض نفس البيانات في عنصر تحكم شبكي.
  • 🧱 تقرير الحظر: تقوم وظائف INIT و APPEND و DISPLAY بدمج عدة جداول داخلية في مخرج واحد مكون من كتل منفصلة.
  • 🌳 التقرير الهرمي: يربط REUSE_ALV_HIERSEQ_LIST_DISPLAY جدول رأس وجدول عناصر من خلال المفتاح المشترك في IS_KEYINFO.
  • 🧰 نوع مجموعة SLIS: يتم تعريف كل بنية ونوع جدول وثابت يستخدمه ALV الكلاسيكي في مجموعة الأنواع SLIS.
  • 💾 خيارات العرض: يخزن أحد المتغيرات الإعدادات الافتراضية للفرز والتصفية والجمع، ويحدد المعامل I_SAVE ما إذا كان خاصًا بالمستخدم أو قياسيًا.

تقارير ALV في SAP ABAP

ما هو 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.

يحتوي هذا الجدول الداخلي على ثلاثة حقول:

  1. النوع: 'H' - الرأس، 'S' - التحديد، 'A' - الإجراء
  2. المفتاح: فقط عندما يكون النوع "S".
  3. المعلومات: النص المراد طباعته

مثال: تقرير شبكي بسيط بتقنية 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
  • يمكنك توفير خيار على شاشة التحديد لتحديد متغير العرض الذي سيتم استخدامه

وحدات الوظائف الشائعة المتعلقة باختيار/التحقق من صحة متغيرات العرض هي

  1. Reuse_alv_variant_default_get
  2. إعادة استخدام_alv_variant_f4
  3. إعادة استخدام_alv_variant_existence

💡 نصيحة: مرر قيمة I_SAVE = 'U' للسماح بالخيارات الخاصة بالمستخدم فقط، و'X' للخيارات القياسية فقط، و'A' لكلا الخيارين. القيمة الفارغة تمنع الحفظ تمامًا.

هذا كل شيء ABAP - برمجة ALV!

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

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

قم بتعيين DO_SUM في فهرس الحقول للعمود المراد إضافته، وقم بتمرير جدول فرز مع تفعيل SUBTOT للعمود الذي يقوم بتجميع الصفوف. لا حاجة إلى أي كود حسابي إضافي.

مرر اسم النموذج إلى I_CALLBACK_USER_COMMAND. يستقبل النموذج رمز الوظيفة والصف المحدد، بحيث يمكن للبرنامج قراءة السجل وفتح قائمة تفصيلية أو معاملة.

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

لا، لا يزال ALV هو الناتج القياسي لـ SAP تقارير واجهة المستخدم الرسومية. تضيف المساعدات المدعومة بالذكاء الاصطناعي قيمة إلى ذلك من خلال تلخيص قائمة طويلة، واكتشاف القيم الشاذة، والإجابة على الأسئلة المتعلقة بالبيانات المعروضة بلغة بسيطة.

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