SAP ABAP - Reading Internal Tables قراءة الجداول الداخلية في ساب
SAP ABAP - Reading Internal Tables قراءة الجداول الداخلية في ساب
SAP ABAP - Reading Internal Tables قراءة الجداول الداخلية في ساب
يمكننا قراءة أسطر الجدول باستخدام الصيغة التالية من عبارة READ TABLE -
READ TABLE <internal_table> FROM <work_area_itab>.
في بناء الجملة هذا ، يمثل تعبير <work_area_itab> منطقة عمل متوافقة مع نوع خط الجدول <internal_table>. يمكننا تحديد مفتاح بحث ، ولكن ليس مفتاح جدول ، في جملة القراءة باستخدام جملة WITH KEY ، كما هو موضح في بناء الجملة التالي -
READ TABLE <internal_table> WITH KEY = <internal_tab_field>.
هنا يتم استخدام سطر الجدول الداخلي بأكمله كمفتاح بحث . تتم مقارنة محتوى سطر الجدول بالكامل مع محتوى الحقل <internal_tab_field>. إذا كانت قيم الحقل <internal_tab_field> غير متوافقة مع نوع سطر الجدول ، يتم تحويل هذه القيم وفقًا لنوع سطر الجدول. يتيح لك مفتاح البحث العثور على إدخالات في الجداول الداخلية التي لا تحتوي على نوع سطر منظم ، أي حيث يكون السطر عبارة عن حقل فردي أو نوع جدول داخلي.
يتم استخدام بناء الجملة التالي من جملة القراءة لتحديد منطقة عمل أو رمز حقل باستخدام عبارة COMPARING -
READ TABLE <internal_table> <key> INTO <work_area_itab> [COMPARING <F1> <F2>...<Fn>].
عند استخدام عبارة COMPARING ، تتم مقارنة حقول الجدول المحددة <F1> ، <F2> .... <Fn> لنوع السطر المنظم مع الحقول المقابلة لمنطقة العمل قبل نقلها. إذا تم تحديد جملة ALL FIELDS ، فإن نظام SAP يقارن جميع المكونات. عندما يعثر نظام SAP على إدخال على أساس مفتاح ، يتم تعيين قيمة متغير SY-SUBRC إلى 0. بالإضافة إلى ذلك ، يتم تعيين قيمة متغير SY-SUBRC على 2 أو 4 إذا كان محتوى المقارنة الحقول ليست هي نفسها أو إذا لم يتمكن نظام SAP من العثور على إدخال. ومع ذلك ، يقوم نظام SAP بنسخ الإدخال إلى منطقة العمل المستهدفة كلما عثر على إدخال ، بغض النظر عن نتيجة المقارنة.
مثال
REPORT ZREAD_DEMO. */Creating an internal table DATA: BEGIN OF Record1, ColP TYPE I, ColQ TYPE I, END OF Record1. DATA mytable LIKE HASHED TABLE OF Record1 WITH UNIQUE KEY ColP. DO 6 Times. Record1-ColP = SY-INDEX. Record1-ColQ = SY-INDEX + 5. INSERT Record1 INTO TABLE mytable. ENDDO. Record1-ColP = 4. Record1-ColQ = 12. READ TABLE mytable FROM Record1 INTO Record1 COMPARING ColQ. WRITE: 'SY-SUBRC =', SY-SUBRC. SKIP. WRITE: / Record1-ColP, Record1-ColQ.
ينتج الكود أعلاه الناتج التالي -
SY-SUBRC = 2 4 9
في المثال أعلاه ، يعد mytable جدولًا داخليًا لنوع الجدول المجزأ ، مع Record1 كمنطقة العمل و ColP كمفتاح فريد. في البداية ، يتم ملء mytable بستة أسطر ، حيث يحتوي حقل ColP على قيم متغير SY-INDEX ويحتوي الحقل ColQ على قيم (SY-INDEX + 5).
يتم ملء منطقة عمل Record1 بـ 4 و 12 كقيم لحقول ColP و ColQ على التوالي. تقرأ عبارة READ سطر الجدول بعد مقارنة قيمة حقل مفتاح ColP بالقيمة الموجودة في منطقة عمل Record1 باستخدام جملة COMPARING ، ثم نسخ محتوى سطر القراءة في منطقة العمل. يتم عرض قيمة المتغير SY-SUBRC كـ 2 لأنه عندما تكون القيمة في حقل ColP هي 4 ، فإن القيمة في ColQ ليست 12 ، ولكن 9.
التسميات: SAP ABAP Advanced Business Application Programming (برمجة تطبيقات الأعمال المتقدمة) ساب
<< الصفحة الرئيسية