SAP برمجة تقرير ABAP

⚡ ملخص ذكي

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

  • 📊 الغرض الأساسي: يقوم برنامج إعداد التقارير بقراءة البيانات من عدة جداول، ومعالجتها، وعرضها كقائمة يمكن تنسيقها أو تنزيلها أو إرسالها بالبريد.
  • 🧾 نوع البرنامج: كل تقرير عبارة عن برنامج قابل للتنفيذ من النوع 1، مرتبط بمجال تطبيق، ويتم تشغيله بالكامل بواسطة الأحداث.
  • 🏁 إضافات العنوان: لا يوجد عنوان صفحة قياسي، LINE-مقاس، LINEيجب تضمين كل من -COUNT و MESSAGE-ID في عبارة REPORT الأولى.
  • ⌨️ شاشة الاختيار: تقبل المعلمات قيمة واحدة، بينما تقبل خيارات التحديد نطاقًا أو مجموعة من القيم.
  • ⏱️ تسلسل الأحداث: يتم تشغيل LOAD-OF-PROGRAM و INITIALIZATION و AT SELECTION-SCREEN و START-OF-SELECTION و END-OF-SELECTION بترتيب ثابت.
  • 🖱️ القوائم التفاعلية: يقوم HIDE بتخزين قيم الحقول للصف المحدد، بينما يقوم HOTSPOT بتحويل حقل القائمة إلى عنصر قابل للنقر للقائمة الثانوية.
  • 🗄️ قواعد البيانات المنطقية: تم إنشاؤها في SE36، وهي تستبدل عبارات SELECT بحدث GET وتضيف عمليات التحقق من التفويض المركزي.

SAP برمجة تقرير ABAP

ما هي برمجة التقارير في لغة ABAP؟

SAPيدعم ABAP نوعين من البرامج: برامج التقارير وبرامج الحوار. تُستخدم برامج التقارير عند الحاجة إلى عرض كميات كبيرة من البيانات.

الغرض/استخدام برامج التقارير

  • تُستخدم هذه الأدوات عندما يتعين تحديد البيانات من عدد من الجداول ومعالجتها قبل عرضها.
  • يُستخدم عندما تتطلب التقارير تنسيقًا خاصًا
  • يُستخدم عند الحاجة إلى تنزيل التقرير من SAP إلى ورقة Excel ليتم توزيعها عبر.
  • يتم استخدامه عندما يتعين إرسال التقرير إلى شخص معين.

نقاط مهمة يجب ملاحظتها حول برنامج التقرير

  • برامج التقارير هي دائمًا برامج قابلة للتنفيذ. نوع البرنامج هو دائما 1.
  • يتوافق كل برنامج تقرير مع نوع تطبيق معين، أي إما مع المبيعات والتوزيع، أو FI - CO وما إلى ذلك. ويمكن أيضًا أن يكون تطبيقًا متقاطعًا، أي النوع "*".
  • برمجة التقارير هي برمجة تعتمد على الأحداث.
  • السطر الأول من برنامج التقرير هو دائمًا تقرير .
  • لمنع عنوان القائمة أو اسم البرنامج الإضافة لا يوجد عنوان قياسي للصفحة .
  • يمكن تعيين حجم السطر لتقرير معين باستخدام الإضافة حجم الخط .
  • يمكن تعيين عدد الأسطر لصفحة معينة باستخدام الإضافة عدد الأسطر n(n1). N هو عدد الأسطر للصفحة وN1 هو عدد الأسطر المحجوزة لتذييل الصفحة.
  • لعرض أي معلومات أو رسالة خطأ نقوم بإضافة فئة رسالة إلى البرنامج باستخدام الإضافة: معرف الرسالة . يتم الاحتفاظ بفئات الرسائل في SE91.

ولذلك فإن برنامج التقرير المثالي يجب أن يبدأ بما يلي:

Report <report name> no standard page heading

line-size <size>

line-count <n(n1)>

message-id <message class>.

برامج التقارير مقابل برامج الحوار

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

المعايير برنامج التقارير برامج الحوار
نوع البرنامج النوع 1، قابل للتنفيذ النوع M، مجموعة الوحدات النمطية
بدأ ب اسم البرنامج أو رمز المعاملة رمز المعاملة فقط
التحكم في التدفق أحداث مثل التهيئة وبدء التحديد منطق تدفق الشاشة مع وحدات PBO و PAI
إدخال المستخدم شاشة اختيار مُولّدة الشاشات المصممة في الشاشة Painter
الاستخدام النموذجي عرض وتنزيل كميات كبيرة من البيانات إنشاء وتغيير بيانات الأعمال

شاشة الاختيار هي المكان الذي يجمع فيه التقرير مدخلاته، لذلك سيتم وصفها لاحقًا.

شاشة التحديد

"شاشة الاختيار" هي الشاشة التي يتم من خلالها تحديد قيم الإدخال التي يجب تشغيل البرنامج بناءً عليها.

يتم إنشاء شاشة التحديد عادةً من

  1. المعاملات
  2. اشر على الخيارات

بناء الجملة

Selection-screen begin of screen <screen #>
selection-screen begin of block <#>  with frame title <text>
.........
.........
selection-screen end of block <#>
selection-screen end of screen <screen #>

المعاملات

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

بناء الجملة

تحديد المعلمات كنوع بيانات

Parameters p_id(30) type c.

تحديد المعلمات مثل حقل الجدول.

Parameter p_id like <table name>-<field name>.

يمكن أن تكون المعلمات عبارة عن مربعات اختيار وأزرار اختيار.

Parameters p_id as checkbox.Parameters p_id1 radiobutton group <group name>.
Parameters p_id2  radiobutton group <group name>.

يمكن أن تكون المعلمات عبارة عن قائمة مربعات.

Parameter p_id like <table name>-<field name> as listbox

الخيارات

يتم استخدام خيار التحديد لإدخال نطاق من القيم أو مجموعة من القيم إلى البرنامج

بناء الجملة

select-options s_vbeln for vbak-vbeln.

شاشة التحديد

تُظهر لقطة الشاشة حقول الإدخال المنخفضة والعالية التي يُنشئها خيار التحديد، بالإضافة إلى زر التحديد المتعدد.

يمكنك أيضًا تحديد خيار تحديد مثل المتغير

select-options s_vbeln for vbak-vbeln no intervals no-extension

بمجرد جمع المدخلات، يتفاعل البرنامج مع تسلسل ثابت من الأحداث.

الأحداث في برنامج تقرير ABAP

برامج تقرير ABAP هي برامج مدفوعة بالحدث. الأحداث المختلفة في برنامج التقرير هي:

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

  • يقوم بتشغيل الحدث المرتبط في جلسة داخلية بعد تحميل برنامج من النوع 1 أو M أو F أو S.
  • يقوم أيضًا بتشغيل كتلة المعالجة المرتبطة مرة واحدة فقط لكل برنامج وجلسة داخلية.
  • تحتوي كتلة المعالجة LOAD-OF-PROGRAM على نفس الوظيفة تقريبًا لـ برنامج ABAP من النوع 1 أو M أو F أو S كمنشئ للفئات الموجودة في كائنات ABAP

التهيئة.

  • يتم تنفيذ هذا الحدث قبل عرض شاشة التحديد.
  • تهيئة كافة القيم.
  • يمكنك تعيين قيم مختلفة بخلاف القيم الافتراضية على شاشة التحديد.
  • يمكنك ملء شاشة التحديد الخاصة بك ببعض القيم في وقت التشغيل.

في شاشة التحديد.

  • تتم معالجة الحدث عند معالجة شاشة التحديد (في نهاية PAI).
  • يتم التحقق من صحة والتحقق من القيم المدخلة هنا

بداية الاختيار.

  • هنا يبدأ البرنامج باختيار القيم من الجداول.

نهاية الاختيار.

  • بعد تحديد كافة البيانات، يقوم هذا الحدث بكتابة البيانات على الشاشة.

أحداث تفاعلية

  • تستخدم لإعداد التقارير التفاعلية. يتم استخدامه لإنشاء قائمة مفصلة من القائمة الأساسية.

💡 نصيحة: العبارات المكتوبة بدون أي كلمة مفتاحية للحدث تنتمي إلى START-OF-SELECTION بشكل افتراضي، وهذا هو السبب في أن التقرير لا يزال قيد التشغيل عندما يكون الحدث مفقودًا.

مثال: برنامج تقرير ABAP بسيط

يجمع البرنامج أدناه الإضافات وشاشة الاختيار والأحداث في تقرير واحد متكامل. ويقرأ البرنامج رؤوس أوامر البيع من VBAK للأرقام المُدخلة في شاشة الاختيار، ويكتبها كقائمة.

REPORT z_sales_order_list NO STANDARD PAGE HEADING
                          LINE-SIZE 80
                          LINE-COUNT 65(3)
                          MESSAGE-ID zsd.

TABLES: vbak.

DATA: lt_vbak TYPE STANDARD TABLE OF vbak,
      ls_vbak TYPE vbak.

* Selection screen
SELECT-OPTIONS: s_vbeln FOR vbak-vbeln.
PARAMETERS: p_erdat LIKE vbak-erdat.

INITIALIZATION.
  p_erdat = sy-datum.

AT SELECTION-SCREEN.
  IF p_erdat > sy-datum.
    MESSAGE e001(zsd).          " Date must not lie in the future
  ENDIF.

START-OF-SELECTION.
  SELECT * FROM vbak
    INTO TABLE lt_vbak
    WHERE vbeln IN s_vbeln
      AND erdat LE p_erdat.

END-OF-SELECTION.
  LOOP AT lt_vbak INTO ls_vbak.
    WRITE: / ls_vbak-vbeln, ls_vbak-erdat, ls_vbak-netwr.
    HIDE ls_vbak-vbeln.
  ENDLOOP.

ثلاثة تفاصيل جديرة بالملاحظة. تقوم عملية التهيئة (INITIALIZATION) بتعبئة مُعامل التاريخ قبل ظهور شاشة الاختيار. تقوم عملية التحقق من صحة الإدخال عند ظهور شاشة الاختيار (AT SELECTION-SCREEN) وتُصدر رسالة من الفئة ZSD. تقوم عملية الإخفاء (HIDE) بتخزين رقم ترتيب كل صف مُدخل، بحيث يُمكن إنشاء قائمة ثانوية منه بالنقر المزدوج، وهو موضوع القسم التالي.

تنسيق التقرير

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

بناء الجملة

Format Color n

Format Color n Intensified On

n قد تتوافق مع أرقام مختلفة

يرجى ملاحظة أن هناك إضافات أخرى إلى جانب التنسيق أيضًا

FORMAT COLOR OFF INTENSIFIED OFF INVERSE OFF HOTSPOT OFF INPUT OFF

برمجة التقارير التفاعلية

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

بعض الأوامر المستخدمة في البرمجة التفاعلية

نقطة ساخنة

إذا قمت بسحب الماوس فوق البيانات المعروضة في التقرير، يتغير شكل المؤشر إلى شكل يد بإصبع السبابة ممدود. يمكن تحقيق نقطة اتصال فعالة باستخدام عبارة FORMAT.

Syntax:      Format Hotspot On (Off).

إخفاء

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

Syntax:     Hide <field-name>.

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

قواعد البيانات المنطقية

  • بدلاً من استخدام استعلامات "تحديد"، يمكنك استخدام قاعدة البيانات المنطقية لاسترداد البيانات الخاصة بأحد البرامج.
  • يتم إنشاء قواعد البيانات المنطقية عن طريق المعاملة SE36
  • يمكن أن يصل طول اسم قاعدة البيانات المنطقية إلى 20 حرفًا. قد يبدأ ببادئة مساحة الاسم.
  • يتم تحديد البيانات بواسطة برنامج آخر ويمكن الوصول إلى البيانات باستخدام GET الأمر الذي يضع البيانات في منطقة العمل .

مزايا قاعدة البيانات المنطقية مقارنة باستعلامات التحديد العادية.

  1. فهو يوفر شروط فحص لمعرفة ما إذا كانت الإدخالات صحيحة وكاملة ومعقولة
  2. أنه يحتوي على عمليات التحقق من الترخيص المركزي للوصول إلى قاعدة البيانات
  3. تنطبق التحسينات مثل تحسين الأداء على الفور على جميع التقارير التي تستخدم قاعدة البيانات المنطقية.

ملاحظة: نظرًا للتعقيدات المتضمنة، لا يتم استخدام قواعد البيانات المنطقية في معظم الحالات

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

يُنشئ الأمر PARAMETERS حقل إدخال واحد يحتوي على قيمة واحدة. أما الأمر SELECT-OPTIONS فيُنشئ جدولاً داخلياً يحتوي على الحقول SIGN وOPTION وLOW وHIGH، مما يسمح بقبول النطاقات والاستثناءات والاختيارات المتعددة.

AT LINEيستجيب الأمر -SELECTION للنقر المزدوج أو مفتاح F2، بينما يستجيب الأمر AT USER-COMMAND لرمز وظيفة من القائمة. ويقوم كلا الأمرين بإنشاء القائمة الثانوية من القيم المخزنة بواسطة HIDE.

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

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

تُقدّم أدوات الذكاء الاصطناعي ملخصاتٍ لقوائم البيانات الطويلة، وتُبرز القيم الشاذة، وتُجيب عن الأسئلة المتعلقة بالبيانات بلغةٍ واضحة. ويعني دمج هذه التحليلات عادةً تحويل القائمة التقليدية إلى مخرجات تعتمد على ALV أو Fiori.

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