الثلاثاء، 20 أكتوبر 2020

SAP ABAP - Populating Internal Tables ملء الجداول الداخلية في ساب

 SAP ABAP - Populating Internal Tables ملء الجداول الداخلية في ساب

SAP ABAP - Populating Internal Tables ملء الجداول الداخلية في ساب

SAP ABAP - Populating Internal Tables ملء الجداول الداخلية في ساب

في الجداول الداخلية ، يتضمن الملء ميزات مثل التحديد والإدراج والإلحاق. يركز هذا الفصل على عبارات INSERT و APPEND.

إدراج بيان

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

فيما يلي بناء الجملة لإضافة سطر واحد إلى جدول داخلي -

INSERT <work_area_itab> INTO <internal_tab> INDEX <index_num>.

في بناء الجملة هذا ، تُدرج جملة INSERT سطرًا جديدًا في الجدول الداخلي internal_tab. يمكن ادراج سطر جديد باستخدام تعبير work_area_itab INTO قبل المعامل internal_tab. عند استخدام تعبير INTO work_area_itab ، يتم أخذ السطر الجديد من مساحة عمل work_area_itab وإدراجها في جدول علامة التبويب الداخلية. ومع ذلك ، عندما لا يتم استخدام تعبير work_area_itab INTO لإدراج سطر ، يتم أخذ السطر من سطر العنوان لجدول Internal_tab.

عند إدراج سطر جديد في جدول داخلي باستخدام عبارة INDEX ، يتم زيادة رقم فهرس الأسطر بعد السطر المدرج بمقدار 1. إذا احتوى الجدول الداخلي على <index_num> - سطر واحد ، فسيتم إضافة السطر الجديد في نهاية الجدول. عندما يضيف نظام SAP بنجاح سطرًا إلى جدول داخلي ، يتم تعيين متغير SY-SUBRC على 0.

مثال

فيما يلي نموذج لبرنامج يستخدم عبارة insert.

REPORT  ZCUSLIST1. 
DATA: BEGIN OF itable1 OCCURS 4,
      F1 LIKE SY-INDEX,
      END OF itable1.
	
   DO 4 TIMES.
      itable1-F1 = sy-index.
      APPEND itable1.
   ENDDO.
	
itable1-F1 = -96.  
INSERT itable1 INDEX 2.  

LOOP AT itable1.
   Write / itable1-F1.  
ENDLOOP.  

LOOP AT itable1 Where F1  3.
   itable1-F1 = -78.
   INSERT itable1.
ENDLOOP.

Skip.
LOOP AT itable1.
   Write / itable1-F1.
ENDLOOP.

ينتج الكود أعلاه الإخراج التالي -

		1 
96- 
		2 
		3 
 4  
		1 
96- 
		2 
78- 
 3 
78- 
 4 

في المثال أعلاه ، تقوم حلقة DO بإلحاق 4 صفوف تحتوي على الأرقام من 1 إلى 4. تم تعيين قيمة -96 لمكون سطر الرأس itable1-F1. إدراج عبارة إدراج سطر العنوان كصف جديد في النص قبل الصف 3. يصبح الصف 3 الموجود هو الصف 4 بعد الإدراج. تسترد عبارة LOOP AT تلك الصفوف من الجدول الداخلي التي لها قيمة F1 أكبر من أو تساوي 3. قبل كل صف ، تُدرج عبارة Insert صفًا جديدًا من سطر العنوان الخاص به. قبل الإدراج ، تم تغيير مكون F1 ليحتوي على -78.

بعد تنفيذ كل عبارة insert ، يعيد النظام فهرسة جميع الصفوف الموجودة أسفل القائمة المدرجة. يؤدي هذا إلى ظهور الحمل عند إدراج صفوف بالقرب من أعلى جدول داخلي كبير. إذا كنت بحاجة إلى إدراج كتلة من الصفوف في جدول داخلي كبير ، فقم بإعداد جدول آخر به الصفوف المراد إدراجها واستخدم أسطر الإدراج بدلاً من ذلك.

عند إدراج صف جديد داخل itable1 داخل حلقة في itable1 ، فإنه لا يؤثر على الجدول الداخلي على الفور. في الواقع يصبح ساريًا عند تمرير الحلقة التالية. أثناء إدراج صف بعد الصف الحالي ، تتم إعادة فهرسة الجدول في ENDLOOP. تتم زيادة sy-tabix وتعالج الحلقة التالية الصف المشار إليه بواسطة sy-tabix. على سبيل المثال ، إذا كنت في مسار الحلقة الثانية وقمت بإدخال سجل قبل الصف 3. عند تنفيذ endloop ، يصبح الصف الجديد هو الصف 3 والصف القديم 3 يصبح الصف 4 وهكذا. تتم زيادة Sy-tabix بمقدار 1 ، وتعالج الحلقة التالية السجل المدرج حديثًا.

بيان الملحق

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

APPEND <record_for_itab> TO <internal_tab>.

في بناء الجملة هذا ، يمكن تمثيل التعبير <record_for_itab> بواسطة مساحة العمل <work_area_itab> ، والتي يمكن تحويلها إلى نوع سطر أو بواسطة عبارة INITIAL LINE. إذا كان المستخدم يستخدم منطقة عمل <work_area_itab> ، فإن نظام SAP يضيف سطرًا جديدًا إلى الجدول الداخلي <internal_tab> ويملأه بمحتوى منطقة العمل. تُلحق عبارة "الخط الأولي" سطرًا فارغًا يحتوي على القيمة الأولية لكل حقل في بنية الجدول. بعد كل عبارة APPEND ، يحتوي المتغير SY-TABIX على رقم الفهرس للسطر الملحق.

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

مثال

REPORT  ZCUSLIST1. 
DATA: BEGIN OF linv Occurs 0,
      Name(20) TYPE C,
      ID_Number TYPE I,
END OF linv. 

DATA table1 LIKE TABLE OF linv. 
linv-Name = 'Melissa'. 
linv-ID_Number = 105467. 
APPEND linv TO table1. 
LOOP AT table1 INTO linv. 

Write: / linv-name, linv-ID_Number. 
ENDLOOP.

ينتج الكود أعلاه الناتج التالي -

Melissa		105467 



التسميات: